Возможности установщика, 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, но я уверен, что он не будет поддерживать развертывание на уровне предприятия.