簡體   English   中英

Wix 32位和64位MSI不會相互卸載

[英]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.

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