如何在 WiX 中比较注册表版本?

9
在我的Wix安装程序中,我想检查ESRI ArcMap的版本,可以通过以下方式找到:
<Property Id="ARC10INSTALLED">
    <RegistrySearch Id="Arc10Search" Root="HKLM" Key="SOFTWARE\ESRI\ArcGIS" Name="RealVersion" Type="raw" />
</Property>

我希望以10开头,我尝试使用以下条件来实现:

<Condition Message="ArcGIS Desktop 10 or 10.1 must be installed"><![CDATA[ARC10INSTALLED AND ARC10INSTALLED >= "10.0.0"]]></Condition>

但是似乎这并不起作用,有什么建议吗?
1个回答

12
RegistrySearch元素返回的值取决于@Type属性值和注册表中该值的数据类型。因此,如果将Type属性的值指定为raw,则您将很可能得到一个带有特定前缀的结果。例如,如果是REG_BINARY,则您将得到带有#前缀的值。在比较操作中应考虑此点。
至于字符串比较,我建议使用MSI条件语法支持的子字符串运算符。它支持“以...开头”、“以...结尾”和“包含”,这似乎是识别您在ARC10INSTALLED属性中接收到的值10.的最佳方法。

4
“开始于”正是起作用的。谢谢!为了记录我所使用的内容:<![CDATA[ARC10INSTALLED AND ARC10INSTALLED << "10"]]>。 - Erik L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接