2011-08-30 63 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"]]> –