2010-01-29 20 views
6

Ho un WiX includono file con il seguente codiceC'è un modo per impostare una variabile del preprocessore sul valore di una proprietà?

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

Ora nel mio tag prodotto nel mio script WiX mi piacerebbe impostare l'attributo di lingua per un valore di ProductLanguage, in quanto richiede solo numeri interi localizzabili. C'è un modo per ottenere che la variabile venga assegnata al valore della proprietà?

Grazie

risposta

22

Sembra che ci sia confusione nella vostra mente su quale sia la differenza tra le variabili Wix e proprietà di Windows Installer.

A wix variabile può essere referenziato come $(var.foo). Tale variabile può essere definita passando gli argomenti della riga di comando -d su candle.exe. Può anche essere definito dalla sintassi <?define foo="bar"?>. Una variabile wix è un concetto che esiste solo durante la creazione della configurazione. È qualcosa che viene compilato dal preprocessore wix prima che succeda qualsiasi altra cosa, proprio come le dichiarazioni #define in C++.

A proprietà di installazione di Windows è qualcosa che viene compilato durante l'installazione. Un modo per definire le proprietà è inserirli nello Property table di un file MSI. Questo è ciò che fa l'elemento Proprietà wix. Alcuni (ma non tutti) data types utilizzati in un database di installazione di Windows consentono di fare riferimento a tale proprietà con la sintassi [FOO]. Un esempio di un tipo di dati che supporta questo è il tipo di dati Shortcut, utilizzato dall'attributo Target dell'elemento wix Shortcut. Il tipo di dati Language non supporta non.

+0

Grazie per il chiarimento –

2

Senza discutere il motivo per cui, questo potrebbe essere fatto così:

<Property Id="DynamicLanguageCode" Value="$(var.SystemLanguageID)" /> 
Problemi correlati