繁体   English   中英

wix捆绑包仅安装已更改的msi

[英]wix bundle only install changed msi

我有一个wix捆绑软件,其中包含4个MSI-所有版本均为1.0.0,捆绑软件版本为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>

这就是我在wx中为各个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。 让我知道是否有不清楚的地方,并在此先感谢您的帮助。

majorUpgrade元素的一部分包含一个AllowSameVersionUpgrades属性,默认值为no。

意思是“当设置为否(默认值)时,允许安装具有相同版本和升级代码(但产品代码不同)的产品,并且被MSI视为两个产品。当设置为是时,WiX设置msidbUpgradeAttributesVersionMaxInclusive属性,该属性指示MSI会将具有相同版本的产品视为主要升级。”

检查此属性,看看是否对您的问题有所帮助。 最佳实践是将版本更改为所有msis和捆绑软件,这是在发布产品的CI / CD管道中自动完成的一部分。

如果已安装,则Burn将不会安装软件包。 但是,如果您使用Product/@Id="*"重建软件包,则软件包标识将更改(产品代码和软件包代码)。 因此,Burn将安装看起来像新软件包的软件包。 如果您希望Burn跳过这样的软件包,请不要重新构建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM