WiX (Windows Installer Xml), создание универсальных переменных

Я изучал WiX в течение нескольких дней через какое-то онлайн-руководство. Я видел три случая для создания некоторых переменных

  1. <? define Variable = "value" ?> а затем использовать значение как $(var.Variable)
  2. Создайте файл локализации. Введите содержание как <String Id="Variable">Value</String> а затем использовать значение как !(loc.Variable)
  3. Создайте включаемый файл. Введите содержание как <Property Id="VARIABLE" Value="value" /> и затем включите файл, используйте свойство во фрагменте как [VARIABLE]

Я знаю, что файл локализации в основном используется для разных локалей. Но я не знаю, когда мы должны использовать каждый случай. Кто-нибудь может помочь объяснить?

1 ответ

Решение

Я не использовал эти конструкции так много. Тем не менее, я думаю, что Боб Арнсон (разработчик WiX) довольно хорошо объясняет это в этой записи блога о локализации (объяснение хорошее, но мне все же удается запутаться - ошибка углерода).

По существу:

  • Переменные препроцессора - $(var.Variable) - разрешаются препроцессором WiX - это происходит перед компиляцией (Candle.exe).
  • Переменные локализации - !(loc.LanguageLcid) - разрешаются во время ссылки (Light.exe). Процесс связывания может выплевывать несколько файлов MSI на разных языках. Следовательно, локализация - это процесс времени соединения.
    • См. Ссылку 3 ниже для примера локализации. Как только вы локализуетесь, вы локализуете большинство или все поля. В приведенном ниже примере я не локализую version а также upgrade code - они остаются одинаковыми для всех выходных файлов MSI.
    • Вы должны определить в каждом случае, что должно быть локализовано. Если Manufacturer имя будет локализовано? Возможно, если вам нужны азиатские символы для азиатских настроек, и эквивалентное латинское имя символа в противном случае?
  • Включаемые файлы просто включаются в исходный код WiX перед компиляцией. Это как включить заголовочный файл в C++. Это делает его конструкцией препроцессора. См. Ссылку 2 ниже для обсуждения использования включаемых файлов.
  • ОБНОВЛЕНИЕ: Есть также переменные Burn Engine - если вы делаете setup.exe пусковые установки с WiX.

Я уверен, что есть и другие технические причины. Роб или Боб должны были бы осветить. Там также могут быть различия в WiX 4 чем то, к чему я привык в WiX 3 - и могут быть запланированные изменения, о которых я не знаю.


Некоторые ссылки:

  1. Можно ли передать переменную в файл локализации WIX? (для удобства поиска)
  2. Установщик Wix: установка свойства условия компонента при установке администратора MSIEXEC в командной строке (краткое описание конструкций препроцессора по сравнению с другими полезными конструкциями для создания разновидностей установок)
  3. Многоязычная проблема лицензионного соглашения Wix Toolset (с использованием локализации)
  4. Строка Wix с символами, недоступными в кодовой странице базы данных, хотя кодовая страница установлена
Другие вопросы по тегам