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

Eri*_*k L 8 wix

在我的wix安装程序中,我想检查一下我可以找到的ESRI ArcMap版本:

<Property Id="ARC10INSTALLED">
    <RegistrySearch Id="Arc10Search" Root="HKLM" Key="SOFTWARE\ESRI\ArcGIS" Name="RealVersion" Type="raw" />
</Property>
Run Code Online (Sandbox Code Playgroud)

我希望从10开始,我尝试使用这个条件完成它:

<Condition Message="ArcGIS Desktop 10 or 10.1 must be installed"><![CDATA[ARC10INSTALLED AND ARC10INSTALLED >= "10.0.0"]]></Condition>
Run Code Online (Sandbox Code Playgroud)

但这似乎没有用,有什么建议吗?

Yan*_*nko 11

RegistrySearch元素返回的值取决于@Type属性值,以及注册表中该值的数据类型.因此,如果您指定rawType属性值,您将获得的结果很可能包含某个前缀.例如,如果它是REG_BINARY你将得到前缀的值#.您应该在比较操作中考虑这一点.

至于字符串比较,我会使用MSI条件语法支持的子字符串运算符.它支持'starts with','ends with'和'contains',这看起来是10.在ARC10INSTALLED属性中收到的值中某处识别值的最佳方法.

  • '开头'正是有效的.谢谢!并且只记录我使用的内容:<![CDATA [ARC10INSTALLED AND ARC10INSTALLED <<"10"]]> (4认同)