Inno setup примеры. Создание установочного дистрибутива программы

Часть 1

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

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

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

  • Среда разработки, интерфейс, поддержка сценариев
  • Работа с проектом, типы создаваемых пакетов, возможности импорта проектов из других сред разработки
  • Пользовательские опции инсталлятора: поддержка языков, профилей и другие опции
  • Поддержка расширений
NSIS (Nullsoft Scriptable Install System)

NSIS - бесплатный и широко известный инструментарий для создания инсталляционных пакетов в среде Windows. Отличительные особенности - компактность, масштабируемость, поддержка плагинов и локализаций. Из других возможностей NSIS: поддержка сценариев, различных вариантов установки (включая несколько проектов внутри одного инсталлятора), создание веб-инсталляторов.

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

Синтаксис языка NSIS достаточно прост и удобен для чтения, основная документация к нему доступна . Более того, в комплекте с программой содержится большое количество примеров (файлы формата nsi доступны в папке Examples). Для редактирования nsi-сценариев пригоден любой редактор кода, где без особых усилий можно включить подсветку синтаксиса. Множество задач сразу унифицируется, если использовать специальный плагин для IDE Eclipse, либо . Venis представляет собой интуитивную визуальную среду для создания сценариев.

Удобно работать с NSIS в связке и с другими программами, например, (см. ниже).

Если возникает необходимость расширить возможности инсталлятора, можно добавить определенные функции. Плагины пишутся на C, C++, Delphi или других языках. Готовые примеры расширений доступны . Функции разнообразны: от визуальных эффектов инсталлятора до создания патчей и обращения к Windows API.

Скомпилировать инсталлятор можно с помощью инструмента makensis, предварительно выбрав тип компрессии - ZLib, BZip2 или LZMA. Кроме того, сам по себе инсталлятор занимает немного места - всего 34 КБ.

Графический интерфейс инсталлятора доступен в одном из двух вариантах исполнения - Classic или Modern. Более функциональный Modern (на данный момент используется его версия 2.0) позволяет создавать страницы мастера установки с использованием текста, шрифтов, изображений, диалогами, опциями и др. На данном этапе помощь окажет программа . Она позволяет быстро конструировать интерфейс, а полученный результат сохранять в формат nsdinc, который затем несложно интегрировать в.nsi-скрипт.

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

Inno Setup

Inno Setup - бесплатный инструментарий для создания инсталляторов на базе сценариев. Среди главных особенностей продукта - работа со всеми версиями ОС Windows (Windows 2000 и выше), расширенная поддержка 64-битных приложений, настраиваемые типы установки, встроенный препроцессор и мощный язык сценариев на основе Pascal.

Сценарии имеют структуру, характерную конфигурационным файлам ini-формата, поэтому код вполне хорошо читаем и удобен в редактировании. Документ разделен на секции, и каждая из них отвечает за определенную задачу инсталлятора соответственно. Всего имеется два типа секций - с параметрами и «директива-значение».

Разработчикам, знакомым с Pascal, будет на руку тот факт, что Inno использует «родственный» язык - . Сценарии отвечают за добавление новых опции, создание интерфейса, вызов файлов или библиотек, настраиваемые действия (custom actions) и т. д. В рабочей папке Inno Setup находятся примеры скриптов (также доступны в меню компилятора). По умолчанию в Inno Setup входит компилятор сценариев Compiler IDE. Для быстрого старта рекомендуется также установить Inno Script Studio. Этот редактор проектов входит в редакцию QuickStart Pack, скачать ее можно . Для упрощения задач может быть полезен визуальный редактор сценариев - .

Самый простой вариант создания инсталлятора - обратиться к пошаговому мастеру настройки Inno Script Studio. Здесь указывается информация о продукте, координаты программы, файл лицензии и другие данные, языки локализации, опции компилятора. Впоследствии проект доступен для компиляции, отладки либо модификации полученного сценария в окне редактора.

Редактор Inno Script Studio доступен на русском языке. Значительно проще настраивать проект последовательно, переходя по секциям, а не создавая сценарий с нуля. При добавлении нового элемента изменения вносятся в код сценария, синтаксис подсвечивается, код соответствующим образом разбит на секции (, , …).

Разделы редактора не сгруппированы, но структура вполне узнаваема. Логически их можно разделить следующим образом:

  • Содержимое дистрибутива: Файлы, Каталоги, Иконки, Файлы INI, Реестр
  • Сообщения и пользовательские сообщения,
  • Пользовательские опции: Типы, Компоненты, Задачи, Языки
  • Действия: Выполнить, Удалить перед установкой, Выполнить перед деинсталляцией, Удалить после деинсталляции
  • Код сценария: Код Паскаля, Этапы предкомпиляции, Этапы посткомпиляции

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

Из других особенностей Inno Setup - тихая инсталляция и деинсталляция. Пользователю доступны различные типы установки и локализации на выбор. Установщик может быть зашифрован, содержать цифровую подпись либо защищен паролем. К дистрибутиву может применяться bzip2- или LZMA/LZMA2-компрессия. Интерфейс - в стиле 2000/XP, иных вариантов не предусмотрено.

Резюме . Inno Setup - ближайшая альтернатива NSIS. Позволяет задействовать как мощный язык сценариев, так и удобный и гибко настраиваемый редактор Inno Script Studio, доступный практически «из коробки».

IzPack

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

Главные особенности IzPack: XML-синтаксис, интеграция с различными инструментами компиляции, простой и гибкий API-интерфейс, возможность локализации.

Среди особенностей инсталляторов, созданных средствами IzPack, - небольшой размер и модульность. В основе дистрибутива лежит XML-документ, где указываются все необходимые спецификации, определяется функциональность продукта. Впоследствии конфигурационный файл обрабатывается любым удобным способом, для этого используется командная строка или . Для наращивания функциональности инсталлятора могут быть задействованы IDE среды, такие как Eclipse, IntelliJ IDEA или Netbeans. Для составления конфигурационного файла подойдет любой редактор кода.

В XML-документе указывается информация о проекте (), интерфейс (), локализации (), файлы (), ресурсы (), панели (), содержимое (- может быть упаковано в raw, gzip, bzip2) и др. Что касается java, в IzPack есть возможность применения действий (custom acrions) и переменных - встроенных, пользовательских и переменных среды (см. и ).

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

Для создания самораспаковывающихся модулей применяется метод 7-Zip SFX, использующий возможности известного архиватора. Для Mac OS также доступна оболочка под названием izpack2app.Кроме того, есть возможность создания веб-инсталлятора, для этих целей присутствует оболочка izpack2jnlp, использующая возможности Java Web Start. IzPack поддерживает опцию тихой установки.

Резюме . IzPack - одна из немногих кроссплатформенных систем для создания инсталляторов. Процесс написания конфигурации, компиляции и отладки удобен за счет интеграции со средами разработки, несложен в освоении. Из недостатков следует отметить значительно устаревший (и не оригинальный - native) вид получаемого инсталлятора.

Excelsior Installer

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

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) потребуется расширение .

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

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


InstallShield предоставляет собой среду для настройки проекта, создания сценария и конечного релиза дистрибутива - как в MSI-, так и в различных виртуальных форматах. Это одно из наиболее известных решений в области создания инсталляторов для платформы Windows. Существует три редакции комплекса - Express, Professional и Premier. Последняя из них считается наиболее функциональной (см. ). Не так давно был выпущен обновленный пакет InstallShield 2014, о котором далее пойдет речь.

Проекты могут быть импортированы из Microsoft Visual Studio или созданы на основе имеющихся шаблонов. При создании проекта с нуля на выбор доступен один из нескольких типов:

  • Базовый MSI-проект - используется технология Windows Installer, доступен вызов InstallScript-, VBScript-, Jscript-скриптов, exe- и dll-файлов.
  • Проект InstallScript - InstallScript используется для контроля установки
  • InstallScript MSI-проект - совместное использование Windows Installer и InstallScript для развертывания установки.

