Проект 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, какая запись реестра, которую он создает, будет ключевым путем.