Wix для установки нескольких приложений
У меня наверное странная просьба.
Я разработал MSI для установки двух программ. После EULA должен появиться экран с двумя флажками, и при выборе одного или обоих из этих флажков должно быть установлено соответствующее программное обеспечение.
Раньше я использовал для установки одного программного обеспечения никогда не для двух.
Я был бы обязан за любые ведет.
5 ответов
Установщик Windows имеет понятие "функции", которые можно выбрать для установки или опустить. Если вы уже создали работающий установщик, то у вас есть хотя бы один <Feature>
элемент в ваших файлах WIX.
Просто создайте несколько <Feature>
элементы, а затем использовать <UIRef Id="WixUI_Mondo" />
или же <UIRef Id="WixUI_FeatureTree" />
чтобы позволить пользователю выбирать, какие функции он хочет установить.
Объединение приложений в один файл 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, чтобы упростить обслуживание (скорость сборки и компиляции, перекомпоновка только одного из множества файлов MSI и т. Д.), Наконец, вы должны использовать один файл для каждого компонента, чтобы обновление и исправление работали правильно. Несколько файлов MSI могут быть установлены последовательно с помощью загрузчиков или приложений запуска, таких как Burn from WiX, или функций в коммерческих инструментах, таких как Installshield и Advanced Installer. Вот ответ, который затрагивает эту тему. И просто добавляю другой ответ, который немного похож.
Вы не можете установить несколько приложений из одного MSI. Даже если вы найдете способ сделать это, вы действительно не должны.
Вместо этого используйте отдельные MSI для каждого приложения и используйте загрузчик для установки обоих. Например, вы можете использовать Inno Setup для генерации автономного загрузочного exe-файла, который устанавливает оба MSI (а также любые предварительные требования).
Кстати, Wix не обрабатывает создание загрузчиков, поэтому вам нужно использовать его вместе с другим инструментом.
Вы можете сделать вложенный MSI Pre Windows Installer 4.
Но вы не должны в любом случае это устарело по причине.
Замена API - это вызвать msiembeddedui и создать цепочку транзакций.
Вы можете создать несколько MSI, а затем объединить их в 1, содержащий MSI. "Родительский" MSI позволяет вам выбрать приложение для установки, а затем просто запустить этот MSI.
Если вы действительно хотите 2 приложения, то есть сборщики инсталляторов не от MSI (например, NSIS), которые позволяют вам это делать, но вы должны делать всю работу самостоятельно.