2009-10-09 2 views
3

У меня, вероятно, странный запрос.Wix для установки нескольких приложений

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

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

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

ответ

6

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

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

+0

Вы можете подделать 2 приложения в 1 MSI, разделив их на функции. Однако, когда дело доходит до применения исправлений, у вас никогда не будет возможности обновить одну функцию, но не другую, и все это развалится. –

+0

@ Давид: есть ли у вас пример того, как это «разваливается»? Я не вижу проблемы с блокировкой. Не стесняйтесь блог об этом, я подписался на ваш канал. –

+0

Это очень плохая идея, с точки зрения установщика. Функции подразумеваются как части одной и той же программы, а не отдельные программы. Способ обработки нескольких программ будет осуществляться через цепочку или загрузчик. Я бы поставил свои деньги на цепочку, но это был личный вкус и разговоры. – Adkins

13

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

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

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

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

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

+0

Вы имели в виду сказать Chainer, а не bootstrapper? – Adkins

+1

Отдельные настройки имеют недостатки. С отдельными, но очень похожими настройками вы сталкиваетесь с проблемами с двумя источниками. Повторное внесение одного и того же обновления в разные места. Используйте общий код, включенный обеими установками для этого, и ветвь, когда логика установки расходится - что и будет. Ожидайте неожиданного, но повторите то, что вы можете, насколько сможете, и, ради Бога, получите систему контроля версий, способную разветвляться. У руководства есть способ быстрее перевести требования, чем вы можете написать себе неуправляемый код. –

3

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

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

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

+0

У Wix теперь есть поддержка для загрузочных устройств с помощью [** Burn tool **] (http://wixtoolset.org/documentation/manual/v3/bundle/). Вот блог от Роба Меншинга: http://robmensching.com/blog/posts/2009/7/14/lets-talk-about-burn/ –

-2

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

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

+1

* Параллельные установки * - ** устаревшая ** функция Windows Установщик. http://msdn.microsoft.com/en-us/library/aa368010(VS.85).aspx –

1

Вы можете вложенную Msi предварительно окна инсталлятора 4.

Но вы не должны в любом случае это было устаревшим по причине.

Замена api - вызов msiembeddedui и создание цепочки транзакций.

Смежные вопросы