В свою очередь, для каждого из указанных типов имеется множество дополнительных проектов. В целом, кроме инсталляторов, комплекс позволяет создавать модули объединения (Redistributable), а также модификаторы (Transform).

Есть несколько вариантов начала работы в InstallShield, один из них - воспользоваться пошаговым мастером настройки (Project Assistent), который запускается автоматически при создании нового проекта. Более детальная конфигурация осуществляется в окне дизайнера установки. Настройки сгруппированы следующим образом:

  • Информация об установке (Installation Information) - таблица с общей информацией о проекте. Здесь, в частности, можно выбрать язык инсталлятора по умолчанию. Всего InstallShield поддерживает более 30 локализаций.
  • Organization (Организация) - включает в себя дизайн установщика, список функций и компонентов, которые будут представлены пользователю на выбор при установке.
  • Application Data (Данные приложения) - данные приложения, такие как файлы, модули и зависимости. Часть компонентов может быть установлена локально, другие необходимо скачивать во время установки.
  • System Configuration (Системная конфигурация): ярлыки, ресурсы, конфигурационные файлы, сервисы и др.
  • Server Configuration - конфигурация сервера в соответствии с требованиями инсталлятора. Сюда входят настройки IIS, сервисы компонентов, SQL-скрипты для SQL Server, Microsoft Windows Azure, MySQL, или Oracle. Используя Microsoft Web Deploy, можно скачивать зависимости, запускать скрипты, выполнять задания на сервере.
  • Behavior and logic (Поведение и логика) - скрипты, действия, файлы для инсталляции и др.
  • User Interface (Пользовательский интерфейс) - дизайн инсталлятора, включая оформление диалогов, изображения, текст и прочие данные. На выбор доступны темы оформления, очень гибкая настройка уже имеющихся диалогов вплоть до перетаскивания каждого элемента. Построчный редактор позволяет работать с локализациями.
  • Media - управление переменными окружения, настройка обновлений и релизов продукта, патчи.
  • Дополнительные инструменты (Additional Tools): сканнер файловых зависимостей, MSI-отладчик и прямой редактор, предназначенный для просмотра структуры проекта в виде таблицы.

В качестве скриптового языка для создания инсталляторов выступает InstallScript, имеющий сходство с языком C и позволяющий создавать пользовательские действия (Custom Actions). Тем самым, скрипты помогают при вызове dll-библиотек, запуске приложений, VBScript-, Jscript-, InstallScript- скриптов и мн. др.

Для правки кода в InstallShield используется редактор с подсветкой синтаксиса и автодополнением. Кроме того, для создания действий может использоваться мастер пользовательских действий (Custom Action Wizard).

Резюме . Бесспорно, InstallShield является одним из лидирующих продуктов на рынке инсталляционных комплексов. Его наиболее сильная сторона заключается в гибкости, что позволяет создавать многочисленные типы инсталляторов для развертывания на компьютере или сервере, с поддержкой сценариев. От домашнего использования может отпугнуть достаточно высокая цена лицензии для каждой из редакций, начиная с InstallShield Express ($649).

Setup Factory


Компания Indigo Rose Software Design выпускает продукты для разработки, начиная с 1991 года. Среди них - MSI Factory, TrueUpdate, Visual Patch и смежные решения. Setup Factory - еще один комплекс, позволяющий создавать полнофункциональные скриптовые инсталляторы - но, в отличие от MSI Factory, независимые от MSI. При этом полученный дистрибутив может быть запущен под любой версией Windows, начиная с XP. Доступны альтернативные варианты распространения - установка с CD- или DVD-носителя, веб-инсталлятор с возможностью скачивания зависимостей. Поддерживаются форматы компрессии LZMA/LZMA2 и файлы размером более 2 ГБ.

Инсталляционная среда Setup Factory использует простой, гибкий и мощный скриптовый язык, основанный на языке LUA. Это позволяет задействовать условия, функции, переменные, таблицы и другие средства при написании сценария.

Для создания инсталлятора предусмотрен традиционный пошаговый мастер. Он состоит из следующих этапов работы с проектом: заполнение общей информации об инсталляторе, выбор архитектуры, расположения файлов, стиля и темы оформления, языков установки, состав библиотек.

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

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

Для составления действий (actions), пользователям предоставлены надстройки Action Wizard и Code Wizard. Всего доступно около 360 скриптов, при этом, каждое действие тщательно задокументировано в хорошо структурированной справке. Параллельно с этим, основная работа с кодом ведется в окне редактора. Подсветка кода и нумерация строк в наличии, для проверки сценария на ошибки можно использовать встроенные средства Setup Factory.

Функциональность инсталлятора расширяется за счет ресурсов. В соответствующем разделе Resources можно указать зависимости (.NET, Visual Basic, DCOM, JET, MDAC, Windows Installer, Visual C++ и пр.), установить глобальные функции и подключить плагины для работы с буфером обмена, архивами, FTP. Кроме того, на форуме разработчика выложены дополнительные расширения.

Удобство редактора проектов заметно при работе с локализациями: можно не только добавить язык интерфейса, но также импортировать или экспортировать данные в XML. Каждый аспект инсталлятора поддается настройке и доступен в режиме предосмотра: диалоги, подписи к кнопкам, форматирование текста, шрифты и мн. др. Внешний вид меняется с помощью предустановленных тем. Причем используются не только «родные» стили (Windows 7, Windows 8 и др.), но и различные MSStyles-модификации, которые можно скачать отдельно.

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

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

SetupBuilder

SetupBuilder относится к инструментам для быстрой разработки и настройки приложений. С его помощью можно создавать скриптовые инсталляторы с компактным ядром размером в 160 КБ. Это могут быть веб-, CD/DVD-дистрибутивы, работающие под любой ОС Windows 9.x и выше. Среди ключевых особенностей SetupBuilder значится сертифицированная поддержка Windows 8 и Windows Server 2012 - что гарантирует совместимость и корректность установки.

Следует отметить, что есть две редакции приложения на выбор: для разработчиков (Developer) и профессиональная версия (Professional). Перечень возможностей существенно между этими редакциями, с той особенностью, что более функциональна SetupBuilder Developer. Она включает в себя графический редактор диалогов, отладчик, компилятор, генератор обновлений и прочие компоненты.

Создавая проект с нуля, можно воспользоваться мастером, однако он, по сути, мало что решает. Редактор проектов состоит из следующих разделов: Project Definition (Свойства проекта), Installation Details (Установки), Setup Appearance (Внешний вид), Setup Requirements (Зависимости) и Script Logic (Сценарий).

Project Definition - настройка общей информации, переменных, профилей установки. Следует отметить подраздел Web-deployment (Веб-развертывание), где можно активировать функции веб-обновления или веб-инсталляции продукта. Также, один проект может включать в себя несколько версий приложения (Releases).

Installation Details - определение содержимого инсталлятора, включая файлы, папки, ключи реестра, сервисы, драйверы, переменные окружения и прочие элементы.

Setup Appearance - настройка оформления. Для определения внешнего вида инсталлятора - включая диалоги, текстовое содержание, кнопки, поля и т. д. - используется визуальный редактор. Прочие настройки, такие как локализация и стиль инсталлятора, указываются отдельно в настройках проекта (Project - Settings).

Setup Requirements - проверка зависимостей, прав доступа, системных и прочих файлов.

Script Logic - доступ к сценарию инсталлятора. Для работы со скриптами используется собственная IDE-среда, также имеется встроенный визуальный дебаггер. В SetupBuilder задействован скриптовый язык SetupScript, и, в случае с редакцией Developer, прилагается около 500 предустановленных функций. Кроме использования SetupScript, во время установки можно обратиться Windows API или подключить необходимые DLL-библиотеки.

