我有一个wix捆绑包,有4个MSI - 所有版本都是1.0.0,捆绑版本是1.0.0。我将它安装在Windows机器上,在ARP中,我将WiX捆绑包看作1.0.0。wix捆绑只安装更改msi
现在我仅对其中一个MSI进行一些更改(如B),并将Bundle版本更改为1.1.0,将更改后的MSI(B)版本更改为1.1.0。其余的MSI(A,C,D)仍然在1.0.0。
现在,当我再次运行该软件包时,我预计A,C和D的安装将被跳过,只有B将被升级,并且该软件包也将在ARP中的版本1.1.0中进行更新。但我观察到的是所有包装(A,B,C,D)的安装发生,而不仅仅是B.
那么我的期望错了还是我做错了什么?
这是我在我的包代码
<Chain>
<MsiPackage Id=“A"
Cache="no”
Vital=“yes"
EnableFeatureSelection="no"
Permanent="no" Visible="no"
ForcePerMachine=“yes”
SourceFile = “<>”/>
<MsiPackage Id=“B"
Cache="no”
Vital=“yes"
EnableFeatureSelection="no"
Permanent="no" Visible="no"
ForcePerMachine=“yes”
SourceFile = “<>”/>
</Chain>
而这就是我在我的WXS对个人的MSI。我仅将MSI B的版本更改为1.1.0,并保持UpgradeCode相同。
<Product Id="*" UpgradeCode="<GUID which is same across installations>"
Version="1.0.0" />
<MajorUpgrade DowngradeErrorMessage="New version is present."
我抬头看了很多线程,但通常他们会谈论升级所有MSI,而不是1 MSI。如果有事情不清楚,请告知我,并提前感谢您的帮助。
另外要注意的是,如果您尚未使用该工具,则可以使用Microsoft的Orca.exe检查您的MSI。 –
或instedit,即具有比较MSI功能。 –
感谢评论@ArkadySitnitsky和BrianSutherland。我尝试将AllowSameVersionUpgrades设置为yes和no,但在两种情况下都安装了所有MSI。我想要的是安装程序在版本相同的情况下跳过这些模块,并且只在版本较大但未发生时才安装。 – randomuser15995183