Постройте один MSI из отдельных компонентов

У нас есть произведение, состоящее из трех частей:

  • Файлы приложений (файлы exe и dll)
  • Файлы справки
  • Отчеты SSRS

Все три вещи устанавливаются вместе с тем же установщиком, созданным с использованием WIX. В нашей компании каждый компонент разрабатывается отдельными командами и с разными сроками. Мы хотели бы разбить нашу MSI на три части, так что, когда одна часть станет стабильной, ее часть установки также стабильна и не восстанавливается с нуля при обновлении других частей.

Я посмотрел на модули слияния и файлы CAB, но я думаю, что это неправильное направление. Есть ли что-нибудь в наборе инструментов WIX, который может помочь мне достичь моих целей?

(Я прочитал вопрос Построение установочных файлов MSI Installer и Separaete, но считаю, что этот вопрос немного отличается.)

Спасибо за вашу помощь.

2 ответа

Библиотека WiX (*.wixlib), по-видимому, является лучшим подходом для распространения компонентов в вашем случае.

Я бы организовал этот процесс следующим образом:

  • каждая команда имеет отдельный проект установки WiX (проект библиотеки установки), который компилируется в *.wixlib файл вместо пакета MSI (или MSM)
  • каждый проект развивается по мере разработки компонента, а выход разделяется на другие команды.
  • сборка интеграции собирает все библиотеки wixlib и ссылки (light.exe) все вместе в один пакет MSI

Следовательно, вы всегда будете иметь окончательный инсталляционный пакет с последними сборками компонентов, что означает непрерывная интеграция.

Насколько я понимаю, вы не будете распространять компоненты отдельно, а для конечного пользователя он по-прежнему является надежным инсталляционным пакетом. Следовательно, слияние модулей может быть накладными. Я подозреваю (но не уверен), что light.exe выполняет дополнительную проверку при связывании библиотек по сравнению с инструментом слияния.


Ну, слияние модулей - это решение. У вас может быть два модуля слияния, содержащие файлы справки и отчеты SSRS, и добавьте их в основной пакет, который будет содержать только файлы приложений. Это может увеличить время сборки, если в двух модулях слияния ничего не меняется, но у вас будет длительное время для основных изменений пакета.

Другой вариант - создать отдельные пакеты для каждого из компонентов и объединить их в один, используя Burn. Я бы рекомендовал использовать модули слияния, более чистые и удобные в управлении.

licensed under cc by-sa 3.0 with attribution.