Объединение приложений в одном файле MSI может показаться хорошей идеей. Это кажется интуитивно приятным и простым. Однако, исходя из опыта реального мира Я почти всегда заканчиваю разбиение приложений на установку через свои собственные файлы MSI.
Единственный раз, когда это действительно безопасно развертывать приложения вместе, когда они гарантированно:
- Всегда быть использованы вместе конечными пользователями
- Всегда обновляется одновременно
- Не будет существенно расти в размерах с течением времени
И обычно этого невозможно предсказать. Как правило, вы будете быстро получать новые требования, такие как:
Исправлены ошибки: если только одна заявка имеет ошибку, руководство хочет поставить только один новый MSI и оставить приложение 2 нетронутым и без необходимости делать целый новый QA-запуск для обоих приложений после установки. Это делается для снижения риска и предоставления меньшего обновления, которое также быстрее проверяется и проверяется. Патчи очень сложны и, как правило, более безопасны для файлов MSI, которые настолько просты, насколько это возможно, без слишком большого количества языков, пользовательских действий или графических интерфейсов.
Локализация: внезапно вы получаете требование сделать заявку 1 доступной на итальянском языке, приложение 2 не нужно переводить. Языковая поддержка имеет тенденцию значительно увеличивать сложность установки, не говоря уже о ее размере. Ваша «приятная и простая» MSI внезапно усложнилась, чтобы поддерживать и вяло строить. Это также настоящая боль, если вам нужна одна настройка, и вы переводите ее на многие языки - вы не сможете скомпилировать версию RTM до тех пор, пока не появятся все языковые обновления. Я могу сказать вам прямо сейчас, что маркетинг/продажи у людей не будет понятия об удержании английской версии, пока не будут готовы все локализованные версии.
QA/UAT: если приложения являются большими, доставляя 2 отдельные файлы MSI облегчат разделить усилия тестирования между различными командами QA и поставить новые обновления через ночные сборки и т.д. ...
График выпуска: внезапно расписание выпуска приложений меняется - приложение 1 обновляется каждый месяц, а приложение 2 обновляется только каждые шесть месяцев. Если разные пользователи используют приложения, как вы доставляете обновления? Создайте все это в одном MSI и дайте ему новый номер версии только для того, чтобы пользователи приложения 2 снова установили одно и то же приложение?
Нанести на общую Принципов разработчик из сцепления и соединения для пакетов развертывания, и вы сэкономите массу неприятностей. Если приложения в настоящее время ИЛИ в будущем могут взять на себя собственный жизненный цикл - сразу разделите их развертывание. И кто может видеть в будущем?
Обратите внимание, что вы, как правило, будете обертывать несколько файлов MSI в загрузчик, чтобы пользователи по-прежнему имели только один файл, к которому относятся, даже если продукты установлены через отдельные файлы MSI.
Обновление Wix: С появлением Wix для создания сложных настроек стало проще создавать Wix-файлы, которые могут быть скомпилированы в несколько файлов MSI. Это фактически становится более гибким типом модуля слияния. Это может упростить разделение или слияние файлов MSI в будущем. See a discussion of this feature here.
Размер строгой настройки: Есть некоторые ограничения относительно того, сколько компонентов и файлов вы можете иметь в одном MSI. Некоторые детали:
Это может быть полезно "разложить" огромный MSI на несколько связанном MSI по этой причине и по другим причинам, перечисленных выше - в порядке упростить техническое обслуживание (строить и компилировать скорость, перестраивать только один из многих файлов MSI и т. д.). Наконец, вы должны придерживаться одного файла на один компонент, чтобы улучшить работу и исправление. Несколько файлов MSI могут быть установлены последовательно с использованием загрузочных устройств или приложений запуска, таких как Burn from WiX, или функций в коммерческих инструментах, таких как Installshield и Advanced Installer. Here is an answer which touches on this topic. И просто запихивает another answer which is a little bit similar.
Вы можете подделать 2 приложения в 1 MSI, разделив их на функции. Однако, когда дело доходит до применения исправлений, у вас никогда не будет возможности обновить одну функцию, но не другую, и все это развалится. –
@ Давид: есть ли у вас пример того, как это «разваливается»? Я не вижу проблемы с блокировкой. Не стесняйтесь блог об этом, я подписался на ваш канал. –
Это очень плохая идея, с точки зрения установщика. Функции подразумеваются как части одной и той же программы, а не отдельные программы. Способ обработки нескольких программ будет осуществляться через цепочку или загрузчик. Я бы поставил свои деньги на цепочку, но это был личный вкус и разговоры. – Adkins