Объединение приложений в один файл MSI может показаться хорошей идеей. Кажется интуитивно приятным и простым. Однако, исходя из опыта реального мира , я почти всегда заканчиваю разделением приложений для установки через собственные файлы MSI.
Единственный раз, когда действительно безопасно развернуть приложения вместе , это когда они гарантированно:
- Всегда используется конечными пользователями вместе
- Всегда обновляться одновременно
- Размер со временем существенно не увеличится
И обычно это невозможно предсказать. Как правило, вы быстро получите новые требования, такие как:
Исправление ошибок : если ошибка есть только у одного приложения, руководство захочет предоставить только один новый 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. Вот ответ, который затрагивает эту тему . И просто добавляю другой ответ, который немного похож на .
Ссылки