2011-08-30 8 views
8

Nel mio programma di installazione Wix, voglio verificare la presenza di una versione di ESRI ArcMap che posso trovare da:Come faccio a confrontare le versioni del registro in WiX?

<Property Id="ARC10INSTALLED"> 
    <RegistrySearch Id="Arc10Search" Root="HKLM" Key="SOFTWARE\ESRI\ArcGIS" Name="RealVersion" Type="raw" /> 
</Property> 

voglio inizia con 10 e ho provato realizzare esso utilizzando questa condizione:

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

Ma quello non sembra funzionare, qualche suggerimento?

risposta

10

Il valore restituito dall'elemento RegistrySearch dipende dal valore dell'attributo @Type e dal tipo di dati di tale valore nel Registro di sistema. Quindi, se si specifica raw come un valore dell'attributo Type, il risultato che si otterrà conterrà molto probabilmente un determinato prefisso. Ad esempio, se è REG_BINARY otterrai il valore prefissato con #. Dovresti considerare questo nelle operazioni di confronto.

Come per il confronto delle stringhe in particolare, vorrei utilizzare gli operatori di sottostringa supported by the MSI condition syntax. Supporta 'inizia con', 'termina con' e 'contiene', che sembra il modo migliore per identificare il valore 10. da qualche parte nel valore che si riceve nella proprietà ARC10INSTALLED.

+2

"Inizia con" è esattamente ciò che ha funzionato. Grazie! E solo per documentare quello che ho usato:

Problemi correlati