За безопасность отвечает функция SetupProtect, доступная в SetupBuilder Developer. Она позволяет использовать серийные номера и ключи подписки на определенный период работы. В дополнение, доступна цифровая подпись дистрибутива.

Резюме . SetupBuilder позволяет создавать инсталляторы, веб-инсталляторы и обновления, используя скрипты и возможности Windows API. Из наиболее примечательных сторон данного комплекса - тесная поддержка Windows, визуальные редактирование и отладка проекта, многоязычность и защита от несанкционированного использования.

Visual Installer 2014

Visual Installer - комплекс для создания windows-инсталляторов в визуальном режиме и при поддержке сценариев. Создаваемые дистрибутивы могут распространяться на CD/DVD-, USB-носителях и через интернет, в виде самораспаковывающихся архивов.

Есть две версии Visual Installer - стандартная и профессиональная. В последнем случае, в состав дополнительно включены менеджер проектов и SamLogic Selector - утилита для определения системных зависимостей при запуске. Кроме того, профессиональная версия позволяет работать с 64-битными приложениями и предполагает работу со сценариями.

Вначале Visual Installer предлагает указать формат распространения дистрибутива и установить базовые настройки. Как вариант, можно импортировать в программу имеющиеся проекты из сред Visual Studio / Visual Basic и продолжить работу, основываясь на существующем проекте.

Далее работа осуществляется непосредственно в редакторе. В нижней его части доступны вкладки для навигации между разделами. В разделах File list, Registry, INI Files и Components определяется структура инсталлятора, включая файлы, директории, ключи реестра и другие компоненты. Отдельно можно выделить визуальную составляющую. Так, при настройке мастера установки предоставляется выбор диалогов (вкладка Dialog Boxes): ввод ключа лицензии, выбор компонентов, текст лицензии и т. д. Дизайн установщика определяется в соответствующей вкладке Design: это цвет, фон, шрифты, изображения и звук.

Дополнительные опции инсталлятора доступны в разделе меню Specials. Здесь можно указать зависимости (версия операционной системы и.Net Framework), без которых установка будет невозможна. Также доступны такие опции инсталлятора как тихая установка, цифровая подпись и парольная защита.

Visual Installer предусматривает создание многоязычных дистрибутивов. Управлять локализациями, по сравнению с другими инсталляционными комплексами, не очень удобно: все файлы хранятся в LNG-формате во внешнем файле, который необходимо редактировать вручную в текстовом редакторе.

Сценарии, доступные в Pro-версии, могут быть задействованы перед установкой и после ее завершения. Скриптовый язык позволяет использовать переменные и команды, описанные в справочнике, управлять процессом создания файлов, папок, ярлыков, других компонентов, запускать внешние MSI- и прочие программы. Для редактирования сценариев используется простой редактор с поддержкой автодополнения IntelliSense.

Напоследок, нужно отметить следующий момент: в диалогах некорректно отображается кодировка и не все активные кнопки срабатывают при нажатии. Данная проблема наблюдается в Windows 8.

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

Сводная таблица
Приложение NSIS (Nullsoft Scriptable Install System) Inno Setup IzPack Excelsior Installer WiX Toolset Clickteam Install Creator Actual Installer CreateIntall Advanced Installer InstallBuilder InstallMate InstallShield Setup Factory SetupBuilder Visual Installer
Разработчик Nullsoft Jordan Russell, Martijn Laan Julien Ponge и др. Excelsior Microsoft Clickteam Softeza Development Novostrim Caphyon LTD BitRock Tarma Software Research Flexera Software Indigo Rose Lindersoft SamLogic
Платформа Windows, POSIX Windows Windows, Linux, MacOS + Windows Windows Windows Windows Windows Windows Windows, Linux, Mac OS + Windows Windows Windows Windows Windows
Цена бесплатно бесплатно бесплатно бесплатно бесплатно €49,00 / €119,00 (Pro) $89 бесплатно (Free) / 2000 руб. (полная версия) от $399 от $995 от $89 от $649 $395 $299 (Developer) / $169 (Pro) $129
Язык сценариев NSIS Inno Setup Script, Pascal Java Windows Installer Gentee VBScript, Jscript Java, PHP, Perl, Python, Ruby, C/C++, .NET/Mono VBScript, Jscript, PowerShell InstallScript, PowerShell LUA SetupScript Visual Installer
Тип установщика EXE EXE JAR EXE MSI EXE EXE EXE EXE, MSI, JAR EXE EXE, MSI EXE, MSI EXE EXE, MSI EXE
Редактор проектов + (надстройки) + (надстройки) + (надстройки) + + (надстройки) + + + + + + + + + +
Импорт проектов Eclipse, IntelliJ IDEA, Netbeans, Apache Ant NSIS Visual Studio Visual Studio, Eclipse, Visual Basic и др. Visual Studio, Visual Basic и др. Visual Studio, Windows Installer и др. Visual Basic, .NET, Windows Installer и др. .NET Visual Studio, Visual Basic
Мультиязычность + + + + + + + + + + + + + +
Типы компрессии ZLib, BZip2, LZMA BZip2, LZMA/LZMA2 raw, gzip, bzip2, 7-Zip SFX не указано MSZIP zipper/ differentiator не указано CAB, 7-Zip LZMA LZMA LZMA/LZMA2 Zlib LZMA/LZMA2 LSZip ZIP
Серийный номер / парольная защита + + + (Pro) + + + + + + + +
Выбор компонентов при установке + + + + + + + + +
«Тихая» установка + + + + + + + + + + + + + +
Командная строка + + + + + + + + + + + + + +
Расширения + + + + + + + + +

Большинство пользователей, которые не особо знакомы с компьютером, интересуются, что собой представляет Setup и каковы его функции. Порой ответить на этот вопрос достаточно просто. Однако во многих случаях с этим компонентом связано много проблем на компьютере.


Таким образом, следует разобраться, что такое Setup и понять, что предпринять, если возникли неполадки с данным файлом. Стоит отметить, что это не так уж и сложно, как может показаться на первый взгляд.

Языковые нормы

Прежде всего необходимо понять, что это перевод слова. Довольно часто именно он оказывает помощь пользователю, дает возможность вникнуть в смысл операции. Что представляет собой Setup? Чтобы получить ответ на данный вопрос, следует обратиться к английскому словарю. Это слово в переводе означает «установка» (существительное) или «устанавливать» (глагол). Другими словами, что-то, что выполняет установку на компьютер. Стоит отметить, что без этого компонента трудно представить себе работу операционной системы. Неужели программа Setup настолько важна? Это следует выяснить. Особенно, когда компьютер систематически выдает различные ошибки.

Для компьютера Что такое Setup?

Кроме главного перевода, существуют еще и компьютерная трактовка этого приложения. Она наиболее понятна для современных пользователей. Стоит отметить, что «Сетап» означает программу, предназначенную для установки чего-либо. Основным ее компонентом является Setup.exe. Другими словами, это установочный или исполняемый файл. То, что осуществляется на компьютере после запуска. Чем характеризуется Setup? К примеру, можно выделить среди исполняемых документов различные приложения, игры (их установку), запуск настроек. Также существует и Bios Setup. Это наименование настроек, которые дают возможность работать с компьютером. Другими словами, с популярным всем «Биосом».

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

Правила обращения

Стоит отметить, что файл Setup.exe нуждается в особом обращении. Особенно, когда речь идет об установке игры, которая скачана из интернета. Следует разобраться, что же помогает в данном непростом деле. Сначала необходимо просто закрыть все сторонние приложения, чтобы избежать возможных сбоев. Далее можно переходить в папку, содержащую исполняемый файл. Для запуска потребуется два раза кликнуть по «Setup.exe». При установленной операционной системе Windows 7 и выше, у пользователя компьютер спросит разрешение начала процесса. На экране всплывет окно с главной информацией об изготовителе-создателе, а также о расположении документа. Там понадобится ответить «Да», чтобы выполнить запуск, или «Нет», чтобы отменить установку чего-либо.

