wix bundle只安装改了msi

时间:2017-02-13 13:47:28

标签: wix installer upgrade major-upgrade

我有一个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。如果事情不清楚,请告诉我,并提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

majorUpgrade Element的一部分有一个AllowSameVersionUpgrades属性,默认值为no。

含义&#34;当设置为no(默认值)时,MSI允许安装具有相同版本和升级代码(但产品代码不同)的产品,并将其视为两个产品。设置为yes时,WiX会设置msidbUpgradeAttributesVersionMaxInclusive属性,该属性告诉MSI将产品视为与主要升级版本相同的版本。&#34;

检查此属性,看看它是否有助于解决您的问题。 最佳做法是将版本更改为所有msis和捆绑包,这将自动完成发布产品的CI / CD管道的一部分。

答案 1 :(得分:1)

如果已经安装了Burn,则不会安装它。但是,如果使用Product/@Id="*"重建包,则包标识已更改(包括产品代码和包代码)。所以Burn会安装看起来像新包装的东西。如果您希望Burn跳过这样的包,请不要重建它。