Простота и удобство установки — одно из важных требований к любому программному продукту. Рассмотрим решения, предназначенные для создания профессиональных инсталляторов под Windows.
Статья опубликована в журнале «IT Спец» №5, май 2008.
Зачем необходим инсталлятор
Инсталлятор нужен прежде всего для комфортного развертывания программного продукта. Пользователи, работающие с ОС Windows, привыкли, что все необходимые действия для правильной установки программы берет на себя инсталлятор, представленный в виде мастера. В таких случаях все, что требуется от пользователя, — это следовать рекомендациям мастера установки, т. е. действия для установки ПО со стороны пользователя минимальны. Чем проще установка и использование программы, тем выше вероятность ее покупки. Программист должен возложить на инсталлятор всю рутинную работу, которая может отпугнуть пользователя от использования программы. Например, если вашей программе требуется наличие в системе нестандартных компонентов, библиотек, то совсем необязательно возлагать на пользователя их установку, регистрацию и другие подобные действия. Для примера посмотрите на те же продукты компании Microsoft. Любой из них снабжен отличным мастером установки (инсталлятором), который требует от пользователя совершить лишь пару кликов мышкой, а не ломать голову над редактированием конфигурационных файлов или чем-то подобным.
Минус собственного инсталлятора — требуется время на разработку. Закончив проект, вам придется написать еще одну программу — собственный инсталлятор. Таким образом, вы должны будете сосредоточиться сразу на двух продуктах.
Install Shield
Сайт: www.installshield.com · Лицензия: Shareware
Install Shield идеально подходит для создания как простых, так и сверхсложных инсталляций. Разработчики снабдили свое творение всем необходимым: от типичной функции расположения файлов проекта в файловой системе и создания ярлыков запуска до возможности проведения защищенных инсталляций (с помощью ввода лицензионных ключей). Хорошая функциональность и универсальность этого продукта сделали его главным инструментом для разработки инсталляторов таких компаний, как Borland, Adobe, Corel, ABBY.

Install Shield 2008
Возможности
- Тест на соответствие системным требованиям. Не нужно полагать, что у пользователя, скачавшего вашу программу, системные требования идеально подходят для ее работы. Чтобы не разочаровать его неработоспособностью установленной программы, лучше поручить инсталлятору все проверить до начала установки. Проверке можно подвергнуть тип процессора, объем ОЗУ, версию ОС, наличие установленных программ и т. д.
- Создание нескольких вариантов установки. Профессиональная программа должна поддерживать минимум два типа установки: выборочная и типичная. В Install Shield можно без проблем сделать разные сценарии установки.
- Создание ярлыков. Ярлыки на запуск установленной программы можно создать на рабочем столе или в меню Пуск.
- Взаимодействие с реестром. На этапе установки можно внести в реестр все необходимое.
- Включение в инсталлятор ODBC-драйверов. При распространении программ, работающих с базами данных, нельзя быть до конца уверенным, что в системе конечного пользователя будут присутствовать все необходимые драйверы для доступа к данным (сразу хочется вспомнить извечные проблемы с BDE). Поэтому лучше перестраховаться и включить все драйверы в инсталлятор. Хотя такой шаг и увеличит размер вашего проекта, зато это гарантирует, что пользователь сможет полноценно работать с вашим приложением.
- Создание конфигурационных файлов настроек. Когда для хранения настроек программы используются конфигурационные ini-файлы, то после установки приложения желательно сразу создавать конфиг с настройками по умолчанию.
- Разработка переменных среды.
- Создание/изменение файлов в формате XML.
- Установка прав. Достаточно полезная функция для распространения программы в корпоративных сетях, когда требуется ограничить возможность использования программы различными пользователями. Разобраться с этими нюансами можно на этапе установки.
- Поставка дополнительных компонентов. Когда вашей программе требуются какие-то нестандартные библиотеки/компоненты, лучше не надеяться, что пользователь их скачает сам, проще включить их в инсталлятор.
- Поддержка мобильных устройств. Install Shield имеет все необходимое для создания инсталлятора программы для мобильных устройств, работающих под PalmOS или Windows Mobile. Как и при создании обычных инсталляций, вам доступны все необходимые функции (взаимодействие с реестром мобильной ОС, создание ярлыков, установка DLL, проверка и поставка необходимых компонентов и т. д.).
- Создание Trialware. В Install Shield можно реализовать возможность ограниченного по времени использования вашей программы бесплатно, чтобы не изобретать подобное с нуля. Доступно несколько вариантов ограничений: по количеству дней, с наступлением указанной даты.
- Взаимодействие с серверными приложениями. Эта возможность особенно пригодится в случае, когда нужен инсталлятор для программы, которая взаимодействует с серверными компонентами (сервером баз данных или web-сервером). Данная функция позволяет выполнить скрипт на языке SQL (среди поддерживаемых серверов — MS SQL Server, Oracle, MySQL), установить компонент для ISS (Internet Information Services) и т. д.
- MSI и EXE. Install Shield одинаково хорошо создает как MSI-инсталляторы, пригодные для распространения через групповые политики AD, так и стандартные EXE.
- Интерфейс. Для создания неповторимого внешнего вида будущего инсталлятора в Install Shield встроен удобный редактор диалоговых окон. С его помощью можно достаточно легко изменять все диалоговые окна, которые пользователь видит во время работы мастера установки.
- Встроенный сканер поиска зависимых компонентов. Чтобы не ошибиться с включением в инсталлятор тех или иных компонентов, в Install Shield встроен сканер зависимостей. Он позволяет определить, какие библиотеки и компоненты требуются для корректной работы вашего приложения.
- Отладчик MSI. Install Shield — мощная многофункциональная система для создания инсталляций, а чем больше возможностей, тем в них проще запутаться и допустить ошибку. Для решения подобных проблем в Install Shield есть полноценный MSI-отладчик.

