Подтвердить что ты не робот

Можно ли передать переменную в файл локализации WIX?

Мне нужно использовать переменную в файле локализации 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 >

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

<Property Id="Property1">$(var.Property1)</Property>

Ответ 3

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

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

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

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

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

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

< WixProperty Id =" BuildMachine "Значение =" $(env.COMPUTERNAME) "/" >