WiX решает эту проблему, если вы в порядке, используя их пользовательский интерфейс или просто пользовательский интерфейс в стиле WiX.
если вам нужен более богатый пользовательский интерфейс, вам нужно написать собственный загрузчик. Я решил эту проблему в прошлом, написав загрузчик клиента, который представил пользователю унифицированный интерфейс пользователя и сделал установку похожей на один пакет, где на самом деле установка представляла собой набор файлов MSI, которые выполнялись последовательно.
Вот общая суть того, что я сделал:
- Bootstrapper был управляемым кодом .NET. Плюсы: проще писать. Минусы: в некоторых системах не было .NET, и мне пришлось иметь небольшой неуправляемый загрузчик для моего управляемого загрузчика, который сначала развернул .NET, а затем запустил управляемый загрузчик.
- Обнаружены файлы MSI (app.config работает ... мое приложение было более сложным).
- Использовал управляемый MSI API для чтения каждого списка функций MSI-файлов
- Создал единственную страницу мастера «выбора компонентов» в WinNET-формах .NET, которая создала функции верхнего уровня для каждого файла MSI, а затем заполнила подфункции как прочитанные из каждого файла MSI.
- Создание командных строк MSI на основе выбора функций и других параметров (удаление, восстановление, обновление и т. Д.).
- Создан раздел реестра Uninstall для установщика «suite» и скрыты ключи удаления для MSI, чтобы в разделе «Установка и удаление программ / Программы и компоненты» была только одна запись.
Дьявол кроется в деталях, но это сработало и сработало хорошо!
Изменить 9/3/2010 с дополнительными примечаниями:
Вот некоторые вещи, которые следует учитывать, если вы выберете такой подход:
- Что такое режим обслуживания? Вам, вероятно, нужно где-то кэшировать загрузчик в системе, чтобы он мог открываться при запуске из ARP.
- А как насчет обновлений и удалений? Вы разрешаете обновление некоторых MSI, но не других?
- Как вы определяете обновление по сравнению с режимом обслуживания? В значительной степени вам нужно отсканировать все MSI, и если какие-либо из этих MSI (представьте себе «функции») устарели, то вы работаете как обновление, а не как техническое обслуживание.
- Рассмотрим частичные добавления функций ... Поддерживаете ли вы установку только некоторых из MSI? В этом случае можно перейти к обновлению некоторых сценариев и заново установить другие.
- Вы, вероятно, в конечном итоге представите концепцию версии пакета для всего пакета. Не обманывай себя ... это просто версия для людей / маркетинга ... только версии MSI, и только эти версии должны использоваться для определения установки / ремонта / обновления и т. Д.
Как правило, при разработке установок (будь то одиночная установка MSI или составного пакета) убедитесь, что вы выложили ВСЕ свои сценарии использования на весь жизненный цикл программного обеспечения. Очень просто написать установщик недальновидным образом, а затем оказаться в неприятном углу, когда выйдет версия 2.
Удачи;)