Wix для установки нескольких приложений - PullRequest
3 голосов
/ 09 октября 2009

У меня, вероятно, странный запрос.

Я разработал MSI для установки двух программ. После EULA должен появиться экран с двумя флажками, и при выборе одного или обоих этих флажков должно быть установлено соответствующее программное обеспечение.

Я раньше устанавливал одно программное обеспечение, а не на два.

Я был бы обязан за любые выводы.

Ответы [ 5 ]

13 голосов
/ 10 октября 2009

Объединение приложений в один файл MSI может показаться хорошей идеей. Кажется интуитивно приятным и простым. Однако, исходя из опыта реального мира , я почти всегда заканчиваю разделением приложений для установки через собственные файлы MSI.

Единственный раз, когда действительно безопасно развернуть приложения вместе , это когда они гарантированно:

  1. Всегда используется конечными пользователями вместе
  2. Всегда обновляться одновременно
  3. Размер со временем существенно не увеличится

И обычно это невозможно предсказать. Как правило, вы быстро получите новые требования, такие как:

Исправление ошибок : если ошибка есть только у одного приложения, руководство захочет предоставить только один новый MSI и оставить приложение 2 без изменений, и после этого не потребуется полностью выполнять QA для обоих приложений. установить. Это должно снизить риск и обеспечить более мелкое обновление, которое также быстрее тестируется и проверяется. Исправление очень сложно и, как правило, более безопасно для файлов MSI, которые настолько просты, насколько это возможно, без слишком большого количества языков, пользовательских действий или конструкций GUI.

Локализация : внезапно появляется требование сделать приложение 1 доступным на итальянском языке, приложение 2 переводить не нужно. Языковая поддержка имеет тенденцию значительно увеличивать сложность установки, не говоря уже о ее размере. Ваш "хороший и простой" MSI теперь внезапно стал сложным в обслуживании и вялым в сборке. Это также реальная боль, если вам нужна единая установка, и вы переводите ее на многие языки - вы не сможете скомпилировать версию RTM, пока не будут введены все языковые обновления. Я могу сказать вам прямо сейчас, что маркетинг / продажи у людей не будет концепции сдерживать английскую версию, пока все локализованные версии не будут готовы.

QA / UAT : если приложения велики, поставка 2 отдельных файлов MSI облегчит разделение усилий по тестированию между различными командами QA и доставку новых обновлений с помощью ночных сборок и т. Д.

Расписание выпуска : внезапно меняется расписание выпуска приложений - теперь приложение 1 обновляется каждый месяц, а приложение 2 обновляется только каждые шесть месяцев. Если приложения используют разные пользователи, как вы доставляете обновления? Соберите все в один MSI и присвойте ему новый номер версии только для того, чтобы пользователи приложения 2 снова устанавливали одно и то же приложение?

Примените общие принципы разработчика из связности и связи к пакетам развертывания, и вы избавите себя от множества неприятностей. Если приложения сейчас или в будущем могут взять на себя собственный жизненный цикл - немедленно разделите их развертывание. И кто может заглянуть в будущее?

Обратите внимание, что обычно вы загружаете несколько файлов MSI в загрузчик, чтобы у пользователей оставался только один файл, даже если продукты установлены через отдельные файлы MSI.

Обновление Wix : С появлением Wix для создания сложных настроек стало проще создавать включаемые файлы Wix, которые можно скомпилировать в несколько файлов MSI. Это фактически становится более гибким типом модуля слияния. Это может упростить разбиение или слияние файлов MSI в будущем. См. Обсуждение этой функции здесь . Еще одна ссылка .

Чистый размер установки : есть некоторые ограничения в отношении того, сколько компонентов и файлов вы можете иметь в одном MSI. Некоторые детали:

По этой причине и по другим причинам, перечисленным выше, может быть полезно "разложить" огромный MSI на несколько связанных MSI, чтобы упростить обслуживание (сборка и скорость компиляции, восстановление только одного из множества файлов MSI и т. Д.) ..). Наконец, вы должны придерживаться использования одного файла для каждого компонента, чтобы обновления и исправления работали правильно. Несколько файлов MSI могут быть установлены последовательно с помощью загрузчиков или приложений запуска, таких как Burn from WiX, или функций в коммерческих инструментах, таких как Installshield и Advanced Installer. Вот ответ, который затрагивает эту тему . И просто добавляю другой ответ, который немного похож на .


Ссылки

7 голосов
/ 09 октября 2009

Установщик Windows имеет понятие «функции», которые можно выбрать для установки или опустить. Если вы уже создали работающий установщик, то в ваших файлах WIX есть хотя бы один элемент <Feature>.

Просто создайте несколько <Feature> элементов, а затем используйте <UIRef Id="WixUI_Mondo" /> или <UIRef Id="WixUI_FeatureTree" />, чтобы позволить пользователю выбирать, какие функции он хочет установить.

3 голосов
/ 11 октября 2009

Нельзя установить несколько приложений из одного MSI. Даже если ты найдешь способ сделать это, ты действительно не должен.

Вместо этого используйте отдельные MSI для каждого приложения и используйте загрузчик для установки обоих. Например. вы можете использовать Inno Setup для создания автономного загрузчика exe, который устанавливает оба MSI (и любые предварительные условия).

Кстати, Wix не обрабатывает создание загрузчиков, поэтому вам нужно использовать его вместе с другим инструментом.

1 голос
/ 19 апреля 2012

Вы можете сделать вложенный установщик msi pre windows 4.

Но вы все равно не должны этого делать по причине.

API-интерфейс замены должен вызвать msiembeddedui и создать цепочку транзакций.

0 голосов
/ 08 июня 2010

Вы можете создать несколько MSI, а затем объединить их в 1, содержащий MSI. «Родительский» MSI позволяет вам выбрать приложение для установки, а затем просто запустить этот MSI.

Если вы действительно хотите 2 приложения, то есть сборщики инсталляторов, отличные от MSI (например, NSIS), которые позволяют вам это делать, но вы должны делать всю работу самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...