Можно ли передать переменную в файл локализации WIX? - PullRequest
14 голосов
/ 26 июля 2011

Мне нужно использовать переменную в файле локализации WIX WIXUI_en-us.wxl. Я пытался использовать это так:

<String Id="Message_SomeVersionAlreadyInstalled" Overridable="yes">A another version of product $(var.InstallationVersionForGUI) is already installed</String>

Но это не работает. И когда я объявил собственность и использовал ее таким образом:

<String Id="Message_SomeVersionAlreadyInstalled" Overridable="yes">A another version of product [InstallationVersionForGUI] is already installed</String>

тоже не работает.

Где я был не прав?

Спасибо за помощь и ваше время.

Ответы [ 3 ]

16 голосов
/ 26 июля 2011

Строки локализации обрабатываются во время соединения, поэтому вы не можете использовать переменные препроцессора $ (var).Поддерживается использование ссылки [property], если место, где используется строка локализации, поддерживает форматирование во время выполнения (например, с использованием типа поля Formatted).

14 голосов
/ 27 июля 2011

Ваш второй метод должен работать просто отлично.Это тот же метод, который используется для файлов .wxl по умолчанию.

Например, в вашем файле .wxl вы объявите свою строку:

<String Id="Message_Foo">Foo blah blah [Property1]</String>

И в своем .wxsфайл, вы объявляете собственность.При желании вы можете объявить свойство в соответствии с переменной WiX (что, по вашему мнению, вы пытаетесь сделать)

<Property Id="Property1">$(var.Property1)</Property>
0 голосов
/ 04 января 2013

Я пытался заставить файл локализации использовать переменные.Наткнулся на этот пост :

В WiX есть разные слои переменных (переменные препроцессора свечи, переменные WixVariables / переменные локализации / переменные связующего и свойства MSI).Каждый из них имеет разный синтаксис и оценивается в разное время:

Переменные препроцессора Candle "$ (var.VariableName)" оцениваются при запуске свечи и могут быть установлены из командной строки свечи и из операторов "".Свойства среды сборки, а также пользовательские переменные также могут быть доступны аналогично (изменяя префикс «var.» На другие значения).

Переменные Light, доступные из командной строки, являются WixVariables, и доступ к ним осуществляется через синтаксис "! (Wix.VariableName)".Чтобы получить доступ к вашей переменной из командной строки, вам нужно изменить строку на: Эта сборка была подготовлена ​​для! (Wix.BuildMachine)

Если вам вместо этого нужно, чтобы значение BuildMachine существовало как свойство MSI при установкевремя (это синтаксис «[VariableName]»), вам нужно добавить следующее в один из ваших файлов wxs во фрагменте, который уже связан с:

Теперь средаВ прошлом переменная COMPUTERNAME всегда содержала имя моих машин сборки, и вы можете получить к нему доступ таким образом: $ (env.COMPUTERNAME).Таким образом, вы можете избавиться от дополнения командной строки для light.exe и изменить свой файл wxs следующим образом:

...