如何让一个补丁针对具有不同产品代码的多个 MSI?

How to have one patch target multiple MSIs with different product codes?

我有一个产品的 64 位和 32 位 MSI 版本。为了将这些版本视为独立的产品,例如,64 位补丁不会意外地应用到 32 位版本的 MSI 上,反之亦然,我为它们分配了不同的产品代码。但是,我也希望能够有一个适用于 32 位和 64 位的补丁 - 因为我只打补丁 dll 和偶尔的 exe。

我目前正在使用 InstallShield 构建未压缩的 MSI,但是使用 WiX 进行修补 PatchCreation。我尝试使用

<TargetProductCode Id="*"/>

但这并没有改变我的行为。目前,我得到 the upgrade patch cannot be installed..the program to be upgraded may be missing.. 这是有道理的。

解决此问题的最佳做法是什么?我是否应该让两个 32 位和 64 位版本的产品代码相同?

32 位 MSP 只能修补 32 位 MSI。 64位也一样。是的,我会为两个安装程序设置不同的 UpgradeCode 和 ProductCodes。如果您希望补丁看起来像 1 个补丁,您可以将其包装在 Burn 引导程序中。用户将 运行 EXE 并应用正确的补丁。