2010-01-29 15 views
6

Tengo un archivo de inclusión WiX con el siguiente código¿Hay alguna forma de establecer una variable de preprocesador para el valor de una propiedad?

<Fragment Id="PropertyFragment"> 
    <Property Id="DynamicLanguageCode" Value="[SystemLanguageID]" /> 
    <?define productLanguage = [DynamicLanguageCode]?> 
</Fragment> 

Ahora en mi etiqueta de producto en mi guión WiX me gustaría establecer el atributo de idioma para el valor de ProductLanguage, ya que sólo tiene números enteros localizables. ¿Hay alguna forma de que pueda asignarle a mi variable el valor de la propiedad?

Gracias

Respuesta

22

Parece que hay confusión en su mente acerca de cuál es la diferencia entre las variables de Wix y propiedades de Windows Installer.

A wix variable se puede hacer referencia como $(var.foo). Dicha variable puede definirse pasando -d argumentos de línea de comando a candle.exe. También se puede definir mediante la sintaxis <?define foo="bar"?>. Una variable wix es un concepto que solo existe mientras construyes tu configuración. Es algo que se completa con el preprocesador wix antes de que ocurra algo más, al igual que las declaraciones #define en C++.

A propiedad del instalador de Windows es algo que se rellena durante la instalación. Una forma de definir propiedades es ponerlas en el Property table de un archivo MSI. Esto es lo que hace el elemento de propiedad wix. Algunos (pero no todos) data types utilizados en una base de datos de instalación de Windows le permiten hacer referencia a dicha propiedad con la sintaxis [FOO]. Un ejemplo de un tipo de datos que admite esto es el tipo de datos Shortcut, utilizado por el atributo Target del elemento wix Shortcut. El tipo de datos Language hace no admite esto!

+0

Gracias por la aclaración –

2

sin discutir por qué, esto podría hacerse así:

<Property Id="DynamicLanguageCode" Value="$(var.SystemLanguageID)" /> 
Cuestiones relacionadas