Возможности установщика, WIX и InstallShield Express

Программистам, которые действительно продвигают свои продукты на производство, требуется установщик. (упреждающее "связанное с программированием" оправдание.)

Для развертывания нового набора внутренних корпоративных приложений и сервисов я пытаюсь решить, как использовать WIX и версию InstallShield Express, поставляемую с Visual Studio 2010.

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

Кто-нибудь нашел матрицу признаков или другие рекомендации по долгосрочному лучшему способу управления внутренними развертываниями?

Ответ 1

Я считаю, что wix - отличный выбор (несмотря на кривую очень крутой), если вам нужно управлять установщиками в сложной среде, потому что

  • определения установки хранятся в формате XML
  • он дает вам полный контроль над базовой установкой Windows Installer; XML-схема обычно внимательно следит за схемой базы данных установщика Windows (что также является основной причиной, по которой кривая обучения настолько крута).
  • Легко интегрироваться в вашу автоматическую сборку
  • Части настройки могут быть сгенерированы автоматически
  • Он позволяет вам определять небольшие модули многократного использования и управлять сложными зависимостями между ними.
  • никаких проблем с оплатой или лицензирования (до того, как мы все должны были использовать один "Installshield PC" )

Почему формат XML является преимуществом: это позволяет полностью использовать системы управления версиями кода, такие как подрывная деятельность или меркурий. Просмотр изменений, изучение истории или даже слияние изменений по веткам - это легкий ветерок. Сравните это с установками проектов, которые являются непрозрачными двоичными блоками.

То, что я имею в виду, управляя сложными зависимостями: в нашем случае у нас есть большой пул многократных библиотек компонентов со сложным набором зависимостей между ними и многими приложениями, которые были построены поверх этого. Перед wix это был кошмар, когда была введена новая зависимость: ВСЕ установки должны были быть обновлены.

Теперь с помощью wix у нас есть ComponentGroup для каждой библиотеки, организованной в пару wixlibs. Каждая группа компонентов ссылается на другие группы компонентов, от которых она зависит от ComponentGroupRef. Разработчикам установки приложений нужно только ссылаться на группы компонентов прямых зависимостей, а wix сделает все остальное, следуя ссылкам. В результате введение новой зависимости требует только одного локального изменения. Наши автоматические сборки и wix делают все возможное для восстановления всех настроек.

Ответ 2

InstallShield Express предназначен для базового развертывания (это ничего, кроме прославленного WinZip). Вы также можете проверить мой любимый AdvancedInstaller. У них также есть бесплатный экспресс-выпуск, но я думаю, что оба они вам не пригодится, потому что если вам нужно что-либо делать с IIS, MS SQL, Active directory, GAC и т.д., Вам понадобятся "корпоративные уровни". WiX свободен, но кривая обучения настолько крутая, что ее не стоит изучать. Я сожалею о том, что когда-либо изучал его.

Если вам это нужно только для внутренних развертываний и не может тратить 1000 долларов на установщик, просто создайте свой собственный "инсталляционный" проект с нуля. System.EnterpriseServices.Internal пространство имен содержит некоторые полезные обертки для IIS, GAC и т.д. System.Configuration.Install.ManagedInstallerClass может помочь вам развернуть службы Windows. Другими словами, вы можете сделать свою собственную программу с нуля, которая может обрабатывать все необходимые шаги для развертывания вашего основного продукта. Многие компании не используют для своих флагманских продуктов коммерческие инсталляторы, они делают свои собственные.

Ответ 3

Функциональную матрицу для экрана установки можно найти здесь:

http://www.flexerasoftware.com/products/installshield/features.htm

Однако для раздела IIS (я предполагаю, что вам нужен IIS на основе ссылки на мой предыдущий вопрос), все, что он говорит, является "Ограниченным". Вам решать, что означает Limited, но я уверен, что он не будет поддерживать развертывание на уровне предприятия.