9 Stimmen

Gibt es eine Möglichkeit, eine Präprozessorvariable auf den Wert einer Eigenschaft zu setzen?

Ich habe eine WiX-Include-Datei mit dem folgenden Code

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

Nun möchte ich in meinem Produkt-Tag in meinem WiX-Skript das Attribut Sprache auf den Wert von productLanguage setzen, da es nur lokalisierbare Ganzzahlen akzeptiert. Gibt es eine Möglichkeit, wie ich meiner Variablen den Wert der Eigenschaft zuweisen kann?

Merci

28voto

Wim Coenen Punkte 64891

Sie scheinen den Unterschied zwischen den Wix-Variablen und den Eigenschaften des Windows-Installationsprogramms nicht zu verstehen.

A Wix-Variable kann referenziert werden als $(var.foo) . Eine solche Variable kann definiert werden durch die Übergabe von -d Befehlszeilenargumente an candle.exe . Sie kann auch durch den <?define foo="bar"?> Syntax. Eine wix-Variable ist ein Konzept, das nur während der Erstellung Deines Setups existiert. Sie wird vom Wix-Präprozessor ausgefüllt, bevor irgendetwas anderes passiert, ähnlich wie #define Anweisungen in C++.

A Eigenschaft des Windows-Installationsprogramms ist etwas, das bei der Installation ausgefüllt wird. Eine Möglichkeit, Eigenschaften zu definieren, besteht darin, sie in der Datei Tabelle der Eigenschaften einer MSI-Datei. Das ist es, was das wix-Eigenschaftselement tut. Einige (aber nicht alle) Datentypen die in einer Windows-Installationsdatenbank verwendet werden, erlauben es Ihnen, eine solche Eigenschaft mit der [FOO] Syntax. Ein Beispiel für einen Datentyp, der dies unterstützt, ist der Abkürzung Datentyp, der von der Target Attribut des wix Abkürzung Element. Die Website Sprache Datentyp tut no unterstützt dies!

3voto

VeV Punkte 1218

Ohne zu argumentieren, warum, könnte dies so gemacht werden:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X