2011-08-30 8 views
8

En mi instalador Wix, quiero comprobar si hay una versión de ESRI ArcMap que puedo encontrar por:¿Cómo comparo las versiones de registro en WiX?

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

Quiero comienza con 10 y he tratado de llevarla a cabo mediante el uso de esta condición:

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

Pero eso no parece funcionar, ¿alguna sugerencia?

Respuesta

10

El valor devuelto por el elemento RegistrySearch depende del valor de atributo @Type, así como del tipo de datos de ese valor en el registro. Por lo tanto, en caso de que especifique raw como un valor del atributo Type, el resultado que obtendrá probablemente contenga un cierto prefijo. Por ejemplo, si es REG_BINARY, obtendrá el valor con el prefijo #. Deberías considerar esto en las operaciones de comparación.

En cuanto a la comparación de cadenas en particular, utilizaría los operadores de subcadena supported by the MSI condition syntax. Admite 'comienza con', 'termina con' y 'contiene', que se ve como la mejor manera de identificar su valor 10. en algún lugar del valor que recibe en la propiedad ARC10INSTALLED.

+2

El 'comienza con' es exactamente lo que funcionó. ¡Gracias! Y solo para documentar lo que utilicé:

Cuestiones relacionadas