Создание инсталлятора

Денис Колисниченко (dhsilabs@mail.ru)

Ни один серьезный продукт не обходится без инсталлятора – специальной программы, которая распакует дистрибутив, скопирует файлы твоей программы в выбранный пользователем каталог, создаст программные группы, внесет необходимые изменения в реестр, а также установит и зарегистрирует необходимые твоей программе библиотеки, если это необходимо.

Выбираем софт

Ясно, что своими руками писать инсталлятор мы не будем, поскольку это лишние затраты времени, которые никто не оценит. Разве что у тебя настолько уникальная программа, что ни один инсталлятор не сможет ее правильно установить, поскольку «не знает» всех ее особенностей. В этом случае данная статья не для тебя, поскольку в ней будут рассмотрены популярные стандартные решения для создания инсталляторов, а именно – InstallShiled для Delphi, Visual Studio Installer, Setup Factory и InnoSetup. Конечно, твой выбор не ограничивается только этими программами, но они были выбраны как одни из самых лучших в своем классе.

Скорее всего, ты когда-нибудь использовал одну или несколько программ для создания инсталляторов. Если ты использовал две-три или более таких программ, то, наверное, заметил, что бывают эти программы трех типов «автоматизированные», «ручные» и «полуавтоматизированные». Первые представляют собой мастер (или его пошаговое подобие с возможностью выбирать шаг создания инсталлятора), создающий проект инсталлятора. Примером такого типа программ может послужить InstallShield для Delphi. Второй тип программ подразумевает создание разработчиком (то есть тобой) специального скрипта, на основании которого будет создан инсталлятор. Скрипт описывает этапы установки программы и их последовательность. Примером второго типа программ может послужить не рассматриваемая в статье программа WISE. Третий тип программ – это своеобразный симбиоз первого и второго типов. Программа третьего типа обладает собственным мастером, который «пишет» скрипт. Ты можешь откомпилировать этот скрипт сразу или немного его изменить, подправив, например, ключ реестра или другую информацию, а потом уже компилировать. Большинство современных программ для создания инсталляторов именно третьего типа.

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

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

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

Install Shield

А теперь перейдем к рассмотрению вышеупомянутых программ. Начнем с Install Shield. Данная программа абсолютно бесплатна и ты сможешь ее найти на любом компакте с Delphi, желательно чтобы версия Delphi была посвежее – на новом компакте версия Install Shield тоже будет относительно свежая. Если компакта под рукой нет, ты всегда сможешь «стянуть» ее с сайта Borland. Вот что выходит в «обязанности» этой программы:

  • Создание стандартных диалогов инсталлятора
  • Создание нескольких типов установки (например, Standard, Compact и Custom)
  • Удобная работа с реестром (ты можешь указать, какие изменения в реестре нужно сделать при установке программы)
  • Удобная работа с библиотеками
  • Поддержка BDE – если твоя программа работает с BDE, тебе не нужно ни о чем волноваться: просто выбери BDE и InstallShield включит его в состав твоего дистрибутива, также будет нужным образом настроен BDE – будут созданы все необходимые аллиасы
  • Создание ярлыков, папок в меню Пуск
  • Поддержка носителей разного размера – от Floppy до DVD

Это, конечно, не все функции программы, но основные функции как говорят «учтены». Использовать InstallShield очень удобно, если твоя программа использует BDE. Во всех остальных программах BDE тебе придется описывать «вручную», что, мягко говоря, не удобно. Даже если в InstallShield нет очень нужной тебе функции, это с головой компенсируется поддержкой BDE. Ты даже себе не представляешь от какой головной боли ты избавишься, если будешь использовать InstallShield для установки и конфигурирования BDE.


InstallShield

Visual Studio Installer

Visual Studio Installer – это бесплатная утилита от Microsoft, предназначенная для создания инсталляторов для программ, написанных с помощью Visual Studio. Программа доступна в двух версиях – 1.0 (для Win 98) и 1.1 (для Win ME, 2000, XP). Программа доступна по адресу:

http://msdn.microsoft.com/vstudio/downloads/tools/vsi11/default.asp

Перед установкой программы убедись, что у тебя установлен Visual Studio Service Pack 3.

Главное преимущество Visual Studio Installer связано именно с самим Visual Studio. Если твоя программа написана на Visual Basic или Visual C, Visual Studio Installer сам «пропишет» в проекте инсталлятора все нужные библиотеки, которые потом будут «скомпилированы» в дистрибутив. Кроме этого Visual Studio Installer ничем особенно не выражается – программа как программа.

