在我的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>
但这似乎不起作用,有什么建议吗?
最佳答案
RegistrySearch元素返回的值取决于@Type
属性值以及注册表中该值的数据类型。因此,如果您将raw
指定为Type
属性的值,则得到的结果很可能包含特定的前缀。例如,如果它是REG_BINARY
,您将获得带有#
前缀的值。您应该在比较操作中考虑这一点。
特别是对于字符串比较,我将使用子字符串运算符supported by the MSI condition syntax。它支持“开始于”,“结束于”和“包含”,这似乎是在ARC10INSTALLED属性中接收的值中的某处识别值10.
的最佳方法。
关于wix - 如何比较WiX中的注册表版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7245152/