Синтаксис для команд в WIX?
Каков правильный синтаксис для предоставления команд для компонентов в файле wxs для WIX?
В большинстве образцов я нашел
Guid="00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6"
но в некоторых образцах я нашел
Guid="{00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6}"
Я бы предпочел вторую версию, потому что это напрямую генерируется инструментом GuidGen. Но правильно ли это?
Ответы
Ответ 1
Компилятор WiX преобразует любую форму в форму, которая Установщик Windows ожидает (с фигурными скобками и прописными буквами).
Ответ 2
Автогиды и значения атрибутов по умолчанию
В дополнение к совету Боба Арнсона:
- Последние версии Wix позволяют GUID быть автоматически сгенерированы для нескольких вещей, наиболее значимых GUID компонентов. Он также охватывает коды пакетов, продуктов и патчей.
- Он также позволяет пропускать некоторые или даже большинство значений атрибутов из явного определения, поскольку большинство из них могут быть дефолтны для прогнозируемых значений. См. Ниже приведенный ниже фрагмент кода.
- Автогенерирующие GUID-компоненты компонентов возможны, потому что GUID компонентов должны оставаться неизменными после создания, если только путь установки не изменен - это описано в fooobar.com/questions/48134/.... Соответственно, Wix вычисляет GUID на основе целевого пути и других факторов.
- Продукт, пакет и код исправления обычно могут быть созданы случайным образом, поскольку они просто должны быть уникальными.
- Обратите внимание, что код обновления является специальным - он не должен автоматически генерироваться. Как правило, желательно сохранять стабильность между выпусками и даже между различными версиями и языками программного обеспечения в некоторых случаях - это зависит от дизайна приложения и того, как внедряются версии (вы можете использовать разные коды обновления и по-прежнему осуществлять крупное обновление, но обновление таблица усложняется).
- Как правило, код обновления идентифицирует " семейство связанных продуктов", код продукта определяет установленную версию какого-либо типа, а код пакета идентифицирует уникальный файл. Два файла с одним и тем же кодом пакета по определению рассматриваются как один и тот же файл (это может привести к таинственным ошибкам - обязательно всегда автоматически генерируйте код пакета).
- Подробную информацию об автогенерированных идентификаторах GUID можно найти в документации Wix.
Упрощенные исходные файлы XML Wix
Используемые правильно эти автоматически сгенерированные GUID могут значительно упростить ваши исходные файлы Wix:
<!-- Sample guid below, do not copy paste -->
<Component Id="File.dll" Guid="{12345678-1234-1234-1234-123456789ABC}">
<File Id="File.dll" Name="File.dll" KeyPath="yes" Source="..\File.dll" />
</Component>
против
<Component>
<File Source="..\File.dll" />
</Component>
Взятые вместе комбинации автогидов и значения атрибута по умолчанию дают исходные файлы Wix XML, которые короче и легче читать из-за удаления большого количества "шума" - это, по-видимому, делает их менее склонными к ошибкам:
- Исходные файлы terser проще в обслуживании и меньше подвержены ошибкам, так как легче увидеть, какие изменения с инструментами diff и чем меньше текста существует, тем меньше ошибок может скрыть
- в одних и тех же строках, копирование и вставка существующих элементов XML может затруднить поиск ошибок из-за неполного обновления всех атрибутов. Меньше атрибутов, меньше ошибок. Я копирую и вставляю много, используя Wix "вручную" (не используя генераторы XML). Обратите внимание, что большинство ошибок выбирается компилятором и компоновщиком Wix, но ошибки все равно могут скрываться.
- любые изменения значений по умолчанию затем могут автоматически извлекаться из компилятора и компоновщика, что облегчает их распространение в файлах MSI везде, которые были созданы с помощью Wix. Всегда полезно хранить исходные файлы как можно проще, но не проще
- переопределенные значения по умолчанию также выделяются в исходном файле, и вы можете добавлять комментарии, чтобы объяснить, почему требуется значение, отличное от значения по умолчанию.
Другие советы Wix здесь, хотя статья может быть немного устаревшей.
Ответ 3
Я использовал оба из них, и оба они выглядят отлично.