首页 文章

wix bundle只安装改了msi

提问于
浏览
0

我有一个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 回答

  • 1

    Burn赢了't install a package if it'已安装 . 但是,如果使用 Product/@Id="*" 重建包,则会更改包标识(产品代码和包代码) . 所以Burn会安装看起来像新包装的东西 . 如果您希望Burn跳过此类包,请不要重建它 .

  • 1

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

    含义“当设置为no(默认值)时,MSI允许安装具有相同版本和升级代码(但产品代码不同)的产品,并将其视为两个产品 . 当设置为yes时,WiX设置msidbUpgradeAttributesVersionMaxInclusive属性,告诉它MSI用于处理与主要升级版本相同的产品 . “

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

相关问题