Синтаксис для команд в WIX?

Каков правильный синтаксис для предоставления команд для компонентов в файле wxs для WIX?

В большинстве образцов я нашел

Guid="00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6"

но в некоторых образцах я нашел

Guid="{00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6}"

Я бы предпочел вторую версию, потому что это напрямую генерируется инструментом GuidGen. Но правильно ли это?

Ответ 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

Я использовал оба из них, и оба они выглядят отлично.