Когда будет выполнено подтверждение, возникнет окно с простой навигацией. Сначала система поприветствует пользователя и оповестит, что будет устанавливаться. Затем нужно придерживаться всех указаний в «Инсталляторе» и завершить процесс. После этого будет установлено определенное приложение. Очень важно никогда не перемещать Setup.exe из корневой папки контента. Также не рекомендуется удалять его и удалять его даже после того, как произойдет установка на компьютер. Это может являться причиной отказа приложений от работы. Стоит отметить, что «Сетап» представляет собой еще и приложение, которое требуется не только для установки чего-либо, а также для запуска. Все ярлыки, содержащиеся на рабочем столе, которые участвуют в активации программ, в результате имеют адрес с расширением «exe».

Процесс

Среди исполняемых процессов можно иногда обнаружить «Сетап». Стоит отметить, что некоторые пользователи настораживаются при этом. Setup работает и следит за выполняемыми и запускаемыми процессами. Таким образом, он выполняет функции некого фильтра. Если его отключить, работа операционной система становится неконтролируемой. Другими словами, невозможно нормально устанавливать и запускать приложения и игры. Поэтому не нужно стараться заниматься данной самодеятельностью. Порой этот процесс занимает много компьютерных ресурсов.

Вирус

Допустим, безопасный ранее «Сетап» способен стать настоящим вирусом. В данном случае он может находиться где-то в операционной системе и шифроваться под обыкновенный исполняемый файл. Такая компьютерная зараза зачастую прикрепляется к приложениям, в которых больше всего возникает необходимость. Вирус активируется постоянно после запуска требуемой программы. Стоит отметить, что антивирус не всегда способен справиться с проблемой. Изначально обнаружить вирус, который замаскирован под «Setup.exe», достаточно тяжело. Если существуют подозрения, что компьютер заражен, придется закрыть все приложения, а также выполнить проверку системы на наличие заразы. В данной ситуации на помощь придет антивирус. Отлично справляются с «Сетапом» следующие программы:

Avast;
Nod32;
Dr.Web.

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

Шпион

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

Использовать антивирус в данном случае не всегда эффективно. Потребуется дополнительно скачать и установить специальную программу-антишпион. К примеру, SpyHunter. Она пребывает в свободном доступе и проста в использовании. Необходимо запустить приложение, а после этого начать проверку. Когда будут получены результаты, можно смело удалять угрозы. Не нужно забывать и о посещении диспетчера задач и после этого завершить процесс Setup.exe. Далее стоит перезагружать компьютер. «Сетап» вновь окажется в диспетчере, однако пугаться его также не стоит.

Таким образом, в статье был разобран вопрос, что представляет собой Setup. Как можно заметить, что это очень важный файл. Порой он способен принести много проблем. Чтобы избежать неприятностей, следует просто смотреть, что устанавливается на компьютер и скачивается. Рекомендуется всегда запускать только те процессы, которые заслуживают доверие.

Для удобства установки ваших программ на компьютеры пользователей вам понадобится создание дистрибутива. Сегодня я хочу рассказать об очень мощном и бесплатном инструменте для создания дистрибутивов для ОС Windows – Inno Setup.

Об Inno Setup

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

Вот ключевые возможности инсталлятора:

      • Поддержка всех версий Windows , начиная с Windows 2000 , включая: Windows 8 , Windows Server 2012 , Windows 7 , Windows Server 2008 R2 , Windows Vista , Windows Server 2008 , Windows XP , Windows Server 2003 и Windows 2000 . При этом никакие пакеты обновлений не требуются.
      • Обширная поддержка для установки 64-битных приложений на 64-битные версии Windows . Поддержка архитектур x64 and Itanium (если используется Windows Server 2003 на Itanium архитектуре, то требуется пакет обновлений 1 или более поздний для установки 64-битного режима работы).
      • Возможность создания дистрибутива, состоящего из одного единственного EXE-файла для удобного распространения в Интернете. Разбиение на диски также поддерживается.
      • Стандартный интерфейс мастера установки в стиле Windows 2000/XP .
      • Настраиваемые типы установки, такие как Полная , Компактная , Выборочная .
      • Широкие возможности деинсталляции.
      • Установка файлов: Включает интегрированную поддержку сжатия deflate , bzip2 и 7-Zip LZMA/LZMA2 . Инсталлятор может сравнивать версии файлов, заменять используемые файлы, использовать подсчёт общих файлов, регистрировать DLL/OCX и библиотеки типов и устанавливать шрифты .
      • Создание ярлыков в любом месте, включая меню Пуск и рабочий стол .
      • Создание элементов реестра и INI-файлов .
      • Выполнение других программ до, во время и после установки.
      • Создание многоязычных дистрибутивов , включая языки с написанием слева направо.
      • Создание запароленных и зашифрованных дистрибутивов .
      • Поддержка цифровой подписи при установке и удалении.
      • Скрытая установка и удаление.
      • Поддержка Unicode .
      • Встроенный препроцессор для дополнительной настройки во время компиляции.
      • Встроенный обработчик скриптов Pascal для выполнения дополнительных действий во время установки и удаления.
      • Свободный исходный код (Borland Delphi 2.0-5.0 и 2009 ).

Большим плюсом Inno Setup является то, что его можно использовать абсолютно бесплатно даже для коммерческого использования. Хотя в качестве благодарности или для поддержки инсталлятора вы можете сделать пожертвование . Там же есть список всех, кто пожертвовал от 100 долларов.

Вот как выглядит стартовая страница стандартного мастера установки дистрибутива созданного с помощью Inno Setup .

О создание дистрибутива в Inno Setup

Создание дистрибутива с помощью Inno Setup происходит следующим образом:

1. Сначала вы создаёте скрипт Inno Setup . Скрипт Inno Setup – это текстовый файл с расширением .iss , который содержит свойства дистрибутива и набор производимых действий при установке и удалении. Скрипт может быть создан с помощью стандартного редактора Inno Setup (см. картинку) или с помощью одного из сторонних редакторов, таких как Inno Script Studio или ISTool . В этой статье я рассмотрю использование только стандартного редактора Inno Setup .

2. Затем вы компилируете скрипт, получая при этом дистрибутив.
3. После компиляции вы можете тестировать и отлаживать полученный дистрибутив, выполняя инсталляцию и деинсталляцию.

Установка Inno Setup

Чтобы создавать дистрибутивы с помощью Inno Setup , достаточно установить компилятор Inno Setup к себе на компьютер. Дистрибутив можно скачать . Ссылку на загрузку последней стабильной версии вы можете найти в секции Stable Release . На момент написания статьи последняя версия Inno Setup была 5.5.5 , см. картинку. Чтобы скачать дистрибутив, нажмите на ссылку «Random site » напротив версии с поддержкой Unicode (файл isetup-5.5.5-unicode.exe ) или без неё (ANSI версия – файл isetup-5.5.5.exe ). Для избегания проблем с отображением кириллицы лучше сразу использовать Unicode -вариант Inno Setup .

Если вы собираетесь шифровать свой будущий дистрибутив, то модуль для шифрования ISCrypt.dll вам нужно скачать отдельно в секции Encryption Module , см. картинку (ниже вы видите ссылку на исходные коды этого модуля – ISCrypt.zip ).

На этой же странице в секции QuickStart Pack вы можете найти ссылку на дистрибутивы ispack-5.5.5.exe и ispack-5.5.5-unicode.exe для установки Inno Setup вместе с Inno Script Studio , см. картинку. Inno Script Studio – это разработка сторонней компании (Kymoto Solutions ), которая предлагает вам свой удобный пользовательский интерфейс и предоставляет возможность отладки вашего инсталлятора во время выполнения. Также, этот дистрибутив предложит скачать и установить модуль шифрования ISCrypt.dll автоматически.

