簡體   English   中英

從項目中刪除合並模塊時,無法運行WiX專業升級

[英]WiX major upgrade doesn't run when I remove a merge module from the project

我有一個WiX項目,其中包括使用單獨的合並模塊為x86安裝Visual C ++ 2008運行時組件。

不幸的是,MSI v4.5的.msm存在一個眾所周知的問題。 更具體地說,.msm自定義操作SxSUninstallCA在卸載時需要20分鍾才能完成。

因此,長話短說,我決定從該產品的新版本中刪除.msm,並通過.exe文件靜默安裝VC ++組件。

如果僅更改此內容(當然也更改ProductCode),則安裝程序不會檢測到計算機上已安裝的產品並執行正常安裝,而無需先卸載較舊的版本。

有什么想法嗎? MSI是否應該檢查UpgradeCode和ProductCode以檢測產品是否是系統上已安裝的另一產品的升級?

檢查兩個安裝程序中的ALLUSERS屬性是否設置相同。 我在合並模塊上遇到了同樣的問題,並且解決了它。

如果您希望新的MSI升級舊的MSI(並且由於要刪除組件而需要使用“主要升級”),是的,您需要使用UpgradeCode和Upgrade元素(或在WiX v3.5中,可以使用新的MajorUpgrade元素)。

如果您提供有關.wxs文件中內容的更多詳細信息,我可以更具體一些。

該項目設置為使用UpgradeCode和ProductCode已經檢測到升級。 例如:我用以下命令構建一個.msi:

ProductCode="05406C5C-8D66-4779-AECA-A93B18729ED5"  
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
PackageCode="*"  
Version="1.1.1"  

該.msi包含要安裝的文件和文件夾,以及Microsoft_VC90_CRT_x86.msm合並模塊。

然后用以下參數構建另一個.msi

ProductCode="7F626A0C-5E69-496D-999E-8E2B14C01FE6"  
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
PackageCode="*"   
Version="1.1.2"  

相同的文件,仍然包含合並模塊:它可以工作,應用程序得到更新(卸載先前版本,安裝新版本)。 當我評論對Microsoft_VC90_CRT_x86.msm的每個引用時,內置安裝程序不會檢測到該應用程序的先前版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM