簡體   English   中英

使用wix安裝較新版本的msi時從程序和功能中刪除程序

[英]remove program from programs and features when installing newer version msi using wix

我正在使用WIX創建安裝程序msi。 當我安裝較新版本的應用程序時,我的較舊應用程序已安裝在計算機上,然后它刪除了較舊版本的所有文件和程序集,並將較新版本的文件和程序集放入其中,但在控制面板的程序和功能中同時顯示了較新版本和較舊版本。

我正在使用以下代碼進行升級

 <Upgrade Id="$(var.UpgradeCode)">
  <UpgradeVersion Minimum="$(var.ProductVersion)" IncludeMinimum="no" OnlyDetect="yes" Language="!(loc.lcid)" Property="NEWPRODUCTFOUND"/>
  <UpgradeVersion Minimum="1.0.0.0" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Language="!(loc.lcid)" Property="UPGRADEFOUND"/>
</Upgrade>

 <CustomAction Id="PreventDowngrading" Error="!(loc.CustomAction_PreventDowngrading)"/>

<InstallUISequence>
  <Custom Action="SetWindowsTypeProp" Before="FindRelatedProducts">1</Custom>
  <!--Custom Action="SetPresenceProperties" After="SetWindowsTypeProp">1</Custom-->
  <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
</InstallUISequence>


<InstallExecuteSequence>
  <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
  <RemoveExistingProducts Before="InstallInitialize"/>
</InstallExecuteSequence>

請幫助我如何從程序和功能中刪除條目

這意味着您的MajorUpgrade無法正常工作。 FindRelatedProducts找不到較舊的版本,因此REmoveExistingProducts無法正常工作。 對於最新版本的WiX,您可以刪除很多此類代碼,並用較新的MajorUpgrade元素替換。 這是一個較高級別的抽象,可以簡化大部分編寫工作。

為了成功進行MajorUpgrade,必須完成幾件事:

1)新舊MSI必須具有相同的UpgradeCode GUID。 (盡管從技術上來說,MSI可以通過使用其他UpgradeCode屬性來刪除不相關的產品,但出於這個問題的目的,我們將忽略它。)

2)新舊MSI必須具有唯一的ProductCode GUID。

3)新的MSI必須具有更高版本的ProductVersion屬性。 請注意,僅對前三個數字進行評估。 (1.2.3-> 1.2.4有效1.2.3.4-> 1.2.3.5無效)

4)舊MSI和新MSI必須在相同的上下文中安裝(每個用戶->每個用戶或每台計算機->每台計算機)

5)升級表必須正確編寫。 使用MajorUpgrade元素可以幫助完成此任務。

暫無
暫無

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

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