Кроме всего перечисленного, на странице загрузки есть секции Beta Release , для загрузки бета версий Inno Setu p, и , для загрузки исходных кодов, на которых я не буду заострять внимание.

Если вы собираетесь пользоваться более продвинутыми редакторами скрипта Inno Setup , то вам также будет интересна страница Inno Setup Third-Party Files со списком разработок сторонних компаний. Вот какие сторонние разработки мы можем использовать совместно с Inno Setup :

      • Inno Script Studio – пользовательский интерфейс и отладчик. Устанавливается с помощью дистрибутива QuickStart Pack (см. выше) или отдельным дистрибутивом, который вы можете скачать с сайта разработчика. Есть русификация.

      • Visual & Installer - платный плагин для Visual Studio (поддерживаются Visual Studio 2005 , 2008 , 2010 , 2012 и 2013 ) для создания дистрибутивов с помощью Inno Setup . Также Visual & Installer содержит мастер Graphical Installer Wizard , позволяющий создавать тематически оформленные дистрибутивы (см. примеры ).

    • Inno Download Plugin – библиотека и скрипт Inno Setup , дающие возможность скачивать файлы в процессе установки вашего дистрибутива. Есть поддержка русского языка. Поддерживаются протоколы FTP , HTTP и HTTPS .

      • InnoTools Downloader – ещё один вариант, похожий на Inno Download Plugin , тоже для загрузки файлов во время установки. Но здесь нет русификатора, и поддерживаются только FTP и HTTP .
      • VCL Styles for Inno Setup / ISSkin / Graphical Installer (последний инструмент платный) – инструменты для изменения оформления мастера установки вашего дистрибутива.

      • InnoScript – автоматически создаёт файл скрипта Inno Setup (.iss ) по файлу проекта Visual Basic (.vbp или .vbproj ). Есть русификация.

      • – создаёт дистрибутив для проекта Visual Basic из среды разработки Visual Basic 6.0 .

      • – позволяет по файлу Delphi проекта (.dpr ) или по файлу проекта библиотеки Delphi (.dpk ) создать список зависимостей необходимый для создания дистрибутива. С проектом Delphi XE3 эта утилита у меня отказалась работать.
      • Inno Setup Script #Includes – библиотека функций, которые вы можете использовать при установке. Список функций можно посмотреть .
      • Inno Setup Easy Translator – редактор языковых файлов Inno Setup (.isl ). Этот сайт не работает с 2013 года, но расстраиваться не нужно, ведь вы можете легко создавать и редактировать языковые файлы в любом текстовом редакторе.
      • UninsHs – расширение, позволяющее добавить поддержку «Repair/Modify/Remove » в ваши приложения.

Ещё в этом списке, почему то нет ещё некоторых известных разработок (список обновлён 13.04.2015 ):

      • – пользовательский интерфейс для работы со скриптом Inno Setup . Эта программа очень похожа на Inno Script Studio . Если поискать, то можно найти русификацию, см. картинку.

      • InnoIDE – ещё один пользовательский интерфейс для работы со скриптом Inno Setup . Сайт InnoIDE перестал существовать примерно в августе 2012 года (www.innoide.org), поэтому использовать эту разработку не имеет смысла. Но сохранился архив сайта, который можно посмотреть . Там же можно скачать дистрибутив. Русификацию для InnoIDE можно найти в Интернете.

      • InnoSetup Script Joiner – утилита объединяющая несколько скриптов Inno Setup в один.
      • (Inno Setup Unpacker ) - распаковщик дистрибутивов созданных с помощью Inno Setup . Консольное приложение.
      • InnoExtractor – ещё один распаковщик, но имеющий пользовательский интерфейс. Есть русификация. С моим зашифрованным тестовым дистрибутивом справился на-отлично (см. картинку). Как видите, достаёт абсолютно все файлы, в том числе и файлы используемые инсталлятором, и даже файл скрипта Inno Setup.

Собственно, после того как вы определились с необходимым функционалом, вы можете начинать установку. Здесь я рассмотрю лишь установку Inno Setup + Inno Script Studio с помощью пакета QuickStart Pack (файл ispack-5.5.5-unicode.exe ). Хотя подробно расписывать все шаги нет смысла, остановлюсь лишь на некоторых. Галочка «Download and install Inno Script Studio » должна стоять, если вы хотите установить Inno Script Studio , галочка «Install Inno Setup Preprocessor » - чтобы установить препроцессор, галочка «Download and install encryption support » - чтобы установить модуль ISCrypt.dll для шифрования дистрибутива.

Первый запуск Inno Setup Compiler

Единственное окно программы Inno Setup – это окно компилятора. Компилятор запускается из меню «Пуск». При первом запуске вы увидите приглашение предлагающее создать пустой скрипт, запустить мастер создания скрипта или открыть примеры или последние использованные файлы.

Если у вас нет опыта общения с Inno Setup , то примеры будут кстати. Давайте откроем какой-нибудь пример, нажмите кнопку «OK» и выберите один из примеров. После того как пример открылся вы можете оценить, как выглядит простой скрипт Inno Setup . Также обратите внимание, что интерфейс компилятора очень прост и весь скрипт вам нужно будет писать вручную. В вашем распоряжении здесь будет только справка и примеры.

Использование мастера для создания скрипта Inno Setup

Создавать новый скрипт Inno Setup вы можете с чистого листа или можете воспользоваться мастером создания скрипта. Для примера я сделаю дистрибутив для установки программы MyProg.exe , которая находится в папке с примерами (устанавливается вместе с Inno Setup ). При запуске программа выдаёт два окошка и завершается.

Чтобы вызвать окно мастера создания скрипта, щёлкните по пункту меню «File -> New » или в окне приветствия выберите опцию «Create a new script file using the Scrip Wizard » и нажмите «OK ». Первый экран мастера будет с приветствием. Нажмите здесь «Next > ».

На втором экране введите название приложения (Application name ), версию приложения (Application version ), издателя приложения (Application publisher ) и адрес сайта приложения (Application website ). Жирным шрифтом в мастере отмечены обязательные поля, а остальные можно сделать пустыми.

На следующем шаге вы выбираете папку для своего приложения. По умолчанию, как видно по картинке, это папка с тем же именем, что и имя приложения, и она будет создана внутри папки Program Files . Галочка «Allow user to change the application folder » позволит пользователю поменять папку в процессе установки. А при установке галки «The Application doesn’t need a folder » папка приложения вообще не будет создаваться.

Если из выпадающего списка «Application destination base folder » вы выберете «(Custom) », то в поле, находящемся чуть ниже, можно будет задать произвольный путь. Например, чтобы папка вашего приложения была на системном диске, нужно указать «{sd} ».

Как видите, для указания системного диска я указал «{sd} » вместо «C: », ведь на разных компьютерах системный диск может быть разным. Вообще в Inno Setup вы будете очень часто использовать константы типа «{sd} ». Все константы окружены фигурными скобками и их очень много. Вот полный список констант с кратким описанием (полное описание смотрите в разделе «Constants » в справке):

