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

时间:2021-10-19 15:16:22

I have 64-bit and 32-bit MSI releases of a product. In order for these releases to be treated as independent products so that for example, a 64-bit patch is not accidentally applied over 32-bit release MSI, and vice-versa, I assigned them different product codes. However, I would also like to be able to have one single patch applicable to both 32-bit and 64-bit - since all I patch is dlls and occasional exe.

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

I am currently building my uncompressed MSIs with InstallShield, however patching using WiX PatchCreation. I tried using

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

<TargetProductCode Id="*"/>

however that has not changed my behavior. Currently, I get the upgrade patch cannot be installed..the program to be upgraded may be missing.. which makes sense.

然而这并没有改变我的行为。目前,我得到的升级补丁无法安装..要升级的程序可能会丢失..这是有道理的。

What is the best practice to solve this problem? Should I just make the product codes the same between the two 32-bit and 64-bit releases?

解决这个问题的最佳做法是什么?我应该只在两个32位和64位版本之间使产品代码相同吗?

1 个解决方案

#1


1  

A 32bit MSP can only patch a 32bit MSI. Same for 64bit. Yes, I would have different UpgradeCode and ProductCodes for the two installers. If you want the patch to seem like 1 patch you can wrap it in a Burn bootstrapper. The user will run the EXE and the correct patch will be applied.

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

#1


1  

A 32bit MSP can only patch a 32bit MSI. Same for 64bit. Yes, I would have different UpgradeCode and ProductCodes for the two installers. If you want the patch to seem like 1 patch you can wrap it in a Burn bootstrapper. The user will run the EXE and the correct patch will be applied.

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