2011-08-30 59 views
8

在我的WiX的安装程序,我想检查版本ESRI ArcMap中的,我可以找到:如何比较WiX中的注册表版本?

<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> 

但这似乎不工作,有什么建议?

回答

10

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

至于字符串比较特别是,我会使用子字符串运算符supported by the MSI condition syntax。它支持'开始于','结束于'和'包含',这看起来像是在ARC10INSTALLED属性中收到值的某个地方确定您的值10.的最佳方式。

+2

'开始'正是工作。谢谢!只是为了记录我使用的内容:<![CDATA [ARC10INSTALLED AND ARC10INSTALLED << "10"]]> –