Экспорт драйверов ODBC

Редактор интерфейса диалоговых окон
Вердикт
Отличное решение для создания действительно профессиональных инсталляций. Благодаря обилию функций, любой программист останется доволен.
Smart Install Maker
Сайт: www.sminstall.com · Лицензия: Shareware
Smart Install Maker — российская разработка. По сравнению с Install Shield эта программа кажется малюткой, тем не менее ее функциональных возможностей хватит для создания инсталляций к большинству проектов.

Smart Install Maker
Возможности
- Проверка на соответствие системным требованиям. В инсталлятор можно встроить проверку ОС, версии MS Framework.
- Взаимодействие с реестром. В программе предусмотрена функция взаимодействия созданного инсталлятора с реестром Windows. Для работы доступны абсолютно все ключи: HKCR, HKCU, HKLM, HKU, HKPD, HKCC, HKDD.
- Выполнение команд. Во время работы инсталлятора можно выполнять любые команды в ОС (команды CMD, запуск программ с параметрами). Отличительной особенностью является возможность настройки времени выполнения команд: непосредственно до установки или после.
- Работа с конфигурационными файлами.
- Регистрация компонентов ActiveX. Технология ActiveX знаменита своими проблемами с переносом на другой ПК. Smart Install Maker позволяет регистрировать используемые в вашем проекте компоненты ActiveX и дерегистрировать их после удаления вашей программы.
- Перенос шрифтов. Если в своей программе вы используете нестандартный шрифт, то Smart Install Maker поможет корректно перенести его на ОС будущего пользователя.
- Создание переменных среды.
- Регистрация расширений. На этапе установки вы можете зарегистрировать расширение, которое будет ассоциироваться с вашей программой.
- Размещение ярлыков.
- Разбиение инсталлятора на части. Эта возможность становится актуальной, когда ваш проект имеет достаточно большой размер и вам требуется его поставлять, скажем, на FDD. В этом случае Smart Install Maker сможет создать инсталлятор, который будет поочередно просить у пользователя вставить следующую дискету.

Работа с реестром
Вердикт
Smart Install Maker подойдет для создания стандартных инсталляторов. Относительно низкая цена и неплохие функциональные возможности. Если требуется оперативно создать инсталлятор, то советуем обратить внимание на Smart Install Maker. Для серьезных же проектов лучше воспользоваться пакетом типа Install Shield.
Advanced Installer
Сайт: www.advancedinstaller.com · Лицензия: Freeware/Shareware
Разработчики этого инсталлятора, наверное, хотели сделать свое детище похожим на мощный Install Shield. По-другому и быть не может, ведь в своем продукте они реализовали большинство функций, которые есть у старшего «товарища». Также стоит обратить внимание на условия распространения — авторы предлагают два варианта: платный и бесплатный. Нужен весь набор функций — тогда придется раскошелиться, а если программа нужна для создания разового и простого проекта, то можно потратить меньше.