Setup Factory (http://www.setupfactory.com)

Setup Factory – это коммерческий продукт, предназначенный для создания инсталляторов. Данный продукт стоит немалых денег – за седьмую версию просят 395 долларов. Ясно, что никто из нас эти деньги платить не собирается, но все равно сумма говорит за себя. Дистрибутив Setup Factory 7.0 «весит» 18 Мб и постоянно доступен для загрузки :). Программа может работать под управлением Windows 95/98/Me/NT/2000/XP/2003 Server. «Конек» Setup Factory, который будет непременно оценен пользователем, это темы диалогов. Программа содержит по умолчанию более 20 различных тем стандартных диалогов инсталлятора, поэтому твой инсталлятор не будет похож на инсталляторы конкурентов.

Setup Factory – это программа третьего типа, то есть мастер + возможность редактирования сценария, хотя больше ориентирована именно на создание сценария вручную. В этом случае тебе открываются более 250 разных функций программы, которые недоступны при использовании мастера.

Основные функции:

  • Создание единственного файла дистрибутива – большого и огромного setup.exe, конечно, если тебе нужно разбить дистрибутив на дискеты или компакт-диски, программа сделает это.
  • Поддержка серийных номеров, в основе которых лежит всем известный алгоритм MD5
  • Поддержка дат окончания действия дистрибутива (очень полезно для shareware- продуктов)
  • Поддержка редактирования реестра
  • Поддержка различных языков
  • Создание ярлыков и программных групп
  • Поддержка проектов Visual Basic
  • Отчеты о проекте выводятся в формате HTML
  • Полный uninstaller
  • Проверка правописания
  • Автоматический («тихий») режим установки – когда пользователю не задается вопросов, а программа устанавливается сразу после запуска setup.exe


Setup Factory

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

Inno Setup – это бесплатная программа для создания инсталляторов, причем ее исходный код (написана на Delphi) доступен в Сети.

Основные функции программы:

  • Поддержка всех 32-х битных версий Windows – Win 95, 98, ME, NT 4.0 SP6, 2000, 2003, XP
  • Программа может «упаковать» весь дистрибутив в единственный файл setup.exe или разбить дистрибутив на диски, если это нужно
  • Различные типы установки: Полная, Минимальная, Выборочная
  • Полный uninstaller
  • Дистрибутив обычно сжимается методом сжатия 7-Zip LZMA
  • Инсталлятор может сравнивать версию файлов, заменять уже установленные файлы с более старой версией, регистрировать DLL/OCX и библиотеки типов, а также устанавливать шрифты
  • Создание ярлыков и программных групп
  • Работа с реестром и INI-файлами
  • Поддерживается редактирование созданного мастером сценария
  • Поддержка многоязыковых инсталляций
  • «Тихая» установка и удаление программы

Программа обладает всеми необходимыми функциями, Inno Setup – очень простой и удобный инсталлятор. Кроме того, это универсальный инсталлятор, он не привязывается ни к Delphi, ни к Visual Studio. Плохо это или хорошо, зависит от твоей программы. Лучше, конечно, чтобы InnoSetup поддерживал BDE и библиотеки Visual Studio, но пока этого нет.

Какую программу выбрать?

Ты не знаешь, какую программу выбрать? По началу используй стандартный инсталлятор, который «идет в нагрузку» с твоей IDE. Если ты пишешь на Delphi, попробуй сначала использовать InstallShiled, а потом уже пробовать другие инсталляторы. Если же ты пишешь на Visual C/Visual Basic – используй Visual Studio Installer.

Если возможностей стандартных программ тебе будет не хватать, попробуй сначала InnoSetup, а потом SetupFactory. Единственный случай, когда у тебя не будет выбора – это, если твоя программа использует BDE – тогда намного рациональнее использовать InstallShield.

InnoSetup: создание дистрибутива

Попробуем создать дистрибутив с помощью InnoSetup. Программа не использует BDE, поэтому весь дистрибутив будет состоять всего из четырех файлов: sto.exe, sto.chm, sto.ini, vincheck.exe

Запускаем InnoSetup и выбираем Create a new script file using the Script Wizard.


InnoSetup: создание нового сценария

Появится окно мастера, в котором нужно будет ввести информацию о программе:


InnoSetup: базовая информация о программе

