Вопрос выбора инсталлятора, как мне кажется, стоит чуть ниже вопроса выбора языка программирования. Кривой инсталлятор действительно может испортить все впечатление от продукта, поэтому подойти надо со всей ответственностью.



Разумеется, что вопрос выбора системы инсталяции стоит перед разработчиками под Windows — я не особо знаком с системой установки в остальных операционных системах, знаю только магическую команду make install и про pkg-add. Поэтому буду рад, если кто-то осветит эту тему с той стороны.

0. А нужно ли инсталлировать?


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

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

Для многих программ инсталляция будет просто копированием файлов, но, однако, также инсталлятор является удобным поводом проверить установленность всех необходимых компонентов программы — .NET, нужная версия MFC, наличие прав администратора и т.д.

1. А что, есть выбор?


Вообще, в области инсталляции под Windows уже давно есть четкое разделение технологий инсталляции и то, с помощью чего эти технологии брать в узду.

2. Windows Installer


Любой желающий создать инсталлятор должен знать, что это — технология, которая весьма и весьма сильно держит весь рынок установки под Windows. Причина этого — монополия Microsoft в области его обновления у конечного пользователя.

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

Вариантов тут достаточно много, начиная с бесплатного WiX, который, как мне кажется, очень приятен, заканчивая платными решениями от InstallShield, Wise и пр.

В чем положительная сторона Windows Installer? Если использовать его для автоматизированной установки программ пользователю (через политику Active Directory), то получается реально круто. Пользователь только заходит в систему, а программа ему уже ставится. И все в одном флаконе.

Минус я вижу один — не самое убийственное сжатие, которое можно довести до ума любым архиватором.

3. Не Windows Installer


Однако, мы же можем взять любой другой инсталлятор, правда? Да, но тогда их становится безумное множество, начиная от скриптовых решений и заканчивая самопальными инсталляторами. Здесь достаточно интересен (для меня лично) NSIS, поскольку это (почти) полноценный язык программирования — есть переменные, стек, сравнения и т.д.

Есть Inno Setup, который также абсолютно бесплатен и построен на скриптовании, поддерживает хорошее сжатие.

И не стоит также забывать о том, что решения от InstallShield и Wise могут создавать и не-Windows Installer инсталляторы.

Если говорить о моем личном выборе, то я пользуюсь NSIS, не в последнюю очередь потому, что там действительно безумно маленький объем исполняемого кода. 32 килобайта и привет.

4. А как насчет реальной кроссплатформенности?


Честно говоря, пока, насколько я видел, никак. Те решения, которые я видел на основе IzPack требуют для установки JVM, а это плохо подходит для тех пользователей, у которых ее нет под рукой или нет в системе.

5. Ссылки


Более масштабный и полный обзор на RSDN (спасибо nzeemin)
Windows Installer (описание и функции)
WiX
NSIS
Inno Setup
IzPack

С любовью,
maniaque