Константы директорий:

      • {app} – директория приложения, например, «C:\Porgram Files\Моя Программа».
      • {win} – директория Windows, например, «C:\WINDOWS».
      • {sys} – директория System32, например, «C:\WINDOWS\SYSTEM».
      • {src} – директория, в которой находятся файлы дистрибутива (это временная папка с распакованными файлами дистрибутива).
      • {sd} – системный диск, например, «C:».
      • {pf} – директория приложений, например, «C:\Program Files (x86)» (в 64-битном режиме – это будет папка для 64-битных приложений). В 32-битном режиме эта константа эквивалентна константе {pf32} , а в 64-битном – {pf64} .
      • {cf} – папка общих файлов, например, «C:\Program Files (x86)\Common Files». В 32-битном режиме эта константа эквивалентна константе {cf32} , а в 64-битном – {cf64} .
      • {tmp} – временная папка, используемая при инсталляции или деинсталляции (имя папки будет в формате «C:\WINDOWS\TEMP\IS-xxxxx.tmp»).
      • {fonts} – папка шрифтов.
      • {dotnet11} – корневая папка.NET Framework 1.0.
      • {dotnet20} – корневая папка.NET Framework 2.0. В 32-битном режиме эта константа эквивалентна константе {dotnet2032} , а в 64-битном – {dotnet2064} .
      • {dotnet40} – корневая папка.NET Framework 4.0. В 32-битном режиме эта константа эквивалентна константе {dotnet4032} , а в 64-битном – {dotnet4064} .

Константы папок окружения:

      • {group} – путь к папке меню «Пуск», доступной для всех пользователей.
      • {localappdata} – путь к локальной (без роуминга) папке Application Data.
      • {sendto} – путь к папке пользователя Send To.
      • {userappdata} и {commonappdata} – путь к папке Application Data.
      • {usercf} – путь к папке пользователя Common Files (работает только для Windows 7 и последующих версий, для старых версий Windows эта константа будет приравнена к {localappdata}\Programs\Common).
      • {userdesktop} и {commondesktop} * - путь к папке рабочего стола.
      • {userdocs} и {commondocs} – путь к папке «Мои документы» (My Documents).
      • {userfavorites} и {commonfavorites} * - путь к папке «Избранное» (Favorites).
      • {userpf} – путь к папке пользователя Program Files (работает только для Windows 7 и последующих версий, для старых версий Windows эта константа будет приравнена к {localappdata}\Programs).
      • {userprograms} и {commonprograms} * - путь к папке «Все программы» (Programs) в меню «Пуск».
      • {userstartmenu} и {commonstartmenu} * - путь к верхнему уровню меню «Пуск».
      • {userstartup} и {commonstartup} * - путь к папке «Автозагрузка» (Startup) в меню «Пуск».
      • {usertemplates} и {commontemplates} * - путь к папке «Шаблоны» (Templates).

* = константы «common» приравниваются к константам «user», если пользователю не хватает административных привилегий или инструкция PrivilegesRequired установлена в lowest.

Другие константы:

      • {\} – используется в тех случаях, когда в конце пути нужно установить слеш, например, {app}{\}. В противном случае Inno Setup уберёт последний слеш.
      • {%NAME|DefaultValue} – значение переменной окружения, где NAME – имя переменной, DefaultValue – строка, которую нужно использовать, если переменной нет. DefaultValue – использовать необязательно. Примеры: {%COMSPEC} или {%PROMPT|$P$G}. Если в строке используются символы «,», «|», «}» или «%», то вместо них нужно писать «%2c», «%7c», «%7d» и «%25», соответственно.
      • {cmd} – полный путь к консоли, например, Windows\System32\cmd.exe (переменная окружения COMSPEC не используется для раскрытия этой константы).
      • {computername} – имя компьютера, на котором выполняется инсталляция или деинсталляция (значение возвращаемое функцией GetComputerName).
      • {drive:Path} – получает букву диска с двоеточием из произвольного пути. Если указан UNC-путь, то возвращает сервер и папку, например, \\SERVER\SHARE. Здесь также, чтобы написать символы «,», «|», «}» или «%», нужно писать «%2c», «%7c», «%7d» и «%25», соответственно. Вот примеры: {drive:{src}}, {drive:c:\path\file} или {drive:\\server\share\path\file}.
      • {groupname} – имя папки в меню «Пуск» для ваших пунктов меню, которую выбрал пользователь при инсталляции. В отличии от константы {group} возвращает только имя, а не полный путь.
      • {hwnd} – идентификатор фонового окна инсталлятора.
      • {wizardhwnd} – идентификатор окна мастера инсталлятора или 0, если идентификатор недоступен.
      • {ini:Filename,Section,Key|DefaultValue} – значение из INI-файла, где Filename – это имя INI-файла, Section – имя секции в INI-файле, Key – имя ключа в INI-файле, DefaultValue – строка которую нужно использовать, если указанный ключ не найден. Здесь также, чтобы написать символы «,», «|», «}» или «%», нужно писать «%2c», «%7c», «%7d» и «%25», соответственно. Пример: {ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program}.
      • {language} – внутреннее имя выбранного языка.
      • {cm:MessageName} и {cm:MessageName,Arguments} – сообщение на текущем языке, где MessageName – имя сообщения, Arguments – аргументы для сообщения разделённые запятыми. Здесь также, чтобы написать символы «,», «|», «}» или «%», нужно писать «%2c», «%7c», «%7d» и «%25», соответственно. Пример: {cm:LaunchProgram,Inno Setup}.
      • {reg:HKxx\SubkeyName,ValueName|DefaultValue} – строка из реестра, где HKxx – корневой ключ реестра, SubkeyName – путь к нужному ключу, ValueName – имя значения (или пусто, если нужно считать значение по умолчанию для ключа), DefaultValue – строка которую нужно использовать, если указанного значения нет или значение не строка (REG_SZ или REG_EXPAND_SZ). Здесь также, чтобы написать символы «,», «|», «}» или «%», нужно писать «%2c», «%7c», «%7d» и «%25», соответственно. Пример: {reg:HKLM\Software\My Program,Path|{pf}\My Program}.
      • {param:ParamName|DefaultValue} – параметр переданный инсталлятору в командной строке, где ParamName – имя параметра, DefaultValue - строка которую нужно использовать, если указанный параметр не найден. Здесь чтобы написать символы «,», «|», «}» или «%», нужно писать «%2c», «%7c», «%7d» и «%25», соответственно. Пример: {param:Path|{pf}\My Program}.
      • {srcexe} – полный путь к инсталлятору, например, C:\SETUP.EXE.
      • {uninstallexe} – полный путь к деинсталлятору, созданному инсталлятором, например, C:\Program Files\My Program\unins000.exe. Эта константа обычно используется для создания ярлыка для удаления программы в секции скрипта Inoo Setup. Константа действительна, только если инструкция Uninstallable установлена в yes.
      • {sysuserinfoname} , {sysuserinfoorg} – имя и организация, соответственно, на которые зарегистрирована Windows. Эта информация считывается из реестра.
      • {userinfoname} , {userinfoorg} , {userinfoserial} – имя, организация и серийный номер, соответственно, указанные пользователем на странице «Информация о пользователе» в мастере инсталлятора (которая может быть включена с помощью инструкции UserInfoPage). Обычно эта информация используется для записи в реестр или INI для дальнейшего использования.
      • {username} – имя пользователя запустившего инсталлятор или деинсталлятор (используется функция GetUserName).
      • {log} – имя файла журнала или пустая строка, если журналирование не включено.

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

В самом верхнем поле выбирается основной исполняемый файл. Если вы установите галку «Allow user to start the application after Setup has finished », то пользователь увидит предложение запустить приложение после установки. Если у вашего дистрибутива нет исполняемого файла, то вы можете установить галку «The application doesn’t have a main executable file ». Ниже идёт список файлов для вашего дистрибутива. Здесь можно добавлять отдельные файлы (кнопка «Add file(s)… ») или целые папки (кнопка «Add folder… »). При добавлении папки вы увидите дополнительный вопрос, включать подпапки или нет.

После добавления папок и файлов в список вы сможете редактировать каждый элемент (кнопка «Edit… ») или удалить его (кнопка «Remove »). В окне редактирования вы сможете поменять многие параметры: нужно ли рекурсивно включать подпапки (галка «Recurse subfolders »), нужно ли включать пустые папки (галка «Include empty subfolders »), базовая папка назначения (поля «Destination base folder ») и папка внутри базовой папки назначения («Destination subfolder »).

