簡體   English   中英

如何從MSI檢查已安裝的產品版本

[英]How to check an installed version of a product from MSI

經過審查,本網站上的很多帖子終於決定放我的。 我正在准備一個使用Wix的MSI文件。 在安裝我的系統之前,我需要檢查是否安裝了特定版本的企業產品。 我有該產品的GUID(所有版本都相同),但我需要檢查是否安裝了1.10.0版本。 請問任何想法。 提前致謝。

PD:我是Wix中的新手,所以此時我只是使用默認情況下使用Setup Project創建的wxs文件。

澄清:我不想升級我正在安裝的軟件,我需要檢查安裝程序所依賴的其他程序和版本。

要正確執行此操作,您可能希望使用自定義操作。 在自定義操作中,使用MsiGetProductInfo函數。

在純WiX中執行此操作的方法是修改此處的示例: 如何比較WiX中的注冊表版本?

首先創建一個RegistrySearch元素:

<Property Id="PRODUCTVERSION">
    <RegistrySearch Id="ProductVersionSearch" Root="HKLM" Key="software\Microsoft\Windows\Current Version\Uninstall\[PRODUCTCODE]" Name="DisplayVersion" Type="raw" />
</Property>

然后使用Condition元素:

<Condition Message="Product version 1.10.0 must be installed">
    <![CDATA[PRODUCTVERSION AND PRODUCTVERSION = "1.10.0"]]>
</Condition>

這將搜索完全版本1.10.0,所以如果你正在尋找像“v1.10.0或更新”這樣的東西可能不是你想要的......但是應該讓你開始。

也許在這篇文章中嘗試提出的解決方案: WiX安裝程序:獲取正在升級的產品的版本

它涉及使用Upgrade表來標識已安裝的產品,以及使用VBScript確定版本的自定義操作。

如果您想要執行類似創建錯誤消息或安裝失敗的情況(如果存在該版本),則可以有多個升級條目。 有一個有這樣的東西,錯誤的語法......

<Property Id="VERSION110INSTALLED" Secure="yes" />
<Upgrade Id="YOUR_GUID">
  <UpgradeVersion
   Minimum="1.10.0" Maximum="1.10.0"
   Property="VERSION110SINSTALLED"
   IncludeMinimum="yes" IncludeMaximum="yes" OnlyDetect="yes" />
</Upgrade>

然后,如果存在版本1.10.0,則設置該屬性,如果要在VERSION110SINSTALLED上生成錯誤消息,請在FindRelatedProducts之后對其進行排序。

暫無
暫無

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

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