[英]Wix 32-bit and 64-bit MSIs not uninstalling each other
我們目前提供32位.NET應用程序。 我們的下一個版本使用相同的WIX項目文件,使用SO上的標准技巧,構建了64位和32位MSI。
如果我將v1(32位)升級到v2(64位),則Wix將卸載舊版本(從Program Files(x86))並將v2放入Program Files。 正是我想要的。
如果隨后我嘗試安裝32位版本的v2,它將與32位版本的v2一起安裝32位版本,並且兩者都位於各自的“程序文件”和“程序文件(x86)”文件夾中。
如果然后我重新運行v2的64位MSI,它將正確卸載32位版本並僅安裝64位版本。
我的產品代碼是動態生成的,並且兩個MSI都具有相同的UpgradeCode
。
<Product Id="*" Name="Awesome Product" Language="1033" Version="$(var.Version)"
Manufacturer="Company, Inc." UpgradeCode="C7F99857-9999-4D36-AAA2-34B1D364BE19">
日志文件看起來沒有什么不同,但是我在64到32位版本中看到的內容,這是無法按預期工作並且不會卸載64位軟件的版本:
屬性更改:修改ProgramFiles64Folder屬性。 當前值為“ C:\\ Program Files \\”。 它的新值是:“ c:\\ Program Files(x86)\\”。
在消息后的某個時間發生這種情況:
行動:刪除現有產品
所以我想知道是否以某種方式更新了將用於卸載軟件包的路徑,因此實際上並未刪除任何內容?
我感覺自己已經搜索並閱讀了每個相關的網頁,博客文章和郵件列表消息,但是我願意接受任何建議和參考。
編輯:我檢查了FindRelatedProducts的32-> 64位升級日志。 在該文件中,我看到:
Action start 14:53:55: INSTALL.
MSI (c) (24:B4) [14:53:55:392]: UI Sequence table 'InstallUISequence' is present and populated.
MSI (c) (24:B4) [14:53:55:392]: Running UISequence
MSI (c) (24:B4) [14:53:55:392]: PROPERTY CHANGE: Adding EXECUTEACTION property. Its value is 'INSTALL'.
MSI (c) (24:B4) [14:53:55:392]: Doing action: FindRelatedProducts
MSI (c) (24:B4) [14:53:55:392]: Note: 1: 2205 2: 3: ActionText
Action 14:53:55: FindRelatedProducts. Searching for related applications
Action start 14:53:55: FindRelatedProducts.
FindRelatedProducts: Found application: {85A5CC9D-3C1C-403D-B539-CA95B77B49ED}
MSI (c) (24:B4) [14:53:55:392]: PROPERTY CHANGE: Adding OLDPRODUCTFOUND property. Its value is '{85A5CC9D-3C1C-403D-B539-CA95B77B49ED}'.
Action ended 14:53:55: FindRelatedProducts. Return value 1.
然后,當我在64位版本之上安裝32位版本時:
Action 15:02:37: INSTALL.
Action start 15:02:37: INSTALL.
MSI (c) (EC:7C) [15:02:37:421]: UI Sequence table 'InstallUISequence' is present and populated.
MSI (c) (EC:7C) [15:02:37:421]: Running UISequence
MSI (c) (EC:7C) [15:02:37:421]: PROPERTY CHANGE: Adding EXECUTEACTION property. Its value is 'INSTALL'.
MSI (c) (EC:7C) [15:02:37:421]: Doing action: FindRelatedProducts
MSI (c) (EC:7C) [15:02:37:421]: Note: 1: 2205 2: 3: ActionText
Action 15:02:37: FindRelatedProducts. Searching for related applications
Action start 15:02:37: FindRelatedProducts.
FindRelatedProducts: Found application: {3AF0BDBB-6F3B-4A2C-B8EC-42FB970A7C44}
MSI (c) (EC:7C) [15:02:37:422]: PROPERTY CHANGE: Adding OLDPRODUCTFOUND property. Its value is '{3AF0BDBB-6F3B-4A2C-B8EC-42FB970A7C44}'.
Action ended 15:02:37: FindRelatedProducts. Return value 1.
FindRelatedProducts可能會找到一些東西,但這並不意味着它將進行升級。 日志的其余部分將顯示此信息,但是如果您在x86設置的升級元素中將OnlyDetect設置為Yes,則它將不會升級,僅是一個可能出問題的示例。 或者您沒有RemoveExistingProducts動作或沒有條件的動作。
您的RemoveExistingProducts也有可能(雖然可能不太可能)是在InstallFinalize之后(或在事務之外),然后如果x64卸載失敗(例如,在InstallFinalize之后),它將回滾並保留兩個產品。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.