Создание проекта в Advanced Installer
Возможности
- Проверка на соответствие системным требованиям. Проверке могут подвергаться: ОС, версия установленного Windows Installer, IE, ISS, .NET Framework, разрешение экрана, экранная палитра, ОЗУ, наличие прав администратора, наличие установленных программ, тип процессора и т. д.
- Размещение файлов проекта. Для размещения доступно любое место в ОС пользователя.
- Создание инсталляторов для развертывания Java.
- Взаимодействие с реестром.
- Поддержка создания EXE- и MSI-инсталляторов.
- Регистрация расширений.
- Корректная работа инсталляторов в 64-разрядных версиях Windows.
- Создание инсталляторов для программ, являющихся службами.
- Включение в инсталляционный пакет драйверов ODBC.
- Регистрация объектов COM+, DCOM и т. д.
- Полный контроль над пользовательским интерфейсом. Все диалоги доступны для редактирования. Реализована возможность выбора тем и т. д.
- Установка после проверки серийного номера. Серийные номера можно вставлять как свои, так и подготовить с помощью AI на этапе сборки вашего проекта.
Вердикт
Когда нужна мощь и не нужен излишний функционал Install Shield, то Advanced Installer будет оптимальной заменой. В этом пакете реализованы все необходимые функции и некоторые из них можно использовать совершенно бесплатно.
В обзор не попали
- GkWare (www.gkware.com) — shareware-генератор инсталляторов со стандартными возможностями для этого класса программ (создание ключей в реестре, запуск файлов, создание MSI-инсталляторов и т. д.).
- Emco MSI Package Builder (www.emco.is) — платный построитель MSI-инсталляторов. В отличие от многих программ подобного типа специализируется лишь на создании MSI-инсталляторов. Основная отличительная особенность — не сильно «разбухающий» размер конечного результата.
- Inno Setup Compiler (www.innosetup.com) — полностью бесплатный и распространяемый с исходными кодами построитель инсталляторов. Подходит для создания инсталляций, не требующих особой сложности.
- Nullsoft Install System (http://nsis.sourceforge.net) — мощная opensource-система для сборки профессиональных инсталляторов. По функциональным возможностям ее можно сравнить с Install Shield или Advanced Installer.
Сравнение возможностей
| Возможность | InstallShield 2008 | Smart Install Maker | Advanced Installer |
|---|---|---|---|
| Проверка соответствия системным требованиям | + (10) | + (5) | + (7) |
| Создание ярлыков | + | + | + |
| Взаимодействие с реестром | + | + | + |
| Перенос драйверов для ODBC | + | − | + |
| Добавление переменных среды | + | + | + |
| Установка прав | + | − | + |
| Построение MSI | + | − | + |
| Построение EXE | + | + | + |
| Создание/изменение конфигурационных файлов | + | + | − |
| Регистрация сервисов | + | − | + |
| Регистрация COM/ActiveX | + | + | + |
| Выполнение команд во время работы инсталлятора | + | + | + |
| Добавление cpl-апплетов | − | − | + |
| Взаимодействие с серверными компонентами | + (10) | − | + (5) |
| Создание защищенных инсталляторов | + (10) | + (2) | + (8) |
| Настройка диалогов | + (10) | + (2) | + (8) |
| Поддержка нескольких языков | + | + | + |
| Инсталлятор для Java | − | − | + |
| Бесплатные версии | − | − | + |
| Регистрация расширений | + | + | + |
Сравнение возможностей: плюс/минус — поддержка/отсутствие возможности, число в скобках — оценка по десятибалльной шкале.
Мнение экспертов
Михаил Фленов — профессиональный программист, автор книг по программированию, создатель сайта www.vr-online.ru.
Андрей Шкрыль — профессиональный программист, автор нескольких книг.
Что вы используете для создания инсталляций и чем обусловлен ваш выбор?
Михаил Фленов: Я не пользуюсь готовыми решениями. Просто написал свою небольшую программку. Почему? Не вижу смысла отдавать деньги за пакеты, которые стоят недешево и не всегда оправдывают вложенные деньги. Конечно, если использовать все функции пакетов, то покупка оправданна, но мне нужны только три функции — создание архивного пакета в виде одного файла, возможность установки файлов в нужное место и создание ярлыков. Нарушать лицензию я не люблю, поэтому вариант с использованием нелегального пакета я даже не рассматривал. Потратил немного времени на написание заготовки, которую использую и сейчас.
Андрей Шкрыль: Использую Nullsoft Scriptable Install System. NSIS позволяет создавать инсталляторы программ для Windows, которые умеют инсталлировать, деинсталлировать, изменять настройки системы, распаковывать файлы. Можно выбирать метод компрессии файлов, упакованных в дистрибутив, а также язык инсталлятора. Реализована поддержка языка сценариев. Стоит отметить, что с помощью данного пакета были созданы инсталляторы для Winamp, Emule, Mozilla Firefox, Miranda. Данный выбор обусловлен также тем, что пакет распространяется с открытыми исходными кодами.
В каких случаях имеет смысл использовать профессиональный пакет для создания инсталляций?
Михаил Фленов: В любом случае. Если нужно быстро собрать пакет, а наработок нет, то можно купить инсталляционный пакет или использовать что-то из бесплатного. Благо такие программы существуют и доступны в изобилии. Программы класса Install Shield умеют практически все, что может понадобиться даже изысканному программисту, использующему самые экзотические вещи. К тому же это отличное решение для установки такой бездарной технологии, как ActiveX. Вы когда-нибудь пытались зарегистрироваться в системе ActiveX без использования regsrv или других сторонних утилит?
Андрей Шкрыль: Понятие «профессиональный инсталлятор», на мой взгляд, субъективное. Ведь при наличии достаточного опыта разработчик может написать инсталлятор специально под свою задачу. А использовать хороший инсталлятор нужно всегда, особенно если программа делается не для себя, а для людей. Это не только правило хорошего тона, но и забота о пользователе, а также профессиональный подход к дальнейшему продвижению своей программы.
Заключение
Все представленные программы обладают необходимым функционалом для создания инсталляторов. Выбор конкретного продукта зависит от многих нюансов, которые для каждого проекта индивидуальны. Например, «шароварщикам» или программистам, которые создают софт для распространения внутри компании, ближе Smart Install Maker или даже бесплатный вариант Advanced Installer. А разработчикам, которым нужны универсальность и гибкость, больше заинтересует мощный Install Shield или платная версия Advanced Installer.