Wix 如何从MSI检查已安装的产品版本

Wix 如何从MSI检查已安装的产品版本,wix,windows-installer,Wix,Windows Installer,在浏览了这个网站上的很多帖子后,我最终决定把我的帖子放进去。 我正在准备Wix的MSI文件。 在安装系统之前,我需要检查是否安装了企业产品的特定版本。我有该产品的GUID(对于所有版本都是相同的),但我需要检查是否安装了1.10.0版本。 有什么想法吗。 提前谢谢 PD:我是Wix的新手,所以现在我只是在安装项目中使用默认创建的wxs文件 澄清:我不想升级我正在安装的软件,我需要检查我的安装程序所依赖的另一个程序和版本。或许可以尝试本文中建议的解决方案: 它涉及使用升级表来标识已安装的产品,以及

在浏览了这个网站上的很多帖子后,我最终决定把我的帖子放进去。 我正在准备Wix的MSI文件。 在安装系统之前,我需要检查是否安装了企业产品的特定版本。我有该产品的GUID(对于所有版本都是相同的),但我需要检查是否安装了1.10.0版本。 有什么想法吗。 提前谢谢

PD:我是Wix的新手,所以现在我只是在安装项目中使用默认创建的wxs文件


澄清:我不想升级我正在安装的软件,我需要检查我的安装程序所依赖的另一个程序和版本。

或许可以尝试本文中建议的解决方案:


它涉及使用升级表来标识已安装的产品,以及使用VBScript来确定版本的自定义操作。

要正确执行此操作,您可能需要使用自定义操作。在自定义操作中,使用函数

在纯WiX中执行此操作的一种方法是修改以下示例:

首先创建RegistrySearch元素:

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

然后使用条件元素:

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


这将精确搜索1.10.0版,因此如果您正在寻找“v1.10.0或更高版本”之类的内容,可能不是您想要的。。。但是应该让您开始。

如果您想创建错误消息或安装失败(如果存在该版本),您可以有多个升级条目。有一个像这样的,糟糕的语法

<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,则设置该属性,如果希望生成错误消息,则在版本110sinstalled上设置该属性,并在FindRelatedProducts之后对其排序

您希望使用哪种编程语言实现签入?“该产品的GUID(对于所有版本都相同)”将被解释为属性,正如PhilDW在his中使用的那样。请确认。您可以使用包括和WiX在内的多个工具检查初始属性值。