Проект WiX, позволяющий устанавливать бок о бок

Я создаю MSI для нашего продукта. Я хотел бы, чтобы продукт мог установить бок о бок. Чтобы я мог установить 1.0.0 первым и более поздним, можно добавить 1.0.1, чтобы обе версии были установлены.

Я использую WiX для создания msi и хотел бы знать, как это можно и нужно сделать в Wix? Например

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

Привет, Мартейн

Ответы

Ответ 1

Вы должны быть в состоянии уйти, просто изменив код продукта верхнего уровня и GUID UpgradeCode, чтобы сделать ваши два продукта полностью несвязанными и использовать Productversion для идентификации версии. Вы можете делиться контентом компонентов между продуктами (что работает с модулями слияния), чтобы кишки вашего установщика (определения компонентов) не нуждались в настройке и все еще могут быть разделены.

Основная проблема заключается в обеспечении того, чтобы обе развязанные продукты не мешали друг другу, например, имея одну и ту же папку установки по умолчанию, записи в меню "Пуск" и одну и ту же запись "Установка и удаление программ". Вы можете достичь этого, включив номер версии продукта в Свойство ProductName, которое может выглядеть немного технически в вашем установочном интерфейсе, но это не неслыханно.

Ответ 2

Относительно вашего первого вопроса: Нет, вам не нужно.
Но почему?

Мне было трудно понять правила установки Windows в моем бок о бок сценарии. Вам действительно нужно понимать понятия правила компонентов (в том числе, когда вам нужно их тормозить) и ключевые пути. WiX не отбрасывает эти аспекты.

Этот ответ уже указывает на возможные помехи. Рассмотрим несколько примеров.

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

    Если вы измените GUID (также происходит при использовании GUID "*" ), расширение будет удалено при удалении любой версии.

    Если вы не измените GUID, расширение будет сохранено, но укажите версию, которая была установлена ​​совсем недавно. Вы можете использовать эту опцию как меньшее из двух чертей, поддерживая по крайней мере сценарий, когда пользователи удаляют версии в том же порядке, в котором они их установили.
    Здесь есть ошибка: расширение должно быть ключевым путем для компонента. Это делает использование элемента ProgID проблематичным в параллельном сценарии, поскольку вы получите предупреждение ICE69 в случае, если вы не поместите элемент ProgID в тот же компонент, что и ссылочный файл. Кроме того, это будет информация о внедрении WiX, какая запись реестра, которую он создает, будет ключевым путем.