Часть 1
Знакомство пользователя с программой чаще всего начинается с запуска инсталлятора. Внешний вид («упаковка») и функциональность продукта определяется разработчиком. Пользователю нужно иметь возможность проконтролировать процесс, выставив нужные параметры установки. Для разработчика же важно, чтобы, как минимум, его программа была установлена корректно, а инсталлятор был совместим с необходимыми платформами.
Решений для создания инсталляторов достаточно много. Чаще всего используется подсистема Windows Installer, которая уже входит в инструментарий операционной системы. Но существуют и альтернативные решения — как платные, так и бесплатные, различной функциональности. Зачастую с их помощью можно создавать пакеты с инсталлятором, не зависящим от Windows Installer.
Путеводитель включает в себя всевозможные системы для создания инсталляторов, основные аспекты их обзора следующие:
- Среда разработки, интерфейс, поддержка сценариев
- Работа с проектом, типы создаваемых пакетов, возможности импорта проектов из других сред разработки
- Пользовательские опции инсталлятора: поддержка языков, профилей и другие опции
- Поддержка расширений
NSIS (Nullsoft Scriptable Install System)
Домашняя страница: http://nsis.sourceforge.net/
NSIS — бесплатный и широко известный инструментарий для создания инсталляционных пакетов в среде Windows. Отличительные особенности — компактность, масштабируемость, поддержка плагинов и локализаций. Из других возможностей NSIS: поддержка сценариев, различных вариантов установки (включая несколько проектов внутри одного инсталлятора), создание веб-инсталляторов.
Дистрибутивы NSIS создаются на основе сценариев. Переменные, функции полностью контролируют как инсталляцию, так и деинсталляцию продукта. С помощью скриптов можно добавлять файлы и директории, вносить изменения в реестр, редактировать текстовые и двоичные файлы, создавать патчи, управлять переменными среды и даже обращаться к Windows API (посредством расширений).
Синтаксис языка NSIS достаточно прост и удобен для чтения, основная документация к нему доступна здесь. Более того, в комплекте с программой содержится большое количество примеров (файлы формата nsi доступны в папке Examples). Для редактирования nsi-сценариев пригоден любой редактор кода, где без особых усилий можно включить подсветку синтаксиса. Множество задач сразу унифицируется, если использовать специальный плагин для IDE Eclipse, EclipseNSIS, либо Venis. Venis представляет собой интуитивную визуальную среду для создания сценариев.
Удобно работать с NSIS в связке и с другими программами, например, Excelsior Installer (см. ниже).
Если возникает необходимость расширить возможности инсталлятора, можно добавить определенные функции. Плагины пишутся на C, C++, Delphi или других языках. Готовые примеры расширений доступны здесь. Функции разнообразны: от визуальных эффектов инсталлятора до создания патчей и обращения к Windows API.
Скомпилировать инсталлятор можно с помощью инструмента makensis, предварительно выбрав тип компрессии — ZLib, BZip2 или LZMA. Кроме того, сам по себе инсталлятор занимает немного места — всего 34 КБ.
Графический интерфейс инсталлятора доступен в одном из двух вариантах исполнения — Classic или Modern. Более функциональный Modern (на данный момент используется его версия 2.0) позволяет создавать страницы мастера установки с использованием текста, шрифтов, изображений, диалогами, опциями и др. На данном этапе помощь окажет программа NSIS Dialog Designer. Она позволяет быстро конструировать интерфейс, а полученный результат сохранять в формат nsdinc, который затем несложно интегрировать в .nsi-скрипт.
Резюме. Среда NSIS уже давно зарекомендовала себя, и в доказательство — список разработчиков, которые используют ее возможности. Несложный язык сценариев, наличие всех необходимых функций, возможность расширения, доступность основных и дополнительных инструментов — за счет всего этого NSIS составляет сильную конкуренцию программам в данной категории.
Inno Setup
Домашняя страница: http://www.jrsoftware.org/
Inno Setup — бесплатный инструментарий для создания инсталляторов на базе сценариев. Среди главных особенностей продукта — работа со всеми версиями ОС Windows (Windows 2000 и выше), расширенная поддержка 64-битных приложений, настраиваемые типы установки, встроенный препроцессор и мощный язык сценариев на основе Pascal.
Сценарии имеют структуру, характерную конфигурационным файлам ini-формата, поэтому код вполне хорошо читаем и удобен в редактировании. Документ разделен на секции, и каждая из них отвечает за определенную задачу инсталлятора соответственно. Всего имеется два типа секций — с параметрами и «директива—значение».
Разработчикам, знакомым с Pascal, будет на руку тот факт, что Inno использует «родственный» язык — RemObjects Pascal Script. Сценарии отвечают за добавление новых опции, создание интерфейса, вызов файлов или библиотек, настраиваемые действия (custom actions) и т. д. В рабочей папке Inno Setup находятся примеры скриптов (также доступны в меню компилятора). По умолчанию в Inno Setup входит компилятор сценариев Compiler IDE. Для быстрого старта рекомендуется также установить Inno Script Studio. Этот редактор проектов входит в редакцию QuickStart Pack, скачать ее можно здесь. Для упрощения задач может быть полезен визуальный редактор сценариев — IsTool.
Самый простой вариант создания инсталлятора — обратиться к пошаговому мастеру настройки Inno Script Studio. Здесь указывается информация о продукте, координаты программы, файл лицензии и другие данные, языки локализации, опции компилятора. Впоследствии проект доступен для компиляции, отладки либо модификации полученного сценария в окне редактора.
Редактор Inno Script Studio доступен на русском языке. Значительно проще настраивать проект последовательно, переходя по секциям, а не создавая сценарий с нуля. При добавлении нового элемента изменения вносятся в код сценария, синтаксис подсвечивается, код соответствующим образом разбит на секции ([Setup], [Types], [Components]…).
Разделы редактора не сгруппированы, но структура вполне узнаваема. Логически их можно разделить следующим образом:
- Содержимое дистрибутива: Файлы, Каталоги, Иконки, Файлы INI, Реестр
- Сообщения и пользовательские сообщения,
- Пользовательские опции: Типы, Компоненты, Задачи, Языки
- Действия: Выполнить, Удалить перед установкой, Выполнить перед деинсталляцией, Удалить после деинсталляции
- Код сценария: Код Паскаля, Этапы предкомпиляции, Этапы посткомпиляции
Русская локализация иногда вводит в заблуждение, как всегда и обстоит с не очень качественным переводом.
Из других особенностей Inno Setup — тихая инсталляция и деинсталляция. Пользователю доступны различные типы установки и локализации на выбор. Установщик может быть зашифрован, содержать цифровую подпись либо защищен паролем. К дистрибутиву может применяться bzip2- или LZMA/LZMA2-компрессия. Интерфейс — в стиле 2000/XP, иных вариантов не предусмотрено.
Резюме. Inno Setup — ближайшая альтернатива NSIS. Позволяет задействовать как мощный язык сценариев, так и удобный и гибко настраиваемый редактор Inno Script Studio, доступный практически «из коробки».
IzPack
Домашняя страница: http://izpack.org/
Чаще всего, среда разработки инсталлятора закреплена за определенной платформой, и разработчик вынужден использовать различный инструментарий для каждой из них. IzPack решает вопрос кроссплатформенности, используя для своих нужд универсальную среду разработки Java.
Главные особенности IzPack: XML-синтаксис, интеграция с различными инструментами компиляции, простой и гибкий API-интерфейс, возможность локализации.
Среди особенностей инсталляторов, созданных средствами IzPack, — небольшой размер и модульность. В основе дистрибутива лежит XML-документ, где указываются все необходимые спецификации, определяется функциональность продукта. Впоследствии конфигурационный файл обрабатывается любым удобным способом, для этого используется командная строка илиApache Ant. Для наращивания функциональности инсталлятора могут быть задействованы IDE среды, такие как Eclipse, IntelliJ IDEA или Netbeans. Для составления конфигурационного файла подойдет любой редактор кода.
В XML-документе указывается информация о проекте (<info>), интерфейс (<guiprefs>), локализации (<locale>), файлы (<files>), ресурсы (<resources>), панели (<panels>), содержимое (<packs> — может быть упаковано в raw, gzip, bzip2) и др. Что касается java, в IzPack есть возможность применения действий (custom acrions) и переменных — встроенных, пользовательских и переменных среды (см. документацию и неофициальное руководство).
Для создания графического интерфейса инсталлятора предназначены панели. С их помощью определяется внешний вид, экрана приветствия, содержимое, текстовая информация (readme, лицензии), изображения. Поддерживаются различные типы интерактивных элементов (поля, переключатели и т. д.), локализация, включая русскую. Переводу поддается как интерфейс, так и содержание.
Для создания самораспаковывающихся модулей применяется метод 7-Zip SFX, использующий возможности известного архиватора. Для Mac OS также доступна оболочка под названием izpack2app.Кроме того, есть возможность создания веб-инсталлятора, для этих целей присутствует оболочка izpack2jnlp, использующая возможности Java Web Start. IzPack поддерживает опцию тихой установки.
Резюме. IzPack — одна из немногих кроссплатформенных систем для создания инсталляторов. Процесс написания конфигурации, компиляции и отладки удобен за счет интеграции со средами разработки, несложен в освоении. Из недостатков следует отметить значительно устаревший (и не оригинальный — native) вид получаемого инсталлятора.
Excelsior Installer
Домашняя страница: http://installer.excelsior-usa.com/ru/
Excelsior Installer — бесплатная программа, предназначенная для создания инсталляторов и обновлений. Основные особенности — простая интуитивная графическая оболочка, возможность интеграции с Проводником и NSIS.
Создание дистрибутива или обновления производится с помощью упаковщика (Packager). Он содержит пошаговый мастер, содержащий настройки проекта. На основе проекта очень просто скомпилировать восьмишаговый инсталлятор. Согласно описанию, это делается и вовсе двумя кликами мыши, но в обязательном порядке в упаковщике необходимо определить следующие параметры:
- Файлы и папки приложения, ярлыки
- Описание: имя компании, название продукта, версия продукта
Упаковщик состоит из разделов Files (Файлы), Settings (Настройки) и Appearance (Внешний вид). В целом, здесь содержится стандартный перечень опций, отвечающих за создание лицензионного соглашения, выбор инсталляционной директории, ярлыков, ключей реестра и другие параметры. Если изучить таблицу сравнения продуктов, легко обнаружить следующий функциональный «пробел»: инсталлятор не поддерживает файловые ассоциации, DLL-расширения, элементы управления.
Что касается доступных опций инсталлятора — можно указать профиль установки, в зависимости от привилегий текущего пользователя. Инсталлятор поддерживает локализацию, причем русский язык доступен «из коробки», остальное скачивается отдельно. Возможна автоматическая — тихая — инсталляция без запроса данных у пользователя, после установки — проверка целостности пакета или другие настраиваемые действия.
Как уже было упомянуто, возможна интеграция Excelsior с NSIS. Excelsior Installer, по сути, выступает полноценным GUI для NSIS, настройки проекта экспортируются без проблем.
В ряду с этим участником обзора, стоит выделить еще один родственный продукт — Excelsior Delivery. По большей части функции Excelsior Installer дублируются. Но есть также и несколько дополнительных функций: добавление в систему OLE- и ActiveX-элементов, файловых ассоциаций, библиотек, создание опросов пользователей. Лицензионная версия Excelsior Delivery (стоимостью $99) позволяет также применить к установщику фирменное оформление (branding). Если эта опция неважна, можно скачать некоммерческую версию программы.
Резюме. Excelsior Installer — простая и очень понятная система для создания дистрибутивов, может использоваться как надстройка к NSIS. Обратная сторона медали — усредненная функциональность как Excelsior Installer, так и Delivery.
WiX Toolset
Домашняя страница: http://wixtoolset.org/
WiX (Windows Installer XML) — бесплатный набор инструментов для создания инсталляторов (Windows Installer) с использованием спецификации XML. Из особенностей: интерфейс командной строки, интеграция с IDE, автоматизация процессов, поддержка базовых и расширенная поддержка Windows Installer.
Ядро WiX составляют компилятор (candle), компоновщик (light), библиотекарь (lit), декомпилятор (dark), бутстраппер инсталляции (burn) и другие утилиты. С их помощью можно создавать пакеты инсталляции .msi, модули слияния .msm, патчей .msp.
Создание инсталлятора состоит из нескольких основных этапов: разработка сценария, его проверка, обработка препроцессором, компиляция и компоновка. Для сборки инсталлятора и автоматизации в целом используется платформа MSBuild. Автоматизация — одно из главных преимуществ WiX при работе с достаточно ресурсоемкими проектами.
Исходный код имеет формат XML (расширение файла wxs). Сценарий описывает все этапы установки, начиная с описания проекта заканчивая действиями после установки. Редактировать его можно в любом редакторе с поддержкой данного формата.
WiX радует своими интеграционными возможностями: WiX Toolset предоставляет интерфейс командной строки. Для работы с проектом в Visual Studio (модуль IntelliSense) потребуется расширение Votive.
В затруднительных ситуациях или при отсутствии времени на изучение сценариев, хорошую службу окажет графическая оболочка WiXEdit. Ее основные преимущества — импорт существующих wxs-проектов, структурирование xml-данных с удобным чтением и навигацией. С помощью мастера также несложно создать инсталляционный файл с нуля. Причем это далеко не единственный подобный инструмент (см. здесь).
Резюме. В данном случае, многое решает спецификация XML. WiX дает возможность программистам оперировать исходными данными, не прибегая к графической оболочке. В состав WiX входят все необходимые инструменты, вдобавок к этому функциональность инсталлятора может быть улучшена за счет расширений.