我有一个wix软件包,它说有4个MSI - 全部版本为1.0.0,Bundle版本为1.0.0。我在Windows机器上安装它,在ARP中我看到WiX软件包为1.0.0。
现在我只对其中一个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>
这就是我在个人MSI的wx中所拥有的。我只为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。如果事情不清楚,请告诉我,并提前感谢您的帮助。
答案 0 :(得分:1)
majorUpgrade Element的一部分有一个AllowSameVersionUpgrades属性,默认值为no。
含义&#34;当设置为no(默认值)时,MSI允许安装具有相同版本和升级代码(但产品代码不同)的产品,并将其视为两个产品。设置为yes时,WiX会设置msidbUpgradeAttributesVersionMaxInclusive属性,该属性告诉MSI将产品视为与主要升级版本相同的版本。&#34;
检查此属性,看看它是否有助于解决您的问题。 最佳做法是将版本更改为所有msis和捆绑包,这将自动完成发布产品的CI / CD管道的一部分。
答案 1 :(得分:1)
如果已经安装了Burn,则不会安装它。但是,如果使用Product/@Id="*"
重建包,则包标识已更改(包括产品代码和包代码)。所以Burn会安装看起来像新包装的东西。如果您希望Burn跳过这样的包,请不要重建它。