【问题标题】:Alternative to WiX PatchWiX补丁的替代品
【发布时间】:2017-11-27 15:41:44
【问题描述】:

我有一个 MSI,它添加一个注册表项、安装和启动一些服务、安装一个文件等等。现在,需要更新一个文件并添加一个新文件。我知道我们可以通过创建差异/转换来创建补丁。但在我的第二个 MSI 中,我只想包含这 2 个文件(更新的文件和新的文件)而不是其他文件,可能像 HotFix。我不想创建补丁。我确实尝试创建一个单独的 MSI,但具有相同的 UpgradeCode 但具有不同的产品 ID 和不同的版本。但这会在程序和功能中创建一个新条目。此外,在卸载此新 MSI 时,它会回滚新文件,但不会回滚修改后的文件(此文件最初由第一个 MSI 创建并由第二个修改)。至少如果它能够在卸载过程中回滚和恢复状态,那就太好了。但它没有正确回滚修改后的文件。有人遇到过这种情况吗?如果是这样,您是否能够在没有补丁的情况下找到解决方案?请帮忙。

【问题讨论】:

  • 您避免使用 Patch 的 原因 是什么,因为正如您自己所说的那样,它似乎是一个理想的用例。如果存在某些技术限制,了解它们是什么将有助于避免其他同样不合适的建议。
  • 我的客户想要这样,这是有原因的。该补丁可能包含他不感兴趣的其他更改。
  • ...然后创建一个只包含客户想要的更改的补丁。
  • “我的客户想要这样,这是有原因的。补丁可能包含他不感兴趣的其他更改。”这是一个特定的补丁。补丁通常很小。补丁的开发者最终对它的变化有最终决定权。换句话说,这听起来像是一个信任问题。

标签: wix windows-installer upgrade patch


【解决方案1】:

可以通过三种方式更新已安装的产品:补丁、主要升级和次要升级。尽管您可以创建一个新的 MSI 来替换现有产品中的某些文件,但您实际上所做的是以与 Microsoft Dll(例如)在许多不同产品之间共享相同的方式共享它们。 (除非您使用相同的组件 ID 并正确共享,否则您更有可能破坏产品而不是更新它。)这就是您看到保留文件的行为的原因。

补丁可能包含“包含他不感兴趣的其他更改”的想法应该不是问题。您创建补丁,使其仅包含这些更改。只有在创建补丁时将它们放入 MSI 文件中,它才会包含其他更改。

在修补期间添加文件可能会很棘手,因为涉及到一些规则。 最安全的做法是在添加新文件时进行重大升级。

所以选择是:

  1. 仅包含所需更新的补丁。

  2. 主要升级,即升级产品的全新 MSI 文件。

  3. 次要更新,同样是完整的新 MSI 文件,具有相同的 ProductCode,版本增加,只有较小的修补程序更改,使用包含 REINSTALL=ALL REINSTALLMODE=vomus 的特殊命令行安装

    李>

只有补丁才能包含所需的更改。

【讨论】:

  • 非常感谢您的详细回复,菲尔。但是为了创建补丁,我们需要转换/差异。那么,假设我原来的 MSI 有 100 个文件,而新的 MSI 只有 3 个文件,那么当我进行转换时,剩余的 97 个文件是否也会进入转换并因此成为补丁的一部分?请帮我理解。
  • 您构建了一个与原始文件相同的 MSI,其中包含所有文件、相同的 ProductCode、增加的版本和少数更新的文件。补丁是两个 MSI 文件的区别。
猜你喜欢
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多