WiX (Windows Installer Xml), создание универсальных переменных
Я изучал WiX в течение нескольких дней через какое-то онлайн-руководство. Я видел три случая для создания некоторых переменных
<? define Variable = "value" ?>
а затем использовать значение как$(var.Variable)
- Создайте файл локализации. Введите содержание как
<String Id="Variable">Value</String>
а затем использовать значение как!(loc.Variable)
- Создайте включаемый файл. Введите содержание как
<Property Id="VARIABLE" Value="value" />
и затем включите файл, используйте свойство во фрагменте как[VARIABLE]
Я знаю, что файл локализации в основном используется для разных локалей. Но я не знаю, когда мы должны использовать каждый случай. Кто-нибудь может помочь объяснить?
1 ответ
Я не использовал эти конструкции так много. Тем не менее, я думаю, что Боб Арнсон (разработчик WiX) довольно хорошо объясняет это в этой записи блога о локализации (объяснение хорошее, но мне все же удается запутаться - ошибка углерода).
По существу:
- Переменные препроцессора -
$(var.Variable)
- разрешаются препроцессором WiX - это происходит перед компиляцией (Candle.exe
). - Переменные локализации -
!(loc.LanguageLcid)
- разрешаются во время ссылки (Light.exe
). Процесс связывания может выплевывать несколько файлов MSI на разных языках. Следовательно, локализация - это процесс времени соединения.- См. Ссылку 3 ниже для примера локализации. Как только вы локализуетесь, вы локализуете большинство или все поля. В приведенном ниже примере я не локализую
version
а такжеupgrade code
- они остаются одинаковыми для всех выходных файлов MSI. - Вы должны определить в каждом случае, что должно быть локализовано. Если
Manufacturer
имя будет локализовано? Возможно, если вам нужны азиатские символы для азиатских настроек, и эквивалентное латинское имя символа в противном случае?
- См. Ссылку 3 ниже для примера локализации. Как только вы локализуетесь, вы локализуете большинство или все поля. В приведенном ниже примере я не локализую
- Включаемые файлы просто включаются в исходный код WiX перед компиляцией. Это как включить заголовочный файл в C++. Это делает его конструкцией препроцессора. См. Ссылку 2 ниже для обсуждения использования включаемых файлов.
- ОБНОВЛЕНИЕ: Есть также переменные Burn Engine - если вы делаете
setup.exe
пусковые установки с WiX.
Я уверен, что есть и другие технические причины. Роб или Боб должны были бы осветить. Там также могут быть различия в WiX 4
чем то, к чему я привык в WiX 3
- и могут быть запланированные изменения, о которых я не знаю.
Некоторые ссылки:
- Можно ли передать переменную в файл локализации WIX? (для удобства поиска)
- Установщик Wix: установка свойства условия компонента при установке администратора MSIEXEC в командной строке (краткое описание конструкций препроцессора по сравнению с другими полезными конструкциями для создания разновидностей установок)
- Многоязычная проблема лицензионного соглашения Wix Toolset (с использованием локализации)
- Строка Wix с символами, недоступными в кодовой странице базы данных, хотя кодовая страница установлена