Мы для примера добавим только файл справки.

Следующий шаг мастера – это выбор создаваемых иконок. В поле «Application Start Menu folder name » задаётся имя группы в меню «Пуск». Если вы установите галку «Allow user to change the Start Menu folder name », то пользователь сможет поменять имя папки во время установки, а если вы установите галку «Allow user to disable Start Menu folder creation », то пользователь сможет вообще отключить создание этой папки в меню «Пуск». Установите галку «Create an Internet shortcut in the Start Menu folder » и «Create an Uninstall icon in the Start Menu folder » чтобы инсталлятор создал ярлыки внутри группы, соответственно, для открытия вашего сайта и для удаления вашего приложения. Галочки «Allow user to create a desktop icon » и «Allow user to create a Quick Launch icon » позволят пользователю создать ярлыки на рабочем столе и в группе быстрого запуска. Я поставлю все галочки.

На следующем шаге задаются файлы лицензии (License file ) и файлы с информацией, которые будут показаны до и после установки. Если вы указали файл лицензии, то при инсталляции, пользователь должен будет согласиться с лицензией. Поддерживаются файлы .txt и .rtf . Я укажу файлы license.txt и Readme.txt из папки с примерами.

На следующем шаге выбираем поддерживаемые языки. Я оставлю английский и добавлю русский.

На следующем шаге задаются параметры для компилятора Inno Setup . В поле «Custom compiler output folder » задаётся путь к папке, в которую компилятор Inno Setup будет сохранять созданный дистрибутив. Если в этом поле пусто, то дистрибутив будет создаваться в той же папке, что и файл .iss . В поле «Compiler output base file name » задаётся базовое имя для файла или файлов дистрибутива. Например, если у вас задано имя «setup », то при создании дистрибутива, состоящего из одного файла, вы получите файл setup.exe . В поле «Custom Setup icon file » вы можете указать имя файла иконки для будущего дистрибутива. Если здесь ничего не указано, то будет использоваться стандартная иконка. В последнем поле «Setup Password » вы можете указать пароль, который пользователь должен будет указать при инсталляции. Если установлена галка «Use the password to encrypt the application files », то с помощью указанного пароля будут зашифрованы файлы, находящиеся в дистрибутиве. Я для примера заполню все поля по-своему.

Следующий шаг оповещает вас о том, что обнаружен препроцессор Inno Setup и предлагает использовать директивы #define для упрощения вашего скрипта. Если вы хотите использовать директиву #define , оставьте галочку «Yes, use #define compiler directives ». Если галочка не установлена, то, в дальнейшем, вы сможете добавить директивы #define в свой скрипт вручную.

И наконец-то появился последний шаг, где мы просто нажимаем на кнопку «Finish ».

После этого компилятор сразу хочет скомпилировать наш скрипт. Давайте согласимся и нажмём кнопку «Да ».

После этого компилятор предупредит нас, что скрипт не сохранён и предложит сделать это.

Давайте согласимся (нажмём «Да ») и сохраним скрипт. После сохранения скрипт скомпилировался и готовый дистрибутив, в примере это файл my-setup.exe , создался в папке, которую я указал в мастере на шаге «Compiler Settings ». После компиляции вы можете посмотреть, как она прошла на панели «Compiler Output » внизу окна компилятора, см. картинку.

Как видите всё просто. Теперь сразу протестируем готовый дистрибутив. Щёлкните по пункту меню «Run -> Run », чтобы запустить установку программы.

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

Отладка дистрибутива в Inno Setup

Для отладки вашего дистрибутива, откройте скрипт .iss и щёлкните по пункту меню «Run -> Run », чтобы запустить установку программы. После этого вы сможете отслеживать внутренние процессы во время инсталляции в окне «Debug Output », сможете ставить точки останова на нужных строках, см. картинку.

Чтобы проверить значение константы, во время отладки, щёлкните по пункту меню «Run -> Evaluate Constant… » и в поднявшемся диалоге укажите имя константы (см. картинку) и нажмите «ОК ».

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

Чтобы отладить деинсталляцию, щёлкните по пункту меню «Run -> Target Uninstall », а затем «Run -> Run ». А для возврата обратно к инсталляции, щёлкните по пункту «Run -> Target Setup ».

Структура скрипта Inno Setup

Скрипты в Inno Setup разбиты на секции. Имя каждой секции заключено в квадратные скобки. Внутри каждой секции содержатся специфические для этой секции элементы. Для удобства вы можете делать несколько секций с одинаковым именем. Такие секции будут восприниматься как одна. Вот пример:

[ Setup ] AppName =My Program [ Files ] Source : "MYPROG.EXE" ; DestDir : "{app}"

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

В скрипте поддерживается C-подобная директива #include , заставляющая компилятор втягивать строки из указанного произвольного текстового файла, в то место где эта директива стоит. Вот синтаксис:

#include "filename.txt"

С помощью директивы #preproc вы можете указать, какой препроцессор следует использовать: встроенный, поддерживающий только директиву #include , или Inno Setup Preprocessor (ISPP), который поддерживает очень много директив и функций. По умолчанию в скриптах используется препроцессор ISPP, если он установлен, а в файлах .isl используется встроенный препроцессор. Вот синтаксис:

#preproc builtin #preproc ispp

Секции скрипта Inno Setup

Приведу здесь полный список всех секций Inno Setup с кратким описанием. Полное описание секций и список элементов секций можно найти в справке в разделе «Setup Script Sections ».

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

[ Setup ] AppName =My Program AppVersion =1.5 DefaultDirName ={ pf } \My Program DefaultGroupName =My Program

– необязательная секция, определяющая варианты установки (Полная /Компактная /Выборочная ), которые будут отображаться на странице выбора компонентов для установки. Пример:

[ Types ] Name : "full" ; Description : "Full installation" Name : "compact" ; Description : "Compact installation" Name : "custom" ; Description : "Custom installation" ; Flags : iscustom

– необязательная секция, определяющая компоненты, которые будут отображаться на странице выбора компонентов для установки. Пример:

[ Components ] Name : "main" ; Description : "Main Files" ; Types : full compact custom; Flags : fixed Name : "help" ; Description : "Help Files" ; Types : full Name : "help\english" ; Description : "English" ; Types : full Name : "help\dutch" ; Description : "Dutch" ; Types : full

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

[ Tasks ] Name : desktopicon; Description : "Create a &desktop icon" ; GroupDescription : "Additional icons:" ; Components : main Name : desktopicon\common; Description : "For all users" ; GroupDescription : "Additional icons:" ; Components : main; Flags : exclusive Name : desktopicon\user; Description : "For the current user only" ; GroupDescription : "Additional icons:" ; Components : main; Flags : exclusive unchecked Name : quicklaunchicon; Description : "Create a &Quick Launch icon" ; GroupDescription : "Additional icons:" ; Components : main; Flags : unchecked Name : associate; Description : "&Associate files" ; GroupDescription : "Other tasks:" ; Flags : unchecked

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

[ Dirs ] Name : "{app}\data" Name : "{app}\bin"

– необязательная секция, определяющая, какие файлы будут устанавливаться на компьютер.

[ Files ] Source : "CTL3DV2.DLL" ; DestDir : "{sys}" ; Flags : onlyifdoesntexist uninsneveruninstall Source : "MYPROG.EXE" ; DestDir : "{app}" Source : "MYPROG.CHM" ; DestDir : "{app}" Source : "README.TXT" ; DestDir : "{app}" ; Flags : isreadme

– необязательная секция, определяющая, какие будут создаваться ярлыки в меню «Пуск», на рабочем столе и т.д.