Следующий шаг мастера – это выбор каталога для установки программы. Выбор небольшой:

  1. Program Files directory – программа будет установлена в каталог Program Files на одном из логических дисков
  2. (Custom) – по твоему усмотрению

Каталог для твоей программы, который будет создан в каталоге Program Files, задается в поле Application directory name. Обычно он устанавливается по имени программы. По умолчанию включена опция Allow user to change the application directory, позволяющая пользователю изменять каталог установки. За исключением редких случаев выключать ее не нужно.


InnoSetup: выбор каталога для установки

Теперь нужно выбрать файлы, которые нужно включить в состав дистрибутива. В поле Application main executable file указывается основной исполнимый файл приложения. Потом с помощью кнопок Add files(s)/Add directory добавляются нужные файлы/каталоги.


InnoSetup: добавление файлов

Кнопка Edit позволяет подправить параметры файла, а именно изменить каталог назначения файла – больше ничего полезного она не делает. В качестве каталога назначения доступны следующие каталоги:

  • Application directory – каталог приложения, то есть каталог, в которой устанавливается программа
  • Program Files directory – каталог Program Files
  • Common Files directory – каталог Common Files
  • Windows directory – каталог %WINDIR%
  • Windows system directory – каталог %WINDIR%\System
  • Setup source directory – каталог, в котором находился файл инсталлятора setup.exe
  • System drive root directory – корневой каталог системного диска, например, C:\
  • Common Startup folder – общая папка автозагрузки (программа будет запускаться автоматически для всех пользователей)
  • User Startup folder – пользовательская папка автозагрузки
  • Custom – на твое усмотрение

В поле Destination subdirectory можно указать подкаталог каталога назначения.


InnoSetup: редактирование параметров файла

Следующий шаг – позволяет указать имя создаваемой программной группы, а также какие ярлыки нужно создавать.


InnoSetup: программная группа и ярлыки

Жалко, что мастер не позволяет создавать ярлыки для отдельных файлов, поэтому, чтобы в программной группе было больше ярлыков выбери создание ярлыка для твоего сайта (Internet shortcut), а также ярлыка для uninstaller’а. Можно, конечно, подправить сценарий установки, но лучше, если бы мастер программной группы был более функциональным, например, как в Install Shield.

После создания программной группы мастер предложит указать файл лицензии и файлы, которые будут отображены до и после инсталляции. Следующий шаг очень важен – ты можешь указать другой компилятор, выбрать имя для инсталлятора (обычно setup), выбрать пиктограмму для setup.exe, а также установить пароль для запуска setup.exe.


InnoSetup: параметры компилятора

Все, что тебе осталось, это нажать кнопку Finish. Затем программа спросит, нужно ли откомпилировать сценарий прямо сейчас – не нужно, лучше просмотри код сценария.


InnoSetup: код сценария

Разобраться с только что созданным сценарием не сложно, тем более что, прочитав справку, ты сможешь не только понять, что там написано, но и усовершенствовать сценарий.

Теперь нажимаем кнопку Run или нажимаем F9, наш сценарий будет откомпилирован и запущен:


InnoSetup: созданный инсталлятор

Смотрим протокол, чтобы найти только что созданный setup.exe. Протокол отображается в нижней части окна программы.

[10:09:15]   *** Setup started
[10:09:15]   Setup version: Inno Setup version 5.0.8
[10:09:15]   Original Setup EXE: E:\Program Files\Inno Setup 5\Output\setup.exe
[10:09:15]   Setup command line: /SL4 $10038E "E:\Program Files\Inno Setup 
5\Output\setup.exe" 679818 51712 /DEBUGWND=$102E2 
[10:09:15]   Windows version: 5.01.2600 SP1  (NT platform: Yes)
[10:09:15]   User privileges: Administrative
…

Суммарный размер четырех файлов дистрибутива – 2.7 Мб, размер файла setup.exe – чуть больше 900К. Вполне приемлемо, не так ли?

InstallShield

О создании инсталлятора с помощью InstallShield ты можешь прочитать на моем сайте: http://dlws.narod.ru/linux/inst/instsh.html

Если тебе нужен компактный инсталлятор, ты можешь написать его на ассемблере, прочитать можно тут http://dlws.narod.ru/linux/asm/asm-ins.html

Все твои вопросы и комментарии рад буду выслушать по адресу dhsilabs@mail.ru


Cчетчик Linux coutner
Hosted by uCoz