Я считаю, что wix - отличный выбор (несмотря на очень крутой курс обучения ), если вам нужно управлять установщиками в сложной среде, потому что
- определения настроек хранятся в формате XML
- это дает вам полный контроль над базовой технологией установки Windows; XML-схема обычно близко следует схеме базы данных установщика Windows (что также является основной причиной, по которой кривая обучения такая крутая)
- легко интегрировать в вашу автоматизированную сборку
- Части установки могут быть сгенерированы автоматически
- Позволяет определять небольшие повторно используемые модули и управлять сложными зависимостями между ними.
- без затрат или проблем с лицензированием (до wix нам всем приходилось использовать один "Installshield PC")
Почему формат XML является преимуществом: это позволяет вам полностью использовать системы управления версиями кода, такие как Subversion или Mercurial. Просмотр изменений, изучение истории или даже объединение изменений между ветвями - это очень просто. Сравните это с installshield-проектами, которые являются непрозрачными двоичными объектами.
Что я имею в виду под управлением сложных зависимостей: в нашем случае у нас есть большой пул библиотек компонентов многократного использования со сложным набором зависимостей между ними и множество приложений, построенных на основе этого. До wix это был кошмар, когда где-то была введена новая зависимость: ВСЕ настройки должны были быть обновлены.
Теперь с wix у нас есть ComponentGroup для каждой библиотеки, организованной в пару wixlibs . Каждая группа компонентов ссылается на другие группы компонентов, от которых она зависит, с помощью ComponentGroupRef . Разработчикам установки приложения нужно только ссылаться на группы компонентов с прямыми зависимостями, а wix сделает все остальное, следуя ссылкам. В результате введение новой зависимости требует только одного локального изменения. Наши автоматизированные сборки и wix делают все остальное, чтобы восстановить все настройки.