[ Icons ] Name : "{group}\My Program" ; Filename : "{app}\MYPROG.EXE" ; WorkingDir : "{app}" Name : "{group}\Uninstall My Program" ; Filename : "{uninstallexe}"

– необязательная секция, определяющая, какие записи будут добавлены в INI-файл.

[ INI ] Filename : "MyProg.ini" ; Section : "InstallSettings" ; Flags : uninsdeletesection Filename : "MyProg.ini" ; Section : "InstallSettings" ; Key : "InstallPath" ; String : "{app}"

и - эти необязательные секции определяют, какие файлы или папки нужно удалить, соответственно, при первой инсталляции или деинсталляции. Пример:

[ UninstallDelete ] Type : files ; Name : "{win}\MYPROG.INI"

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

[ Languages ] Name : "en" ; MessagesFile : "compiler:Default.isl" Name : "nl" ; MessagesFile : "compiler:Languages\Dutch.isl"

– секция для замены сообщений, описанных в языковых файлах .isl . Пример замены стандартного текста «&Next > » на кнопке перехода на следующий шаг только для английского языка:

[ Messages ] en.ButtonNext =&Forward >

– секция для определения значений константы {cm:...} , см. описание констант выше. Пример использования:

[ CustomMessages] CreateDesktopIcon=Create a &desktop icon [ Tasks ] Name : desktopicon; Description : "{cm:CreateDesktopIcon}"

– секция содержит настройки языка, такие как шрифт. Пример:

[ LangOptions ] LanguageName=English LanguageID=$0409 LanguageCodePage=0 DialogFontName= DialogFontSize=8 WelcomeFontName=Verdana WelcomeFontSize=12 TitleFontName=Arial TitleFontSize=29 CopyrightFontName=Arial CopyrightFontSize=8 RightToLeft=no

– эта необязательная секция определяет, какие ключи и значения нужно создать, изменить или удалить в реестре. Примеры использования:

[ Registry ] Root : HKCU ; Subkey : "Software\My Company" ; Flags : uninsdeletekeyifempty Root : HKCU ; Subkey : ; Flags : uninsdeletekey Root : HKLM ; Subkey : "Software\My Company" ; Flags : uninsdeletekeyifempty Root : HKLM ; Subkey : "Software\My Company\My Program" ; Flags : uninsdeletekey Root : HKLM ; Subkey : "Software\My Company\My Program\Settings" ; ValueType : string ; ValueName : "InstallPath" ; ValueData : "{app}"

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

[ Run ] Filename : "{app}\INIT.EXE" ; Parameters : "/x" Filename : "{app}\README.TXT" ; Description : "View the README file" ; Flags : postinstall shellexec skipifsilent Filename : "{app}\MYPROG.EXE" ; Description : "Launch application" ; Flags : postinstall nowait skipifsilent unchecked

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

– в этой необязательной секции вы можете разместить свой Pascal-скрипт . Для обработки Pascal-скрипта используется движок RemObjects Pascal Script . Этот движок так же бесплатен, как и Inno Setup . Официальная страница движка RemObjects Pascal Script - . Примеры использования можно найти в файлах «Code*.iss » и «UninstallCode*.iss » в папке «Examples » в месте установки Inno Setup .

Порядок инсталляции и деинсталляции

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

      • Выполнение секции .
      • Элементы секции сохраняются в журнале деинсталляции (который, на этом этапе хранится в памяти).
      • Создаётся директория приложения, если необходимо.
      • Выполняется секции .
      • Резервируется имя файла журнала деинсталляции, если необходимо.
      • Выполняется секция (регистрация файлов пока не производится).
      • Выполняется секция .
      • Выполняется секция .
      • Выполняется секция .
      • Файлы, которые должны регистрироваться, регистрируются, за исключением случая, когда система должна быть перезагружена. В случае, когда требуется перезагрузка, регистрация происходит только после рестарта системы.
      • Добавление в список установленных программ (Панель управления\Программы\Программы и компоненты), если необходимо.
      • Элементы секции сохраняются в журнал деинсталляции.
      • EXE-файл и журнал деинсталлятора сохраняются на диск. После этого момента, пользователю запрещена отмена установки, и любые последующие ошибки не приведут к откату установки.
      • Выполнение секции , кроме элементов секции с установленным флагом «postinstall », которые будут выполнены после отображения последнего шага мастера установки.
      • Обновление ассоциаций для файлов, если флаг «ChangesAssociations » установлен в «yes ».
      • Оповещение выполняемых приложений о том, что переменные окружения изменились, если флаг «ChangesEnvironment » установлен в «yes ».
      • Что касается элементов секции, то они будут выполняться в том порядке, в котором они расположены внутри секции.

Деинсталляция происходит в обратном порядке. Но это не касается секций и , которые будут выполняться в том порядке, в котором они встречаются в скрипте (не в обратном порядке).

Препроцессор Inno Setup

Пару слов хочется написать о препроцессоре Inno Setup (ISPP). Основная задача препроцессора – это автоматизация задач во время компиляции и снижение вероятности опечатки в ваших скриптах. Например, вы можете объявить переменную ISPP (переменная времени компиляции), содержащую имя вашего приложения, а затем использовать значение этой переменной в нескольких местах вашего скрипта. Если в дальнейшем по какой-то причине вы должны изменить имя вашего приложения, вы сможете сделать это в одном месте вашего скрипта. Без ISPP, вам придётся найти и исправить все части скрипта, где вы используете имя приложения, например, AppName, AppVerName, DefaultGroupName и т.п.

Другой пример использования ISPP – это вытягивание информации о версии приложения из ЕХЕ-файла и использование её в инструкции AppVerName в секции . Без ISPP, вам придется менять скрипт каждый раз при изменении версии приложения.

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

При использовании препроцессора важно помнить, что препроцессор работает только во время компиляции.

Вызов компилятора Inno Setup из командной строки

Не лишним будет знать и о возможности компиляции дистрибутива из командной строки. Вызов компиляции выглядит следующим образом:

compil32 /cc

А вот пример:

compil32 /cc "c:\isetup\samples\my script.iss"

Вызов компиляции из командной строки, в данном случае, не скрывает отображение прогресса или сообщений об ошибках. Компилятор возвращает 0, если компиляция прошла успешно, 1, если параметры командной строки переданы неверно, или 2, если компиляция не удалась.

Альтернативный способ компиляции – это использование консольного компилятора ISCC.exe . Вот схема использования компилятора:

iscc [ options]

А вот пример:

iscc "c:\isetup\samples\my script.iss"

Вот основные опции:

/DO – отключить создание дистрибутива (меняет все параметры Output в скрипте).
/EO – включить создание дистрибутива (меняет все параметры Output в скрипте).
/O – устанавливает путь, где будет создан дистрибутив (меняет все параметры OutputDir в скрипте).
/F – устанавливает имя файла дистрибутива (меняет все параметры OutputBaseFilename в скрипте).
/S – настройка параметра SignTool .
/Q[p] – для скрытой компиляции (выводятся только сообщения об ошибках, «p » выводит прогресс).
/? – для отображения справки.

Вот пример с использованием опций:

iscc /Qp /O"My Output" /F"MyProgram-1.0 " /Sbyparam=$p "c:\isetup\samples\my script.iss"

ISCC возвращает 0, если компиляция прошла успешно, 1, если неправильно указаны параметры или произошла внутренняя ошибка, или 2, если компиляция не удалась.

В заключении об Inno Setup

Рассказать обо всех возможностях Inno Setup не удастся в рамках одной статьи, это очень большой объём информации, поэтому я описал здесь лишь основные моменты. После прочтения вы сможете начать пользоваться этим замечательным инструментом для создания собственных дистрибутивов. В будущем я расскажу про альтернативные пользовательские интерфейсы. А сейчас, пишите ваши комментарии к статье, и я постараюсь ответить на все ваши вопросы.

mob_info