Накодив крутую прогу мы спешим выложить ее в инет на всеобщее
юзание. Снабдив свою прогу новейшми технологиями и модным интерфейсом,
нельзя забывать, что прежде, чем юзер сможет все это оценить, ему
придется скачать и установить наше творение. Со скачиванием мы ему
ничем помочь не сможем, а вот процесс установки уже в наших руках.
В простейшем случае эту рутинную процедуру может выполнить архиватор
или созданный им SFX-архив. Однако современный софт обычно требует для
своей работы многих подготовительных действий, кроме распаковки или
копирования, и возлагать обязанность их выполнения на юзера не принято. Инсталляция продвинутой софтины на комп юзера не сводится к
разархивированию файлов в указанную юзером папку и созданию ярлыков
к ехешникам. 

Во-первых, у каждой проги есть какие-либо зависимости,
т. е. файлы, которые должны присутствовать на компе для нормальной
работы проги, или, говоря по научному, окружение выполнения.
Например, любая прога, написанная на Visual C++ с использованием MFC
требует MFC**.DLL, где ** — номер версии С++, кроме того любая прога
написанная на С++ без специальных ухищрений, требует MCVC***.DLL, где
находятся стандартные функции языка С++. Поскольку такие файлы
используются очень многими прогами, их помещают в системную папку,
чтобы не делать их копий для каждой проги. Инсталлятор должен помещать
туда эти файлы и, если они там уже есть, проверять их версии и
обновлять файлы, если необходимо. Во-вторых, может требоваться проинициализировать какие-нибудь
настройки программы, например, заполнить список закладок браузера.
Настройки могут храниться в реестре и в INI-файлах. Значит, инсталлятор
должен уметь с ними работать. В тех же местах могут храниться пути
установки различных прог, которые могут потребоваться в процессе
установки. Например, если мы устанавливаем плагин к WinAmpу, то его
желательно установить в папку плагинов WinAmpа, не спрашивая ее путь
у юзера, который может его и не знать. Еще инсталлятор должен регить
COM-объекты, если таковые устанавливаются вместе с прогой. Наконец, в-третьих, желательно создать деинсталлятор, работа
которого, опять-таки не сводится к удалению папок и всего их
содержимого. Итак, вот окончательный список требований к инструментам для
создания дистрибутивов:

1) Установка различных файлов в специальные папки (system32,
Application data и т.д.)
2) Создание записей в реестре и INI-файлах
3) Вызов саморегистрации COM-серверов
4) Создание деинсталлятора, проделывающего действия,
противоположные к выше перечисленным.
5) Настраиваемый гуй (splash-screen, логотипы, цвета, шрифты)
6) Все данные и код дистрибутива должны представлять собой
один файл, не требующий предварительной установки чего-либо, что
не устанавливается вместе с виндой.

И еще одно требование, характерное для российской среды, — это
бесплатность 🙂

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

Visual Studio Installer (Входит в комплект Visual Studio)

Делает все, кроме пунктов 5 и 6. И именно это все портит, так как для
распространения софта в сети каждая прога должна быть строго одним
файлом, а внешний вид, имхо, должен содержать что-нибудь уникальное.
Зато он автоматически вытаскивает из
проекта зависимости и перекомпилирует его перед компиляцией дистрибутива.

Virtual Speed Installation Creator
(http://www.vsic.narod.ru
free

Прога отвечает своему названию: работать с ней — быстро. Вводишь
название твоей проги, папку с файлами, которые нужно положить в
дистрибутив, а остальные параметры можно оставить по умолчанию, и
уже можно запускать компиляцию. Язык инсталлятора может быть русский или английский.
Можно указать цвета фона, картинки и иконку инсталлятора.
Нет саморегистрации COM-компонентов. Основной недостаток в том, что все файлы, включаемые в дистрибутив,
должны находиться в одной папке.

Mini Installer (http://cdx-software.narod.ru) free

Возможности те же, что и у VSIC, только здесь можно добавлять файлы в
инсталлятор, не копируя их в папку с проектом. Однако, вместо одного
недостатка появляется другой: файлы
добавляются по одному. То есть нельзя выделить сразу несколько файлов и нажать «Открыть». Представь,
что у тебя проект, сравнимый по размаху с MS Office. Придется Несколько
сотен раз в диалоге открытия файлов отыскивать путь к папке Release.

Installer2Go (http://dev4pc.com) shareware

Без регистрации создаваемые инсталляторы показывают окно с рекламой.
Это уже значительно более продвинутый инсталлятор. Тут помимо
создания записей в реестре есть возможность добавлять/изменять переменные
окружения, запускать службы, создавать источники данных ODBC и запускать
Java и VB скрипты во время установки. На вкладке «Файлы» отображается дерево файловой системы компа, на
который будет производиться установка, и там
присутствуют все специальные папки. На вкладке «Ярлыки» тоже дерево файловой системы, но
там по умолчанию отображаются папки, в которые обычно устанавливаются
ярлыки: рабочий стол, меню «Пуск» и панель быстрого запуска.
Чтобы не запутаться в этой куче настроек авторы
предусмотрели мастер, который шаг за шагом проведет тебя через процесс создания инстллятора.

Inno Setup (http://www.innosetup.com) free

Inno Setup — это пример другого подхода к созданию инсталляторов. В нем
реализован скриптовой язык, который по своей структуре напоминает
INI-файлы. Весь скрипт разделен на секции, имена которых пишутся
в квадратных скобках. Большинство возможностей инсталлятора реализуются
путем написания функций на языке Pascal и размещением их в секции
Code. Для обработки паскалевских скриптов автор написал свой собственный
компилятор, который, кстати, можно использовать отдельно от Inno Setup.

NullSoft Install System (http://nsis.sourceforge.net) open-source

Сколькими языками программирования ты, уважаемый читатель, владеешь?
Теперь этот список пополнит язык скриптов NSIS, потому что NSIS — это
еще один инструмент создания дистрибутивов, для использования которого
необходимо написать скрипт. NSIS был написал специально для создания дистрибутивов
WinAmp. Сейчас NSIS очень распространен. Например, на нем сделан setup для
виндовой версии PHP. Язык NSIS намного проще языков программирования общего назначения,
но зато в нем все основные действия делаются одной
командой. Выучить этот язык можно за один день. Если его возможностей не хватает, можно
написать плагин. Несколько плагинов входят в комплект. Например,
реализовать splash-screen можно с помощью двух разных плагинов:
splash и advsplash. Действия, выполняемые деинсталлятором, тоже
необходимо явно прописать в скрипте.

Резюме

Подходя к вопросу о создании инсталлятора философски, можно утверждать,
что самый гибкий способ его создания — это написать его на С++. Однако,
наилучшее соотношение между гибкостью и удобством обеспечивает
NSIS. Когда не лень немного поработать ради удобства юзера это, имхо, NSIS is
the best. Если нужно за минуту создать дистрибутив для крупного проекта,
то Installer2Go будет наилучшим вариантом. Ну а если работать вообще
лень, юзай RAR 🙂

Оставить мнение

Check Also

Кеш-атаки по сторонним каналам. Что произошло в области утечек на аппаратном уровне за последние два года

Несмотря на то что до 2016 года существовало лишь несколько публикаций о кеш-атаках на сма…