簡體   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