Время прочтения
13 мин
Просмотры 173K
Введение
Я не являюсь профессиональным программистом. В том смысле, что не зарабатываю денег этим ремеслом, а использую свои навыки в качестве инструмента для основной, научной, деятельности. Поэтому все мои «поделки» живут лишь отведенный им на решение конкретной задачи период и не выходят за пределы каталогов проекта. Кроме того, уже довольно давно я отошел от разработки под ОС Windows, ибо Linux для решения моих задач более удобен.
Однако ученым тоже хочется кушать, прилично одеваться и заправлять машину. Поэтому (правда довольно редко) возникает необходимость немного пофрилансить.
Недавно мне подкинули не слишком сложный проект — одна фирма хочет написать аналог программы, имеющейся у другой. Немного реверсинга, немного кодинга, в целом проект вполне обыденный. Однако тут же возник вопрос о создании инсталлятора — клиент ведь желает продукт «под ключ», чтобы клацнуть на «сетап», понажимать «Далее» и получить готовую к работе программу.
Созданием инсталляторов я не занимался никогда. Поэтому данный вопрос был основательно «загуглен», в числе прочего попалась и такая статья с Хабра. Выбор средств для подобной задачи довольно широк, и включает как проприетарные, так и открытые продукты. Вот список того, что я «пощупал»
- InstallShield — классика жанра, достаточно солидный проприетарный продукт
- Adnvanced Installer — проприетарный инструмент с широкими возможностями кастомизации через GUI. На сайте сказано, что если Вы блоггер и будете писать об этом продукте много хороших слов, то у Вас есть возможность получить Free License
- WiX — открытый бесплатный продукт, основанный на XML-скриптах. Мощная, хорошо документированная штука. Разбираться с ним я пока не стал, ибо время дорого (да и к XML душа лежит не очень). Возможно когда нибудь я к нему вернусь. Да, к нему есть плагины для Visual Studio, что несомненный плюс.
- Inno Setup — опенсорсный проект, код которого доступен на гитхабе. В силу бесплатности и низкого порога вхождения мой выбор остановился именно на нем, как инструменте позволившем выполнить работу быстро и качественно.
Так что в статье мы будем рассматривать пример использования Inno Setup, для которого имеется полезный фронтэнд Inno Script Studio, позволяющий выполнять создание простых инсталляторов с помощью мастера и менять настройки через GUI. GUI понадобился мне для первого знакомства, с продуктом, но мы не будем уделять ему большого внимания — мой «линукс головного мозга» в последнее время всё больше и больше уводит меня от желания использовать разного рода «мастера» (это субъективно, прошу не пинать). Мы рассмотрим хардкорный способ написания скрипта с чистого листа.
1. Установка, настройка и простой (но довольно солидный) скрипт
Думаю, что скачать программу с официального сайта и установить её труда не составит. Запускаем Inno Setup Compiler и видим такое окно
Пугающе уныло встречает нас Inno Setup…
Что это? По сути это просто-напросто редактор для набора скриптов, снабженный подсветкой синтаксиса и кнопками компиляции и запуска. От нас ждут, что мы начнем набирать в этом окне текст скрипта, определяющий логику работы будущего инсталлятора. Ну так и не будем терять время.
Прежде всего определим необходимые константы
;------------------------------------------------------------------------------
;
; Пример установочного скрипта для Inno Setup 5.5.5
; (c) maisvendoo, 15.04.2015
;
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; Определяем некоторые константы
;------------------------------------------------------------------------------
; Имя приложения
#define Name "Miramishi Painter"
; Версия приложения
#define Version "0.0.1"
; Фирма-разработчик
#define Publisher "Miramishi"
; Сафт фирмы разработчика
#define URL "http://www.miramishi.com"
; Имя исполняемого модуля
#define ExeName "Miramishi.exe"
Эти строки будут часто встречаться в коде скрипта, поэтому определяем их, как и в C, с помощью дерективы #define
Тело скрипта разделяется на секции, каждая из которых несет свое функциональное назначение. Обязательная секция [Setup] задает глобальные параметры работы инсталлятора и деинсталатора.
;------------------------------------------------------------------------------
; Параметры установки
;------------------------------------------------------------------------------
[Setup]
; Уникальный идентификатор приложения,
;сгенерированный через Tools -> Generate GUID
AppId={{F3E2EDB6-78E8-4539-9C8B-A78F059D8647}
; Прочая информация, отображаемая при установке
AppName={#Name}
AppVersion={#Version}
AppPublisher={#Publisher}
AppPublisherURL={#URL}
AppSupportURL={#URL}
AppUpdatesURL={#URL}
; Путь установки по-умолчанию
DefaultDirName={pf}{#Name}
; Имя группы в меню "Пуск"
DefaultGroupName={#Name}
; Каталог, куда будет записан собранный setup и имя исполняемого файла
OutputDir=E:worktest-setup
OutputBaseFileName=test-setup
; Файл иконки
SetupIconFile=E:workMiramiMiramiicon.ico
; Параметры сжатия
Compression=lzma
SolidCompression=yes
Пристальное внимание уделаем опции AddId — уникальный идентификатор приложения (GUID), используемый для регистрации приложения в реестре Windows. Его пишем не «от фонаря», а генерируем, открывая фигурную скобку, и выбрав в меню пункт Tools -> Generate GUID (или используя хот-кей Shift + Ctrl + G). Далее указываем имя приложения, под которым оно будет установлено в системе, его версию, данные фирмы разработчика, адреса сайтов разработчика, технической поддержки и обновления.
Путь, по умолчанию предлагаемый инсталлятором для установки определяем опцией DefaultDirName. При этом переменная {pf} — это путь в каталог Program Files соответствующей разрядности. Опция DefaultGroupName определяет имя группы программы в меню «Пуск». Обратите внимание на то, что для указания имени приложения мы используем данное нами выше макроопределение Name, обрамляя его фигурными скобками и решеткой.
Пара опций OutputDir и OutputBaseFileName задают каталог, куда будет записан скомпилированный «сетап» и его имя (без расширения). Кроме этого, указываем где взять иконку для test-setup.exe опцией SetupIconFile.
Последние опции в этой секции определяют алгоритм сжатия (LZMA) и указывают, что все файлы сжимаются одновременно, а не по отдельности (SolidCompression) что ускоряет процесс распаковки при большом количестве однотипных файлов.
В хорошем исталяторе должна быть поддержка нескольких языков. Включаем её в наш «сетап», используя опциональную секцию [Languages]. При отсутствии данной секции будет использоваться английский язык.
;------------------------------------------------------------------------------
; Устанавливаем языки для процесса установки
;------------------------------------------------------------------------------
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"; LicenseFile: "License_ENG.txt"
Name: "russian"; MessagesFile: "compiler:LanguagesRussian.isl"; LicenseFile: "License_RUS.txt"
Каждая строка в данной секции задает один из используемых при установке языков. Синтаксис строки таков
<имя параметра>: <значение параметра>
в качестве разделителя параметров используется точка с запятой. Параметр Name говорит сам за себя — «имя» языка, допускаются общепринятые двухбуквенные сокращения («en», «ru», «de» и так далее). Параметр MessagesFile сообщает компилятору в каком месте взять шаблон сообщений, выводимых при инсталляции. Эти шаблоны берем в каталоге компилятора Inno Setup, о чем мы сообщаем директивой compiler. Для английского языка годится шаблон Default.isl, для русского — LanguagesRussian.isl
Параметр LicenseFile задает путь к файлу с текстом лицензии на соответствующем языке.
Обычно установщик предлагает нам, например, определится, хотим мы или не хотим создать ярлык на рабочем столе. Такие опции установки определяются необязательной секцией [Tasks]
;------------------------------------------------------------------------------
; Опционально - некоторые задачи, которые надо выполнить при установке
;------------------------------------------------------------------------------
[Tasks]
; Создание иконки на рабочем столе
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Здесь Name задает имя операции — «desktopicom» — создание иконки на рабочем столе; Description — описание чекбокса с опцией, которое увидит пользователь. Конструкция
{cm:<имя сообщения>}
задает стандартный текст сообщения, соответствующий выбранному в начале инсталляции языку. Параметр GroupDescription — заголовок группы чекбоксов с опциями. Параметр Flags задает определенные действия и состояния элементов управления, в данном случае указывая, что галочка «создать ярлык на рабочем столе» должна быть снята.
Чтобы было понятно — так выглядит результат
Теперь укажем, какие файлы надо включить в дистрибутив и где их надо поместить при установке. Для этого используется обязательная секция [Files]
;------------------------------------------------------------------------------
; Файлы, которые надо включить в пакет установщика
;------------------------------------------------------------------------------
[Files]
; Исполняемый файл
Source: "E:workMiramiMiramibinReleaseMiramishi.exe"; DestDir: "{app}"; Flags: ignoreversion
; Прилагающиеся ресурсы
Source: "E:workMiramiMiramibinRelease*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Здесь
- Source — путь к файлу-источнику. У меня всё необходимое программе для работы лежит в каталоге Release проекта MS VS
- DestDir — каталог установки, переменная {app} содержит путь, выбранный пользователем в окне установщика
- Flags — разнообразные флаги. В нашем примере для исполняемого файла: игнорирование версии программы при перезаписи исполняемого модуля, если он уже существует в системе (ignorevarsion); для остальных файлов и каталогов так же игнорируем версию, рекурсивно включаем все подкаталоги и файлы источника (recursesubdirs) и создаем подкаталоги, если их нет (createallsubdirs)
Наконец, чтобы всё было красиво, опционально укажем компилятору, где брать иконки для размещения в меню программ и на рабочем столе
;------------------------------------------------------------------------------
; Указываем установщику, где он должен взять иконки
;------------------------------------------------------------------------------
[Icons]
Name: "{group}{#Name}"; Filename: "{app}{#ExeName}"
Name: "{commondesktop}{#Name}"; Filename: "{app}{#ExeName}"; Tasks: desktopicon
Тут я указываю, что для группы в меню «Пуск» и для рабочего стола иконку надо брать из исполняемого модуля. Естественно, что иконка должна быть в него «вкомпилена», иначе в требуемых местах мы увидим стандартный значок из коллекции винды.
Итак, всё вроде готово. Жмем Ctrl + F9 и пытаемся собрать инсталлятор. Если не допущены синтаксические ошибки, начнется процесс сборки
Inno Setup собирает инсталлятор
После успешной сборки инсталлятор можно запустить, нажав F9. Если Вы работаете под учеткой с ограниченными правами (а я работаю в винде именно так), то придется полезть в каталог с результатами компиляции, который мы указали в скрипте, и запустить инсталлятор с правами админа
Запуск инсталлятора под ограниченной учетной записью
В итоге мы увидим до боли знакомое каждому пользователю Windows окно выбора языка
приветствие мастера
лицензионное соглашение
ну и так далее. Приятно, что по умолчанию используется лаконичный дизайн мастера, без рюшечек (которые при желании можно добавить)
Ну что сказать? Ура! Мы написали свой первый «сетап» и могли бы радоваться, но
2. Развертывание .NET Framework
Вы не заметили, что мы о чем-то забыли? Приложение, созданное на C# не будет работать без фреймворка, с которым оно было собрано, если таковой отсутствует в системе. Соответствующий фреймворк надо установить, а для этого необходимо
- Определиться с тем, как будем получать дистрибутив фреймворка. Тут есть два варианта — поставлять его вместе с дистрибутивом программы или, при необходимости установки загрузить его онлайн на целевую машину. Мы остановимся на варианте включения фреймворка в дистрибутив. Сам фреймфорк, скажем версии 4.0, можно взять бесплатно у Майкрософта
- Детектировать наличие/отсутствие данного фреймфорка в целевой системе. Для этого потребуется написать логику, анализирующую состояние системного реестра.
Значения в реестре, которые необходимо проверить приведены в официальной документации Microsoft, в статье я приведу краткую выжимку из неё
Таблица 1. Ключи реестра, для проверки установленной версии .NET Framework
Версия .NET | Ключ реестра | Значение |
---|---|---|
3.0 | HKLMSoftwareMicrosoftNET Framework SetupNDPv3.0SetupInstallSuccess | 1 |
3.5 | HKLMSoftwareMicrosoftNET Framework SetupNDPv3.0SetupInstall | 1 |
4.0 Client Profile | HKLMSoftwareMicrosoftNET Framework SetupNDPv4.0ClientInstall | 1 |
4.0 Full Profile | HKLMSoftwareMicrosoftNET Framework SetupNDPv4.0FullInstall | 1 |
4.5 | HKLMSoftwareMicrosoftNET Framework SetupNDPv4.0FullRelease | номер релиза |
Для реализации произвольной логики работы инсталлятора в Inno Setup предусмотрена секция [Code]. В пределах этой секции размещается код реализующих логику функций на языке Pascal. Содежимое этой секции мы вынесем в отдельный файл dotnet.pas и включим в основной скрипт дерективой #include
;------------------------------------------------------------------------------
; Секция кода включенная из отдельного файла
;------------------------------------------------------------------------------
[Code]
#include "dotnet.pas"
хотя можно набить код и непосредственно в секции [Code]. Надо помнить, что внутри этой секции используется синтаксис Pascal, и комментарии предваряются последовательностью «//» вместо используемой в основной части скрипта точки с запятой.
Напишем функцию, определяющую наличие в системе нужной версии .NET
//-----------------------------------------------------------------------------
// Проверка наличия нужного фреймворка
//-----------------------------------------------------------------------------
function IsDotNetDetected(version: string; release: cardinal): boolean;
var
reg_key: string; // Просматриваемый подраздел системного реестра
success: boolean; // Флаг наличия запрашиваемой версии .NET
release45: cardinal; // Номер релиза для версии 4.5.x
key_value: cardinal; // Прочитанное из реестра значение ключа
sub_key: string;
begin
success := false;
reg_key := 'SOFTWAREMicrosoftNET Framework SetupNDP';
// Вресия 3.0
if Pos('v3.0', version) = 1 then
begin
sub_key := 'v3.0';
reg_key := reg_key + sub_key;
success := RegQueryDWordValue(HKLM, reg_key, 'InstallSuccess', key_value);
success := success and (key_value = 1);
end;
// Вресия 3.5
if Pos('v3.5', version) = 1 then
begin
sub_key := 'v3.5';
reg_key := reg_key + sub_key;
success := RegQueryDWordValue(HKLM, reg_key, 'Install', key_value);
success := success and (key_value = 1);
end;
// Вресия 4.0 клиентский профиль
if Pos('v4.0 Client Profile', version) = 1 then
begin
sub_key := 'v4Client';
reg_key := reg_key + sub_key;
success := RegQueryDWordValue(HKLM, reg_key, 'Install', key_value);
success := success and (key_value = 1);
end;
// Вресия 4.0 расширенный профиль
if Pos('v4.0 Full Profile', version) = 1 then
begin
sub_key := 'v4Full';
reg_key := reg_key + sub_key;
success := RegQueryDWordValue(HKLM, reg_key, 'Install', key_value);
success := success and (key_value = 1);
end;
// Вресия 4.5
if Pos('v4.5', version) = 1 then
begin
sub_key := 'v4Full';
reg_key := reg_key + sub_key;
success := RegQueryDWordValue(HKLM, reg_key, 'Release', release45);
success := success and (release45 >= release);
end;
result := success;
end;
Не смотря на обилие кода, логика его работы достаточно проста — в зависимости от значения параметра version с помощью функции RegQueryDWordValue(…) читается значение соответствующего ключа реестра и сравнивается с требуемым значением (смотрим таблицу 1). Для версии 4.5 дополнительно передаем номер релиза в параметре release.
Для того приложения, которое мы будем развертывать, нужна вполне определенная версия .NET, поэтому напишем функцию-обертку для её определения в целевой системе
//-----------------------------------------------------------------------------
// Функция-обертка для детектирования конкретной нужной нам версии
//-----------------------------------------------------------------------------
function IsRequiredDotNetDetected(): boolean;
begin
result := IsDotNetDetected('v4.0 Full Profile', 0);
end;
Для того, чтобы перед началом установки проверить наличие фреймворка и сообщить пользователю о предпринимаемых действиях используем Callback-функцию InitializeSetup()
//-----------------------------------------------------------------------------
// Callback-функция, вызываемая при инициализации установки
//-----------------------------------------------------------------------------
function InitializeSetup(): boolean;
begin
// Если нет тербуемой версии .NET выводим сообщение о том, что инсталлятор
// попытается установить её на данный компьютер
if not IsDotNetDetected('v4.0 Full Profile', 0) then
begin
MsgBox('{#Name} requires Microsoft .NET Framework 4.0 Full Profile.'#13#13
'The installer will attempt to install it', mbInformation, MB_OK);
end;
result := true;
end;
Теперь в секцию [Files] добавим запись о том, где компилятор должен взять дистрибутив .NET, куда инсталлятор он должен её распаковать, и при каких условиях следует выполнять распаковку
; .NET Framework 4.0
Source: "E:installdotNetFx40_Full_x86_x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; Check: not IsRequiredDotNetDetected
Во флагах скажем, что надо удалить дистрибутив .NET после установки (deleteafterinstall). Условие, при котором требуется распаковка задаем опцией Check, где вызываем функцию IsRequiredDotNetDetected(), выполняя распаковку ели она вернет false.
Сам запуск инсталляции фрейворка можно выполнить после установки основной программы, поэтому включаем в скрипт секцию [Run], в которой указывается, что необходимо запускать по окончании установки
;------------------------------------------------------------------------------
; Секция кода включенная из отдельного файла
;------------------------------------------------------------------------------
[Code]
#include "dotnet.pas"
[Run]
;------------------------------------------------------------------------------
; Секция запуска после инсталляции
;------------------------------------------------------------------------------
Filename: {tmp}dotNetFx40_Full_x86_x64.exe; Parameters: "/q:a /c:""install /l /q"""; Check: not IsRequiredDotNetDetected; StatusMsg: Microsoft Framework 4.0 is installed. Please wait...
Обратите внимание на то, что мы сначала указываем имя секции [Run], чтобы закрыть секцию [Code], а затем пишем комментарий начинающийся с точки с запятой. Это необходимо из-за различия синтаксиса основного скрипта и секции [Code], в противном случае при компиляции мы получим синтаксическую ошибку.
В секции задается путь к инсталлятору фреймворка — предварительно он распакован нами во временный каталог (переменная {tmp} содержит путь к веременному каталогу); задаются параметры командной строки. Опция Check определяет условие запуска инсталляции — это отсутствие в целевой системе нужного нам фреймворка. Опция StatusMsg определяет сообщение, которое увидит пользователь в окне инсталлера.
Снова компилируем наш проект. Теперь, при запуске на «чистой» винде инсталлятор выдаст сообщение
Нам сообщают что требуется .NET Framework 4.0 и для нас его установят
При распаковке мы заметим, что дополнительно распаковывает дистрибутив .NET во временную папку
а затем процесс переключается на установку .NET
Майкрософт просит нас принять лицензию…
Установка .NET
После этого мы получаем работоспособное C# приложение установленное «по взрослому»
Заключение
Я не профессионал и во многих вещах могу ошибаться. Прошу отнестись к этому с пониманием. Статья писалась нубом для нубов, её основная цель — задать вектор поиска при решении задачи написания инсталлятора. За остальными вопросами можно обратится к документации, поставляемой вместе с Inno Setup.
Код данного примера доступен в моем репозитории на Github. «Кракозябры» в комментах вызваны несовпадением кирилических кодировок. Для себя всегда пишу английские комментарии, но для лучшего понимания кода допустил этот ляп. При скачивании в винде всё просматривается замечательно, так что прошу простить мне и эту несуразность.
В остальном, полагаю «хаутушка» вышла достойной и благодарю за уделенное мне внимание.
Часть 2
Clickteam Install Creator 2
Домашняя страница: http://www.clickteam.com/install-creator-2
Компания Clickteam выпускает простые и дружелюбные продукты для разработчиков: например, Clickteam Fusion, The Games Factory, Multimedia Fusion. В этом же ряду находится программа Install Creator. Основное преимущество продукта — быстрое создание дистрибутива при помощи пошагового мастера.
Разделы настроек расположены в такой строгой последовательности в виде вкладок. Вначале указываются данные (Files), текстовое содержание диалогов (Wizard Text), формат окна (Window), дополнительные настройки (Options), настройки деинсталлятора (Uninstaller), размер дистрибутива (Build). После нажатия на Build запускается компиляция инсталлятора, остается лишь указать место его расположения.
Инсталлятор занимает 65 КБ, с учетом деинсталлятора это 105 КБ. Вдобавок к этому, в Install Creator применяется один из двух алгоритмов компрессии (zipper/ differentiator), оптимальный вариант определяется автоматически. При необходимости, данные можно поместить в пакет отдельно от инсталлятора.
Функциональность Clickteam Install Creator унифицирована, отсутствуют некоторые важные опции. Так, мультиязычность не поддерживается, русский язык в перечне локализаций и вовсе отсутствует. Интеграция со сторонними решениями не предусмотрена, поэтому работа с большими проектами (подразумевающими множество связей в системе) будет неудобной. Программа не позволяет создавать обновления, патчи. Впрочем, в последнем случае, можно использовать Patch Maker — разработку Clickteam.
В незарегистрированной версии Install Creator присутствует реклама. Профессиональная версия, помимо снятия этого лимита, позволяет включать в дистрибутив несколько редакций, устанавливать лицензионное ограничение для пользователя инсталлятора.
Резюме. Возможности Install Creator будут востребованы при работе с несложными проектами. Получаемые инсталляторы содержат базовый набор пользовательских опций, среди которых нет выбора языков или профиля установки. Определенно, это максимально простое решение среди всех упомянутых в обзоре инсталляционных комплексов.
Actual Installer
Домашняя страница: http://www.actualinstaller.com/
Actual Installer — программа для создания достаточно сложных установщиков Windows Installer без использования сценариев. В базовый набор возможностей входят мультиязычность, эффективная компрессия, детальная настройка интерфейса, командная строка и прочие функции, перечисляемые ниже.
Использование пошагового мастера не предполагается, но доступно окно параметров для нового проекта. Определив базовые сведения продукта, можно перейти в главное окно программы. Опции расположены в 5 секциях — «Общее», «Установка», «Диалоги», «Система» и «Реестр».
В разделе General (Общее) указывается информация о проекте, здесь же настраивается внешний вид мастера установки. В процессе установщик может проверять системные требования (такие как версия ОС, привилегии пользователя) и зависимости (Microsoft .NET Framework, Internet Explorer, Adobe Reader, Java, SQL Server и прочие). При отсутствии указанных компонентов, инсталлятор потребует от пользователя скачать и установить их.
В Installation («Установка») — расположение файлов и папок, расположение исполнимого файла, настройки процессов установки, обновления и деинсталляции. Оба процесса могут осуществляться в тихом режиме, не требуя вмешательства пользователя. В довесок к установщику, может использоваться мастер обновлений (Actual Updater).
Dialogs («Диалоги») предоставляют доступ к «начинке» разделов, включая текст лицензионного соглашения, readme файла, в том числе в формате RTF. Здесь же — выбор языков локализации, причем русский язык числится в списке. Ненужные разделы установщика легко отключить.
System («Система») — настройка системных изменений, вносимых при инсталляции: ярлыки, ключи реестра, переменные и пользовательские команды.
Register («Реестр») — установка файловых ассоциаций, переменных окружения, библиотек.
После выставления нужных опций достаточно нажать на кнопку Build Project — инсталлятор готов к запуску. В случае, если при создании инсталлятора была пропущена важная опция, при компиляции Actual Installer даст об этом знать и укажет на ошибку.
Резюме. Actual Installer включает в себя практически все стандартные параметры и опции проекта. Это «промежуточный» вариант между очень простыми (вроде Clickteam Install Creator) и более тяжеловесными решениями, о которых также пойдет речь.
CreateInstall
Домашняя страница: http://www.createinstall.ru/
CreateInstall — инструментарий для создания установщиков. В его основу заложено две особенности — контроль над процессом установки и неограниченная расширяемость. Обе возможности реализованы благодаря языку программирования Gentee, применяемому для написания сценариев.
Интерфейс CreateInstall разбит на 3 вкладки — «Проект», «Скрипт установки» и «Скрипт деинсталляции». Первый раздел позволяет задать общие настройки инсталлятора: информация о продукте, поддерживаемые языки, пути, внешний вид. Дополнительно, инсталлятор можно защитить цифровой подписью и установить пароль.
«Проект» — не равноценная замена двух последующих разделов, т. е. для создания дистрибутива нужно тщательно настроить скрипты установки и деинсталляции. Соответствующие параметры отображаются в виде групп, можно отобразить их единым списком.
Дополнением для CreateInstall служит утилита Quick CreateInstall. Она значительно упрощает создание инсталлятора, предоставляя только базовые настройки проекта. Из Quick CreateInstall в дальнейшем проект можно импортировать в CreateInstall.
Код проекта не предназначен для самостоятельного редактирования, переноса в IDE-среду, экспорта. Хотя язык Gentee имеет отличный потенциал: как минимум, это переменные и функции, условные выражения и синтаксис, базирующийся на C, C++ и Java.
Существует 3 редакции программы — полная, light (простая) и бесплатная. Список различий между ними опубликован здесь. По большей части, отсутствующие функции бесплатной редакции программы видны при навигации по группам настроек скриптов.
Интерфейс и справка доступны на русском языке.
Резюме. CreateInstall — функциональная и доступная для понимания среда. Инструментарий CreateInstall не так уж и беден и позволяет обходиться собственными средствами. Но к недостаткам все же следует отнести замкнутость программы «в себе», подразумевая функции импорта и экспорта.
Advanced Installer
Домашняя страница: http://www.advancedinstaller.com/
Advanced Installer основывается на технологии Windows Inslaller, позволяя создавать msi-, exe- и других видов дистрибутивов. Этому способствует продуманный интерфейс и работа с проектами. В Advanced Installer можно обнаружить немало возможностей, которых нет в других подобных комплексах, о чем ниже.
Примечательно, прежде всего, разнообразие проектов: сюда входят инсталляторы, Java-установщики, обновления, дополнения, модули слияния и другие. В разделе меню Installer собраны команды импорта проектов из Visual Studio, RAD Studio, Real Studio, Visual Basic. Здесь раскрывается потенциал Advanced Installer во взаимодействии с IDE-средами.
Для каждого из выбранных типов проекта предусмотрен детальный мастер настройки. Есть общие шаблоны — Simple, Enterprise, Architect или Professional. Большая часть проектов доступна только для определенных типов лицензии, общедоступные проекты обозначены как None в графе License Required.
Как уже сказано, при создании проекта можно воспользоваться пошаговым мастером, где, в частности, доступен выбор способа распространения пакета, языков локализации, настройка пользовательского интерфейса, ввод текста лицензии и другие опции. Advanced Installer позволяет выбрать вариант распространения программы — оставить данные без компрессии, разделить на CAB-архивы, сохранить в MSI и др., добавить цифровую подпись, потребовать ввод серийного номера и т. д.
Главное окно Advanced Installer (редактор проекта), в простом режиме отображения (Simple), содержит несколько секций:
- Product Information (Информация о продукте) — ввод сведений о продукте, параметры установки.
- Requirements (Требования) — указание аппаратных и системных требований, зависимостей ПО. Также имеется возможность создания пользовательских условий.
- Resources (Ресурсы) — редактор ресурсов (файлов и ключей реестра).
- Deployment (Развертывание) — выбор типа распространения продукта. Это может быть MSI, EXE или веб-инсталлятор. Для MSI, EXE ресурсы можно поместить отдельно от инсталлятора.
- System Changes — переменные среды.
При выборе ресурсов могут использоваться файлы, ключи реестра, переменные окружения, конфигурационные ini, драйверы, базы данных и переводы. С помощью модулей объединения можно добавить и другие ресурсы, такие как сервисы, разрешения, ассоциации и др.
Для выполнения более сложных задач позволяется использовать пользовательские действия, EXE, DLL или скрипты, написанные на C, C++, VBS или JS. Для создания сценариев предусмотрен удобный редактор.
Однако следует отметить, что в режиме Simple доступна лишь малая часть разделов. Работая с Advanced Installer в ознакомительном режиме, есть смысл зайти в настройки и переключиться в другой режим работы с проектом. После этих действий становятся доступны новые подразделы редактора.
Резюме. Благодаря различным редакциям продукта (включая бесплатную), возможностям импорта, множеству шаблонов и схем, редактору проектов — Advanced Installer будет интересен широкой аудитории.
BitRock InstallBuilder
Домашняя страница: http://installbuilder.bitrock.com/
InstallBuilder — кроссплатформенная среда для создания инсталляторов. В перечень поддерживаемых систем входят: Windows ME — Windows 8, Mac OS X, FreeBSD, OpenBSD, Solaris (Intel & Sparc), AIX, HP-UX, IRIX, Linux (Intel x86/x64, Itanium, s390 & PPC). Инсталляторы доступны как для настольного, так и сетевого ПО. В первой части путеводителя уже рассматривался продукт IzPack, но для InstallBuilder характерна поддержка языков написания, включая не только Java, но и PHP, Perl, Python, Ruby, C/C++ и .NET/Mono.
Интерфейс программы доступен на русском языке. Для работы с проектом используется очень простая графическая оболочка. Присутствуют следующие секции с настройками:
- Product Details («Информация о продукте») — информация о проекте.
- Files («Файлы») — проводниковый интерфейс для добавления файлов
- Advanced («Расширенные настройки») — наиболее интересный раздел, где, пожалуй, и раскрывается вся мощь BitRock Installer. Для работы с проектами используется формат XML (см. обзор WiX в первой части), возможна совместная работа, ручная настройка проектов с поддержкой сценариев. Встроенные действия позволяют автоматизировать процессы установки и объединять задачи, делая их доступными в несколько кликов. Таким образом можно проверять зависимости, добавлять переменные окружения, изменять реестр и файловую систему и прочее. Для редактирования сценариев используется встроенный, очень простой, XML-редактор.
- Customization («Настройка») — настройка пользовательского интерфейса инсталлятора, переменных окружения, пост-установочных действий, платформ, разрешений и компрессии. Для сжатия применяется ZIP/LZMA-компрессия. Можно создать тихий установщик, работающий в текстовом режиме.
- Packaging («Упаковка») — для отслеживания ошибок имеется встроенный дебаггер. При построении легко создать кроссплатформенный инсталлятор. На выходе он использует «родную» среду ОС (это относится к графическим системам Windows, KDE и Gnome).
Резюме. BitRock InstallBuilder рекомендуется, прежде всего, для создания кроссплатформенных продуктов. Сценарий, основанный на XML-спецификациях, удобен в обращении, проект легко импортировать и экспортировать для редактирования во внешней среде. Таким образом, на основе данного XML-сценария можно быстро генерировать инсталляторы для всех требуемых платформ.
InstallMate
Домашняя страница: http://www.tarma.com/im9/index.htm
InstallMate представляет собой инструментарий для создания дистрибутивов на основе Windows Installer. Основные особенности: интуитивная графическая среда, широкий выбор элементов установки, проверка зависимостей, детальная настройка внешнего вида инсталлятора, поддержка компонентов, локализаций и расширений. Дистрибутивы, созданные с помощью InstallMate, отличаются компактностью и скоростью работы.
Мастер создания нового проекта позволяет выбрать существующий шаблон и указать начальные параметры — языки локализации (один или несколько), имя продукта.
Можно импортировать созданный проект или воспользоваться редактором InstallMate. Кстати говоря возможности импорта не впечатлили: поддерживаются продукты компании Tarma и проекты Visual Basic.
Главное окно программы содержит разделы с параметрами, разделенные, условно, на три секции:
- Общие настройки: детальная информация о проекте, программные зависимости, системные требования, компоненты, а также опции инсталлятора. В боковой панели Package можно также указать тип инсталлятора, компрессии, ссылку на скачивание (в случае с веб-инсталлятором), пароль на установку. В один инсталлятор можно добавить несколько пакетов.
- Компоненты: включение в дистрибутив элементов и связей: это файлы и папки, ключи реестра, ini-конфиги, переменные среды, файловые ассоциации, COM-классы, сервисы.
- Опции инсталлятора: с помощью редактора можно отредактировать текст диалогов. Предусмотрена гибкая настройка локализаций, InstallMate поддерживает 19 языков по умолчанию. Можно создать один дистрибутив с несколькими локализациями либо несколько проектов с одним языком. В этом же разделе доступны пользовательские действия, а также переменные — включая 250 предустановок. Расширить функциональность пакета можно с помощью расширений и DLL-библиотек.
Как было отмечено, при создании инсталлятора можно использовать шаблоны. Помимо шаблонов проектов, возможно создание пакетов на основе компонентов, определяя группы элементов. Из других опций стоит отметить скрытую и тихую установку и деинсталляцию, два типа сжатия (Deflate или LZMA).
Полный список функций представлен здесь.
Резюме. Профессиональная среда для создания инсталляторов с действительно удобным интерфейсом и быстродоступным инструментарием: можно оперативно переключиться с одного языка локализации на другой при создании дистрибутива, протестировать проект. Не хватает функционального пошагового мастера настройки, возможностей импорта. Сильная сторона — наличие всех стандартных функций, работа с переменными и действиями.
Лучшие бесплатные программы для создания инсталляторов
-
Категория ~
Программирование -
– Автор:
Administrator
- Собственный инсталлятор
- Обзор бесплатных программ для создания инсталляторов
- Программа для создания инсталлятора Inno Setup полноценный инструмент
- Программа для создания инсталлятора NSIS удобная и мощная
- Программа для создания инсталлятора Ghost Installer аналог InnoSetup
- Программа для создания инсталлятора Clickteam Install Creator быстрая и удобная
- CreateInstall аналог программы для создания инсталлятора Clickteam
- Программа Advanced Installer для быстрого создания инсталлятора
- Руководство по быстрому выбору (скачать бесплатно программы для создания инсталлятора)
Собственный инсталлятор
Разработка собственного программного обеспечения это одна задача, а установка его — это совсем другое. Как только Вы создали свой продукт, необходимо подумать о том, каким образом он будет предоставляться конечному пользователю. Если это просто один исполняемый файл, который вы можете просто заархивировать и выложить, то все просто. Но когда Ваш продукт состоит из нескольких файлов таких как, например, dll, которые необходимо зарегистрировать, Вам уже необходим инсталлятор. Даже если Вам просто необходимо создать пару ярлыков на компьютерах пользователей, то инсталлятор уже будет удобен, если Вы, конечно, не хотите, чтобы ваши пользователи делали все вручную.
Дорогой и коммерческий флагман InstallShield знаком всем, и Вы не раз пользовались инсталляторами, созданными этим продуктом. Но, он не является единственным оплотом для создания исталляторов. Существуют и достаточно способные бесплатные продукты, которые могут обеспечить Вас всеми необходимыми возможностями. Я выбрал несколько лучших из них. Они охватывают различные подходы к созданию инсталлятора: от быстрых и легко настраиваемых (5-10 минут и готово) до мощных и поддерживающих огромное количество настроек.
Обзор бесплатных программ для создания инсталляторов
Программа для создания инсталлятора Inno Setup полноценный инструмент
После просмотра нескольких других свободных продуктов в этой категории, я решил остановиться на Inno Setup как самой привлекательной. Этот инструмент не для пользователей, которые ищут простой работы с графическим редактором и быстрого результата. Это решение более подходящее для тех разработчиков, которые хотят полностью контролировать создание программы установки, и не стесняются работы с текстовыми файлами конфигурации. Inno Setup была выпущена в 1997 году и очень развилась с тех пор. Этот инструмент, безусловно, бьет многих коммерческих претендентов в этой области за счет множества возможностей и стабильности работы.
GUI Inno Setup представляет из себя редактор / компилятор для файла конфигурации, который содержит настройки для создания программы установки. Формат текстового файла очень похож на формат файла INI, что позволяет ему быть менее громоздким для работы, чем файл формата XML, как, например, в Ghost Installer. Файл справки отлично структурирован, что позволяет легко и просто узнать о доступных параметрах. Редактор поддерживает схему цветовой подсветки кода, что делает его более удобным для работы. Я не буду перечислять все особенности этого профессионального инструмента для создания программы установки, но я не нашел ничего, что еще Inno Setup не будет в состоянии совершить. Исходные файлы, целевые файлы, ярлыки, диалоги, лицензии принятии, удаление, пользовательские формы и многое другое. Я использовал его в течение нескольких проектов за последние годы с большим успехом (а не затрат). Если вы любите GUI, то для этого отличного инструмента вы можете найти несколько сторонних дополнений на главной странице InnoSetup.
Программа для создания инсталлятора NSIS удобная и мощная
NSIS — если Вам не особо то и нужен редактор сценариев, и Вы хотите что-то обладающее более расширенными возможностями пользовательского интерфейса, то инструмент от NullSoft для создания программ установки то, что Вам нужно. Это наиболее способный продукт, в котором правда не хватает полноценного пользовательского интерфейса (не считая окна компилятора).
Подобно тому как вы создаете HTML-код для веб-страницы в отдельной программе, и потом отображаете эту страницу в браузере, вы должны создать скрипт NSIS в любом редакторе по вашему вкусу и просто скомпилировать его компилятором NSIS. На домашней странице NSIS Вы можете найти ссылки на редакторы (PSPad, Notepad) и IDE плагины (например, для Eclipse) с поддержкой NSIS скриптов с подсветкой синтаксиса, а так же различные другие вспомогательные программы.
Этот продукт, безусловно, более ориентирован на профессиональных разработчиков, чем на тех, кто ищет быстрых и легких графических решений для создания программ установки. Продукты в данном обзоре рассматривают оба типа этих пользователей, и это создает небольшие трудности для рекомендации одного единого решения. Хотя NSIS более способный, чем InnoSetup, я выбрал последнее из-за его баланса между графическим интерфейсом и функциональностью (включая организацию обучения).
NSIS просто выводит одно маленькое окно с текстовыми ссылками, для того чтобы вы начали с изучения его бесконечных возможностей. Небольшое окно (действительно слишком маленькое, чтобы показать весь текст, но достаточное, чтобы не изменять размеры) содержит ссылки на сам компилятор, примеры скриптов, онлайн-поддержку, документацию и плагины.
Плагины действительно того стоят, они предлагают множество расширенных возможностей, например, эффекты fadeout/fadein для пользовательских диалогов. NSIS предлагает создание более современной установки UI. Вы можете самостоятельно создавать собственные иконки, баннеры, фоны, и сделать из них свой сборник. Сообщество пользователей достаточно велико и многие ресурсы и форумы помогут Вам и поддержат Вас с вашим проектом установки NSIS.
Создание файла установки так же просто, как перетаскивание файла сценария в окне компилятора. В окне отображаются все сообщения компилятора, включая отчеты об успехах или ошибках. Созданные установочные файлы малы по сравнению с другими инструментами для создания программ установки, что позволяет более рационально распоряжаться ресурсами системы. Я бы мог рассказать гораздо больше о NSIS, но я оставлю это для их хорошо организованной домашней страницы. Это наиболее способный инструмент, представленный из всех, но ориентирован на решения профессиональных разработчиков, и требующий сторонних инструментов для эффективной и плодотворной работы.
Программа для создания инсталлятора Ghost Installer аналог InnoSetup
Ghost Installer представляет собой аналог InnoSetup. Если Вы хотите полностью контролировать создание программы установки, и Вы не боитесь работать с XML-файлами конфигурации, то Ghost Installer может быть хорошим выбором для Вас. Хотя коммерческая версия инструмента поставляется вместе с графическим интерфейсом (Ghost Installer Studio), бесплатная версия просто предлагает так называемый gEditor для редактирования файлов XML файлов конфигурации.
Этот продукт требует времени, чтобы освоиться в нем, но как только Вы разберетесь и узнаете обо всех настройках, Вы сможете использовать всю мощь данного инструмента. Файл справки очень хорошо организован, в нем перечислены все ключевые слова и настройки, которые Вы можете использовать. Когда Вы создаете новый проект, мастер-настройки создаст базовый или расширенный шаблон, в котором будет подготовлена необходимая XML-структура, с который Вы можете сразу начать работать. Для меня этот инструмент был несколько сложнее в изучении, нежели InnoSetup, но я уверен, что этот инструмент очень мощный. В итоге мы имеем XML редактор gEditor со встроенной кнопкой, запускающей процесс компиляцию Вашей программы установки. Если для Вас такая схема работы привлекательна, то, безусловно, попробуйте его.
Программа для создания инсталлятора Clickteam Install Creator быстрая и удобная
Clickteam Install Creator, наверно, самый быстрый и удобный инструмент создания программ установки из тех, что я рассмотрел. Этот инструмент содержит основные функции, заключенные в эффективный графический интерфейс. Мастер достаточно быстро проведет Вас через основные шаги. Мой первый проект был сделан за несколько минут, и все работало на «ура!».
Каждый этап представлен отдельной вкладкой, поэтому по завершении работы мастера у Вас всегда будет возможность изменить ранее заданные настройки. Если Вам требуется установить несколько исполняемых файлов, то Вам необходимо добавить меню в «Пуск» и создать ярлыки на рабочем столе. Инструмент позволяет легко изменять все тексты установки, даже текст в диалоговом окне «Добро пожаловать». Итоговая программа установки может работать как в режиме диалогового окна, так и в полноэкранном режиме (с возможностью установки градиента заливки фона, как в старые добрые времена Windows).
Можно устанавливать растровые изображения и иконки по своему выбору. В Install Creator отсутствуют более профессиональные функции, такие как добавление записей в реестр, различных пакетов установки или языков. Но это не было целью этого инструмента, и это прекрасно для простых задач. Это отличный выбор для быстрого решения по распространению своей программы, без необходимости разбираться в куче тонкостей процесса создания программ установки. Бесплатная версия полностью функциональна, однако, в конце каждой установки показывается окно с рекламой и со ссылкой на веб-сайт разработчиков.
CreateInstall аналог программы для создания инсталлятора Clickteam
CreateInstall это удовольствие для тех, кто не хочет тратить много времени на процедуру создания программ установки и редактирования кучи текста. Инструмент очень похож на Clickteam Install Creator, он так же представляет собой простой и эффективный интерфейс, где вы можете быстро найти и настроить все важные особенности вашего проекта. Вы можете выбрать пользовательские растровые изображения и иконку для диалога установки, а также указать фоновый градиент заливки для полноэкранного режима. Вы можете настроить шесть диалогов установки и один диалог завершения установки.
Работа с файлами и контекстным меню осуществляется достаточно легко, что является преимуществом над Install Creator. Так же Вам дается возможность задать записи в реестр и зарегистрировать DLL / OCX / TBL файлы. В инструменте есть некоторые дополнительные функции, которые производят достаточно хорошее впечатление. С ними Вы можете изменить некоторые особенности, такие как: выбор языка, выбор пути установки. Однако, у меня возникло несколько вопросов по работе инструмента, а именно по поводу изменения шрифтов диалогов. Для некоторых шрифтов, например, Tahoma, на дисплее будет просто пустое окно. Почему так? Бесплатная версия является полнофункциональной, но выводит строку «CreateInstall Free» в нижнем левом углу каждого окна установки. Вы можете купить этот инструмент, и изменить содержание этой строки по своему вкусу.
Программа Advanced Installer для быстрого создания инсталлятора
Advanced Installer является хорошим выбором, если Вам необходимо быстро создать MSI пакет установки. Caphyon предлагает бесплатную версию своего инструмента, встроенного в коммерческий продукт, по созданию программ установки. Вы можете скачать и установить полную версию продукта бесплатно, но только «Basic» опции работают без покупки регистрации. Но этого вполне достаточно для быстрого и простого создания MSI пакета установки.
В нем достаточно дружественный интерфейс, позволяющий Вам задать все основные конфигурации в кратчайшие сроки. Есть довольно много вариантов установки, что позволяет Вам достаточно легко играть с инструментом, например, целевая папка, ярлыки, перезагрузка системы, условия запуска, настройки реестра и многое другое. Единственно, я разочаровался в том, что нельзя определить различные типы установки такие, как «Полная установка» и «Минимальная установка». «Все или ничего» — не есть принцип сегодняшних программ установки. Я бы предпочел вместо опции условий запуска опцию установки типа. Тем не менее, мне очень импонирует простота в использовании и минимальное количество времени на проект. Если вам нужен MSI файл для простой установки, то Advanced Installer, безусловно, то, что Вам нужно.
Руководство по быстрому выбору (скачать бесплатно программы для создания инсталлятора)
Inno Setup
Перейти на страницу загрузки Inno Setup
NSIS
Перейти на страницу загрузки NSIS
Ghost Installer Free
Перейти на страницу загрузки Ghost Installer Free
Clickteam Install Creator
Перейти на страницу загрузки Clickteam Install Creator
Create Install Free
Перейти на страницу загрузки Create Install Free
Advanced Installer
Перейти на страницу загрузки Advanced Installer
☕ Понравился обзор? Поделитесь с друзьями!
-
Лучшие бесплатные шестнадцатеричные редакторы (hex)
Программирование -
Лучшие бесплатные программы для замены и редактирования иконок
Программирование -
Лучшие бесплатные программы для извлечения текстов из файлов
Программирование -
Лучшие бесплатные редакторы исходного кода
Программирование -
Лучшие бесплатные программы для поиска и замены текста
Программирование -
Лучшие бесплатные редакторы HTML
Программирование
Добавить комментарий / отзыв
Загрузить PDF
Загрузить PDF
Если у вас есть файл с расширением .exe (или вообще любой файл), вы можете сделать для него установочный файл (инсталлятор) – это легко и быстро. Описанный метод предназначен пользователям Windows.
Шаги
-
1
Нажмите «Пуск» — «Выполнить» и введите iexpress.exe.
-
2
Если у вас есть .sed файл, в открывшемся окне выберите «Открыть существующий SED»; в противном случае отметьте «Создать SED» и нажмите «Далее».
-
3
Здесь необходимо задать конечную цель созданного файла.
- Если вы хотите, чтобы файлы были извлечены в папку, созданную инсталлятором, отметьте первую опцию и нажмите «Далее».
- Если вы хотите, чтобы инсталлятор был только установлен, отметьте среднюю опцию и нажмите «Далее».
- Не выбирайте последнюю опцию. Это приведет к созданию CAB файла, а не установочного файла.
- Если вы хотите, чтобы файлы были извлечены в папку, созданную инсталлятором, отметьте первую опцию и нажмите «Далее».
-
4
Введите название установочного файла и нажмите «Далее».
-
5
Теперь выберите, будет ли инсталлятор запрашивать подтверждения пользователя об установке программы.
- Если да, выберите последнюю опцию, введите текст запроса и нажмите «Далее».
- Если нет (то есть установка начнется автоматически), выберите первую опцию и нажмите «Далее».
- Если да, выберите последнюю опцию, введите текст запроса и нажмите «Далее».
-
6
Теперь выберите, будет ли пользователь подтверждать условия лицензионного соглашения (оно должно быть в виде .txt файла).
- Если нет, выберите первую опцию и нажмите «Далее».
- Если да, выберите вторую опцию и нажмите «Далее».
- Если нет, выберите первую опцию и нажмите «Далее».
-
7
Теперь выберите файлы, которые вы хотите добавить в инсталлятор. Для этого нажмите «Добавить». Если вы хотите удалить добавленный файл, выделите его и нажмите «Удалить». Затем нажмите «Далее».
-
8
Теперь задайте параметры окна инсталлятора.
- Если вы хотите, чтобы его размер был примерно равен размеру окна с сообщением об ошибке, выберите первую опцию и нажмите «Далее».
- Если вы хотите, чтобы окно располагалось за другими окнами, выберите вторую опцию и нажмите «Далее».
- Если вы хотите, чтобы размер окна был небольшим, выберите третью опцию и нажмите «Далее».
- Если вы хотите получить полноэкранный режим установки, выберите последнюю опцию и нажмите «Далее».
- Если вы хотите, чтобы его размер был примерно равен размеру окна с сообщением об ошибке, выберите первую опцию и нажмите «Далее».
-
9
Теперь вы можете ввести сообщение, отображаемое по завершении установки, например, «Установка завершена. Вы можете закрыть это окно.».
-
10
Теперь выберите папку для сохранения создаваемого инсталлятора. Затем нажмите «Далее».
-
11
Не закрывайте меню CMD — оно загрузит необходимые файлы и создаст установочный файл.
Реклама
Предупреждения
- Установочный файл не будет работать на старых компьютерах, в Mac OS или в Linux.
- Не добавляйте слишком много файлов или очень большой файл (например, размером 1 Гб). Это может привести к сбою создания инсталлятора или к ошибкам при установке программы.
Реклама
Об этой статье
Эту страницу просматривали 28 294 раза.
Была ли эта статья полезной?
Что вы делаете, когда создаете новое программное обеспечение для Windows — от простого диагностического инструмента до сложной компьютерной видеоигры — и хотите поделиться им со всем миром? Что ж, вы можете сжать файлы в один ZIP-файл и распространить его.
Или вы можете пофантазировать и вместо этого создать установщик EXE.
В этом посте мы рассмотрим три различных способа создания EXE: самораспаковывающийся пакет, простой установщик с использованием встроенного IExpress и расширенный установщик с помощью настраиваемой Inno Setup.
1. Создайте быстрый EXE-файл с помощью 7-Zip.
Вероятно, вы уже используете 7-Zip для извлечения всех видов архивных файлов и знаете, что 7-Zip может создавать архивные файлы, но знаете ли вы, что вы также можете использовать его для создания EXE-файла, который действует как установщик?
Он называется SFX-архивом (самораспаковывающимся) и работает, сжимая все ваши конечные файлы вместе, а затем встраивая в архив специальный EXE-файл, который знает, как все распаковать.
Другими словами, получатель может извлечь SFX-архив (который выглядит как EXE-файл), даже если у него нет нужного программного обеспечения, что может случиться с такими форматами, как 7Z, RAR, TAR и ZIP.
Вот как создать SFX-архив с помощью 7-Zip:
-
Подготовьте все свои файлы и каталоги в одном основном каталоге и назовите каталог как хотите.
-
Щелкните каталог правой кнопкой мыши и выберите 7-Zip> Добавить в архив …
-
В разделе «Параметры» включите «Создать SFX-архив» и выберите следующие параметры …> Формат архива: 7z> Уровень сжатия: Нормальный> Метод сжатия: LZMA2> Размер словаря: 16 МБ> Размер слова: 32> Размер сплошного блока: 2 ГБ
-
Наконец, нажмите ОК.
Обратите внимание, что SFX-архивы не являются настоящими файлами установщика. Они не помещают извлеченные файлы в назначенный целевой каталог. Они не изменяют реестр Windows. Кроме того, они не создают журналы установки и не отображаются как установленное программное обеспечение в приложении «Удалить». Это буквально архивные файлы, оформленные как EXE-файлы.
Скачать: 7-Zip для Окна (Бесплатно)
2. Как использовать IExpress для простого создания EXE
IExpress — это утилита, которая поставляется в комплекте с версиями Windows, начиная с Windows XP и выше. Утилита поставляется с внешним графическим интерфейсом (называемым IExpress Wizard), но вы также можете создавать файлы установщика, используя файлы директивы самоизвлечения (SED), написанные вручную. Мы рекомендуем Мастера.
Как и 7-Zip, описанный выше, этот метод создает самораспаковывающийся архив, но с двумя основными отличиями: во-первых, конечный пользователь будет проходить через многостраничный мастер установки, а во-вторых, конечный пользователь может указать целевой каталог для куда инструмент извлечет файлы.
И вот как вы создаете свой установщик EXE с помощью IExpress:
-
Откройте командную строку «Выполнить» (клавиша Windows + R) и введите iexpress.exe, чтобы запустить мастер IExpress.
-
Выберите «Создать новый файл директивы самоизвлечения» и нажмите «Далее».
-
Выберите «Извлечь только файлы» и нажмите «Далее».
-
В качестве заголовка пакета можно использовать имя вашего приложения.
-
Для запроса на подтверждение выберите Без подсказки или Запрашивать пользователя с помощью. В любом случае это не имеет значения. Для конечного пользователя включение одного — всегда безопасный выбор.
-
Для лицензионного соглашения выберите Показать лицензию, если вы хотите, чтобы конечный пользователь согласился с Лицензионным соглашением с конечным пользователем (EULA). В противном случае можно выбрать вариант Не отображать лицензию.
-
Добавьте все файлы, которые вы хотите видеть установленными, щелкнув «Добавить», перейдя туда, где находятся файлы, и выбрав их все.
-
Продолжите работу с мастером IExpress и выберите предпочтительные параметры для приглашений «Показать окно» и «Готовое сообщение».
-
В качестве имени пакета нажмите «Обзор», перейдите туда, где вы хотите создать установочный EXE-файл, и дайте ему имя. Это EXE-файл, который вы собираетесь распространить среди конечных пользователей. Нажмите «Далее.
-
Наконец, выберите Сохранить файл директивы самоизвлечения (SED), если вы хотите создать измененный установщик позже, например, когда вы исправили программное обеспечение и вам потребуется обновленный установщик. Если вы выберете «Не сохранять», вам придется выполнить весь процесс с нуля.
-
На странице «Создать пакет» нажмите «Далее».
Ваш пакет будет создан через несколько минут. Обратите внимание, что у IExpress есть некоторые особенности и проблемы:
-
Это не позволяет включать пустые каталоги.
-
Если в вашей установке есть подкаталоги, подкаталоги не будут включены.
-
Если у вас есть несколько файлов с одинаковым именем, даже в разных каталогах, создание установщика не удастся.
Из-за этих странностей мы рекомендуем вместо этого использовать метод, описанный ниже.
Связанный: Что такое GUI (графический интерфейс пользователя)?
3. Лучший способ создать EXE: используйте Inno Setup.
Inno Setup — это утилита с открытым исходным кодом, которая активно разрабатывается с 1997 года. Она была создана частично в ответ на то, что в то время было второстепенным InstallShield Express. С тех пор он стал предпочтительным создателем установщика для тех, кто не хочет изучать проприетарные варианты.
Его самая большая привлекательность — это его гибкость. Inno Setup использует файлы сценариев с расширением ISS («Inno Setup Script») для настройки различных аспектов программы установки: какие файлы включены, где происходит установка, нужно ли создавать ярлыки и т. Д. Файлы ISS используют форматирование, аналогичное файлам INI и может быть сгенерирован с помощью мастера установки Inno.
Чтобы создать установщик с помощью Inno Setup, запустите приложение Inno Setup Compiler. В приглашении к приветствию выберите «Создать новый файл сценария с помощью мастера сценариев». Оттуда введите имя вашего приложения и версию приложения. При желании вы также можете указать сведения об издателе приложения и веб-сайте приложения. Нажмите «Далее.
-
Теперь выберите базовую папку назначения, которая по умолчанию — Program Files.
-
Введите имя папки приложения, которое является именем основного каталога, в который будут помещаться ваши установочные файлы. Нажмите «Далее.
-
Для основного исполняемого файла приложения найдите и выберите основной EXE-файл, который запустит ваше приложение.
-
Если вы не устанавливаете приложение, включите «У приложения нет основного исполняемого файла». Затем добавьте файлы и папки в вашу установку с помощью кнопок «Добавить файлы …» и «Добавить папки …». Нажмите «Далее.
-
На странице «Ярлыки приложений» оставьте значения по умолчанию или измените их в соответствии со своими предпочтениями. Все они говорят сами за себя. Нажмите «Далее.
-
На странице документации приложения вы можете указать до трех файлов TXT, которые будут отображаться в процессе установки конечного пользователя. Обычно это LICENSE.TXT, INSTALL.TXT и README.TXT, но это может быть все, что вы хотите. Нажмите «Далее.
-
На странице «Настройка языков» оставьте английский, но вы можете добавить любое количество других языков. Нажмите «Далее.
Теперь выполните следующие действия, указанные ниже:
На странице настроек компилятора вы можете настроить EXE-файл установщика:
-
Папка вывода пользовательского компилятора — это место, где будет помещен полученный EXE-файл установщика.
-
Имя базового файла вывода компилятора — это то, что будет называться EXE-файл. Значение по умолчанию — setup.exe.
-
Файл значка Custom Setup — это значок, который будет использовать EXE-файл установщика. Это должен быть файл ICO, который вы можете скачать или преобразовать из PNG.
-
Пароль программы установки защитит неавторизованных пользователей от использования вашего установщика. Оставьте поле пустым, чтобы отключить эту функцию.
После настройки параметров нажмите Готово. Когда будет предложено скомпилировать новый сценарий, нажмите Да. Когда будет предложено сохранить сценарий, выберите Нет, если это одноразовый файл установщика. Выберите Да, если вы планируете изменить или обновить его позже.
Подождите, пока процесс завершится, и вуаля, у вас будет с собой исполняемый файл.
Скачать: Inno Setup для Окна (Бесплатно)
Если у вас базовое программное обеспечение или вы собираетесь распространять его среди ограниченного числа людей, используйте метод 7-Zip. Это просто, быстро и практически не требует технических знаний.
Если ваше программное обеспечение несколько простое, и вы хотите предоставить конечным пользователям настоящий мастер установки, воспользуйтесь методом IExpress. Наконец, выберите приложение Inno, если у вас сложное программное обеспечение и вы знаете, что делаете.
Введение
В этой статье пойдет речь про Inno Setup — удобный инструмент для упаковки приложений для OS Windows.
Почему Inno Setup? “Сегодня Inno Setup конкурирует и даже превосходит многие коммерческие инсталляторы в наборе функций и стабильности”, — говорится на официальном сайте разработчика. И действительно, этот инструмент довольно простой для освоения и мощный по своим возможностям.
На данный момент разработчики Inno Setup в качестве ключевых возможностей заявляют:
- поддержку всех версий Windows, начиная с 2000;
- поддержку как 64-битной, так и 32-битной установки;
- встроенный обработчик скриптов Pascal для более гибкой настройки;
- возможность взять приложение и все файлы, которые нужны для его работы, и упаковать их в один компактный .exe файл;
- Inno Setup поддерживает несколько режимов сжатия данных. При необходимости встроенное сжатие можно отключать и использовать сторонние архиваторы;
- позволяет при установке добавлять ключи реестра, запускать дополнительные приложения во время, до и после установки;
- возможность удалять ключи реестра и все следы активности программы, гибко настраивать деинсталлятор.
Первое знакомство
Скачать бесплатно стабильную версию Inno Setup Compiler можно с официального сайта. Там же можно найти FAQ и документацию на английском языке и сторонние библиотеки, упрощающие процесс создания Inno Setup Script (.iss).
В классическом приложении Inno Setup Compiler есть раздел Help, в котором можно найти FAQ, примеры скриптов и документацию.
При первом запуске программы пользователя встречает диалог, который предлагает посмотреть примеры, создать свой первый Inno Setup Script (.iss) с помощью мастера создания скриптов или открыть уже существующий .iss скрипт.
Для создания установочного файла можно воспользоваться мастером создания скриптов Inno Setup.
Мастер предложит заполнить:
- сведения о приложении,
- предпочтительные пути установки,
- файлы, из которых будет состоять конечный дистрибутив,
- нужны ли ярлыки, и если да, то где,
- лицензионное соглашение,
- документы с инструкциями,
- имя и место для итогового дистрибутива,
- пароль, если он требуется,
- выбрать языки, которые должен поддерживать инсталлятор.
После того, как мастер соберет все необходимые сведения, он предложит скомпилировать полученный скрипт. В папке, которая была выбрана для итогового дистрибутива, будет лежать готовый к установке файл.
Расширенная настройка
Если есть необходимость кастомизировать интерфейс инсталлятора, поработать с реестром или настроить действия в процессе удаления программы, то скрипт инсталлятора придется доработать.
Скрипт Inno Setup разделен на секции, каждая из которых отвечает за свой функционал. При этом бывает так, что для одной и той же цели могут подойти разные секции. Порядок выполнения секций строго определен и от расположения секций в скрипте не зависит.
Все секции скрипта, за исключением [Setup], [Messages], [CustomMessages], [LangOptions] и [Code], содержат строки, разделенные на параметры. Каждый параметр состоит из имени, за которым следует двоеточие, а затем значение. Если не указано иное, параметры являются необязательными, поскольку они принимают значение по умолчанию, если их не указать. Несколько параметров в строке разделяются точкой с запятой и могут быть перечислены в любом порядке.
В скрипте поддерживаются комментарии, для это нужно начать строку с точки с запятой ( “;” ).
Описание и примеры секций скрипта
В самом начале скрипта, до всех секций, определяются необходимые константы:
#define MyAppName "Example"
#define MyAppVersion "0.0.1"
#define MyAppPublisher "example developer"
#define URL "http://www.example.com"
#define MyAppURL "example.exe"
В данном случае MyAppName — это имя приложения, MyAppVersion — версия приложения, MyAppPublisher — разработчик. Эти константы будут доступны в любой части скрипта и при необходимости что-то изменить, достаточно сделать это один раз в одном месте.
[Setup]
В данном разделе содержатся глобальные параметры, используемые установщиком и деинсталлятором.
AppId={{9E594ED6-EBDC-4D98-990E-F3F6B9AB9ACE}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
Описание возможных директив секции Setup:
- AppId — уникальный идентификационный номер приложения. Генерируется автоматически;
- AppName — имя программы;
- AppVersion — версия программы;
- AppPublisher — разработчик программы;
- AppPublisherURL — сайт разработчика программы;
- AppSupportURL — сайт поддержки;
- DefaultDirName — папка, в которую инсталлятор предложит установить программу по умолчанию;
- DefaultGroupName — имя группы в меню меню “Пуск” которую инсталлятор предложит по умолчанию;
- OutputBaseFilename — имя файла установки, который получится после компиляции скрипта;
- OutputDir — папка, в которую будет помещен исполняемый файл инсталлятора;
- AllowNoIcons — на странице выбора будет отображаться флажок «Не создавать значков»;
- AlwaysShowDirOnReadyPage — всегда показывать папку для установки в списке настроек на странице “Всё готово к установке”;
- CreateUninstallRegKey — при значении “no” инсталлятор не будет создавать пункт программы в диалоге “Установка и удаление программ”;
- Uninstallable=no – не создавать деинсталлятор;
- DirExistsWarning — при значении auto инсталлятор спросит «Папка: … уже существует. Вы хотите продолжить установку в эту папку?»;
- LicenseFile — лицензионное соглашение;
- InfoBeforeFile — эта информация будет отображена перед страницей “Выбор папки установки” прямо в окне инсталлятора. Здесь можно поместить советы по установке программы и другую информацию, которая будет полезна пользователю для успешной инсталляции вашего приложения;
- InfoAfterFile — эта информация будет отображена после страницы “Выбор папки установки” прямо в окне инсталлятора;
- UserInfoPage — при значении yes, установка отобразит страницу для ввода информации о пользователе. Полученные значения будут в константах {userinfoname} и {userinfoorg};
- DefaultUserInfoName — имя пользователя, которое предложит инсталлятор по умолчанию;
- DefaultUserInfoOrg — название организации, которое предложит инсталлятор по умолчанию;
- UsePreviousUserInfo — использовать имя пользователя, название организации и серийный номер, которые ввел пользователь при предыдущей установке;
- UninstallRestartComputer — перезагрузить компьютер после удачного удаления программы;
- PrivilegesRequired — установка доступна только от имени администратора;
- Compression — параметры сжатия. Если есть необходимость использовать внешний архиватор, значение Compression нужно установить в “none”;
- AlwaysRestart — после успешной установки компьютер перезагрузится;
- RestartIfNeededByRun — компьютер будет перезагружен только если в этом нуждаются файлы, запускаемые из секции [Run];
- UsePreviousAppDir — использовать папку, которую пользователь выбрал при прошлой установке;
- UsePreviousGroup — использовать группу меню “Пуск”, которую указал пользователь при прошлой установке;
- UsePreviousSetupType — использовать тип и компоненты предыдущей установки;
- UsePreviousTasks — использовать задания, выбранные пользователем при предыдущей установке;
- WizardImageFile — картинка, которая будет отображаться на завершающем экране инсталлятора (должна находиться в каталоге, обозначенном как SourceDir, либо к ней должен быть прописан полный путь). Изображение должно быть в формате .bmp и иметь размер не более 164x314px. Ранее эта картинка отображалась также и на приветственном экране, но по рекомендациям microsoft приветственного экрана желательно избегать;
- WizardImageStretch — если установлено “yes” (не рекомендуется), по умолчанию изображения мастера установки будут растянуты или сжаты, до размера требуемого контейнера. Если установлено значение “no”, изображения мастера будут центрироваться в соответствующих областях. (Это соответствует поведению Inno Setup 4.1.2 и более ранних версий по умолчанию);
- WizardImageBackColor — назначает цвет фона за картинкой. Возможные значения:
- clRed (красный);
- clYellow (желтый);
- clOlive (оливковый);
- clLime (ярко зеленый);
- clGreen (зеленый);
- clTeal (салатовый);
- clAqua (зелено-голубой);
- clBlue (ярко-синий);
- clNavy (синий);
- clPurple (фиолетовый);
- clFuchsia (розовый);
- clMaroon (коричневый);
- clBlack (черный);
- clGray (серый);
- clSilver (серебряный);
- clWhite (белый);
- WizardSmallImageFile — маленькая картинка, во время инсталляции будет находиться в правом верхнем углу;
- WizardSmallImageBackColor — назначает цвет фона за маленькой картинкой. Возможные значения такие же как у большой;
- WindowVisible — если установлено “yes”, появится окно градиентного фона, отображаемое за мастером. Обратите внимание, что эта директива считается устаревшей и, вероятно, будет удалена в какой-то момент в будущем;
- BackColor — начальный цвет градиентной заливки окна, отображаемого за мастером (WindowVisible);
- BackColor2 — конечный цвет градиентной заливки заливки окна, отображаемого за мастером (WindowVisible);
- BackColorDirection — направление градиентной заливки (WindowVisible);
- BackSolid — по умолчанию “no”(градиентная заливка включена). При значении “yes” цвет фона будет сплошным и равным BackColor;
- WindowShowCaption — если установлено значение “no”, программа установки будет действительно «полноэкранным» — у нее не будет панели заголовка или границы, и она будет поверх панели задач. Эта директива не действует, если WindowVisible не установлен на “yes”.
- WindowVisible — если установлено “yes”, фоновое окно программы установки будет первоначально отображаться в максимизированном состоянии, не перекрывая панель задач. Эта директива не действует, если WindowVisible не установлен на “yes”;
- WindowResizable — если установлено значение “no”, пользователь не сможет изменить размер фонового окна программы установки, когда он не будет максимальным. Эта директива не действует, если WindowVisible не установлен на “yes”;
- FlatComponentsList — если для этой директивы установлено значение “yes”, программа установки будет использовать плоские флажки для списка компонентов. В противном случае программа установки будет использовать флажки “3D”;
- AppCopyright — указывает сообщение об авторском праве, которое будет отображаться в правом нижнем углу фонового окна программы установки, когда параметр WindowVisible установлен в значение “yes”. Значение этой директивы также используется в качестве значения по умолчанию для директивы VersionInfoCopyright, если оно не указано;
- SetupIconFile — задает значок инсталлятора. Файл должен быть расположен в исходной папке вашей установки при запуске компилятора установки, если не указано полное имя пути или имя пути префикс «компилятор:», и в этом случае он ищет файл в каталоге компилятора;
- ShowComponentSizes — если для этой директивы установлено значение “yes”, программа установки покажет размер компонента в списке компонентов. В зависимости от самого большого компонента программа установки будет отображать размеры в килобайтах или в мегабайтах;
- ShowTasksTreeLines — если для этой директивы установлено yes, программа установки покажет «древовидные линии» между родительскими и подзадачами;
- UninstallDisplayIcon — значок для деинсталлятора в диалоге “Установка и удаление программ” Панели управления;
- UninstallDisplayName — название программы в диалоге “Установка и удаление программ” Панели управления;
- UninstallFilesDir — указывает каталог, в котором хранятся файлы «unins *. *» для деинсталлятора. Не стоит менять это значение при обновлении программы, иначе программа установки не найдет журналы удаления из предыдущих версий и, следовательно, не сможет их добавить;
- UninstallIconFile — иконка, которая будет отображаться в правом верхнем углу окна удаления;
- UninstallStyle — стиль деинсталлятора;
- DisableStartupPrompt — если установлено “yes”, программа установки не покажет сообщение «Эта программа установит… на ваш компьютер…». Этот параметр не действует, если UseSetupLdr установлен на “no”.
[Types]
Эта секция используется, если разработчик хочет предоставить пользователю на выбор некоторые варианты установки. Следует помнить, что сама по себе секция [Types] только описывает возможные для данной программы типы установки, и должна комбинироваться с другими секциями.
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom
[Components]
Эта секция не является обязательной. Здесь определены все компоненты, которые будут отображаться на странице «Выбор компонентов» мастера, для настройки типа установки. Комбинируется с секцией [Types]. Если в секции [Components] перечислены компоненты, а секции [Types] не существует, типы установки будут созданы инсталлятором автоматически, и могут быть не такими, как вам хотелось бы.
Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help Files"; Types: full
Name: "helpenglish"; Description: "English"; Types: full
Name: "helpdutch"; Description: "Dutch"; Types: full
[Tasks]
Опциональная секция. Предоставляет пользователю возможность отметить задачи, которые он хотел бы выполнить во время установки. Эти задачи отображаются как флажки и переключатели на странице «Выбор дополнительных задач».Сами по себе задачи ничего не делают. Необходимо помечать какое-то действие в других секциях кодом Task: taskName; Такие действия будут выполнены, только если пользователь выбрал задачу на соответствующей странице.
[Task]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive unchecked
[Icon]Name: "{commondesktop}{#MyAppName}"; Filename: "{app}{#MyAppExeName}"; Tasks: desktopicon
В секции [Tasks] описывается задание. В окне инсталлятора оно появится после удачной установки приложения, перед страницей “Установка завершена”, и будет иметь вид строки, значение которой определит параметр Description. Задание выполнится, если пользователь поставит флажок в начале этой строки.
В секции [Icons] описывается, куда следует поместить ярлык, как ярлык будет озаглавлен и (по желанию) как он будет выглядеть, для какого именно файла он создается. Параметр Tasks секции [Icons] вызывает задание, описанное в секции [Tasks].
Для запуска каких-либо файлов секция [Tasks] не подходит — для этого существует секция [Run].
[Dirs]
Этот необязательный раздел определяет любые дополнительные каталоги помимо каталога приложений, который создается автоматически.
Обратите внимание, что вам не требуется явно создавать каталоги перед установкой файлов в них с помощью раздела [Files], поэтому этот раздел в первую очередь полезен для создания пустых каталогов. Пример, приведенный ниже, создает пустую папку “data” и “bin” в папке с приложением.
Name: "{app}data"
Name: "{app}bin"
[Files]
В этой секции определены любые файлы, которые необходимо установить в систему пользователя. Иногда достаточно указать исполняемый файл, который запускает инсталлируемое приложение. Но чаще необходимы еще какие-то ресурсы.
Если устанавливаемый файл является файлом ReadMe, инсталлятор после удачной установки приложения может предложить пользователю прочесть этот файл. Для этого используется флаг isreadme секции [Files], но файл ReadMe пользователь сможет прочитать, только если после установки компьютер не будет перезагружен.
Также файлы секции [Files] могут иметь атрибуты: «системный» (system), «только для чтения» (readonly) и «скрытый» (hidden). За атрибуты файла отвечает параметр Attribs, и если он не указан, то файл не будет иметь вообще никаких атрибутов.
Source: "CTL3DV2.DLL"; DestDir: "{sys}"; Flags: onlyifdoesntexist uninsneveruninstall
Source: "MYPROG.EXE"; DestDir: "{app}"
Source: "C:example.exe"; DestDir: "{app}"; Attribs: system hiddenSource: "README.TXT"; DestDir: "{app}"; Flags: isreadme
[Icons]
Секция определяет ярлыки приложения, которые необходимо создать в меню «Пуск» и/или в других местах, например на рабочем столе. Следует помнить, что если ярлыки указаны только в секции [Icons], они будут создаваться всегда. Если для ярлыка, задан еще и параметр Tasks в секции [Tasks] , то ярлык будет создан, только если пользователь выберет соответствующее задание при установке программы).
Name: "{group}My Program"; Filename: "{app}MYPROG.EXE"; WorkingDir: "{app}"
Name: "{group}Uninstall My Program"; Filename: "{uninstallexe}"
[INI]
Необязательная секция, определяющая, какие записи будут добавлены в INI-файл. Если INI-файл с заданным именем не существует в указанной папке, инсталлятор создаст его, а если INI-файл уже существует, он может добавить, удалить или изменить записи в нем, а также удалить существующий INI-файл и создать новый с тем же именем, но другим содержанием.
Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection
Filename: "MyProg.ini"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
В этом примере Filename – имя INI-файла (с расширением .ini). Section – имя секции INI-файла (в полученном INI-файле будет заключено в квадратные скобки). Key – ключ INI-файла. String – значение ключа Key (строка).
[UninstallDelete]
Эта секция необязательная и определяет, какие файлы или папки нужно удалить во время деинсталляции.
Type: files; Name: "{win}log.txt"
Для того, чтобы не перечислять все однотипные файлы, которые следует удалить при установке или удалении программы, можно использовать «маску»:
Type: files; Name: "{app}*.ini"
В этом примере удалятся все файлы с расширением .ini. Задание «масок» для инсталлятора то же, что и для Windows: * — префикс (суффикс) любой длины, ? – префикс (суффикс) из одного символа и т.д.
[Languages]
Раздел определяет языки, доступные в программе установки.
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "nl"; MessagesFile: "compiler:LanguagesDutch.isl"
[Messages]
Сообщения инсталлятора могут быть переопределены путем создания этой секции в файле сценария.
ButtonNext=&Forward >
[CustomMessages]
Раздел используется для определения значений сообщений для констант {cm: …}.
[CustomMessages]
CreateDesktopIcon=Create a &desktop icon
[Tasks]
Name: desktopicon; Description: "{cm:CreateDesktopIcon}"
[LangOptions]
Секция используется для определения языковых настроек, таких как шрифты, используемые программой установки и деинсталлятором. Как правило, вам не нужно создавать раздел [LangOptions] в вашем файле сценария, так как по умолчанию настройки, зависящие от языка, извлекаются из файла Default.isl, включенного в Inno Setup.
LanguageName=English
LanguageID=$0409
LanguageCodePage=0
DialogFontName=
DialogFontSize=8
WelcomeFontName=Verdana
WelcomeFontSize=12
TitleFontName=Arial
TitleFontSize=29
CopyrightFontName=Arial
CopyrightFontSize=8
RightToLeft=no
Если перед параметром секции [LangOptions] не указан идентификатор языка, инсталлятор применит их ко всем языкам, заданным в секции [Languages] (кроме параметров LanguageName и LanguageID). Для того, чтобы изменения затронули только конкретный язык, перед параметром следует указать префикс (идентификатор языка и точку):
rus.TitleFontSize=29
[Registry]
Этот необязательный раздел определяет любые ключи/значения реестра, которые необходимо создавать, изменять или удалять в системе пользователя во время установки.
По умолчанию ключи реестра и значения, созданные программой установки, при деинсталляции не удаляются. Чтобы при деинсталляции удалялись ключи или значения, необходимо добавить один из следующих флагов uninsdelete.
Root: HKCU; Subkey: "SoftwareMy Company"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "SoftwareMy CompanyMy Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SoftwareMy Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SoftwareMy CompanyMy Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SoftwareMy CompanyMy ProgramSettings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
Root: HKU; Subkey: {UserSid}SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem; ValueName: DisableRegistryTools; ValueType: dword; ValueData: 1
ValueType – тип значения. Может быть следующим:
- none – значение по умолчанию. Инсталлятор создаст пустой ключ без параметра; ValueName и ValueData при этом игнорируются;
- string – инсталлятор создаст строковый параметр (REG_SZ);
- expandsz – инсталлятор создаст расширенную строку. Используется, например, чтобы дописать значение к уже существующему. (REG_EXPAND_SZ);
- multisz – инсталлятор создаст многостроковый параметр (REG_MULTI_SZ);
- dword – инсталлятор создаст целочисленный параметр (REG_DWORD);
- binary – инсталлятор создаст двоичный параметр (REG_BINARY).
Если параметр ValueType равен string, expandsz или multisz, это будет строка, которая может содержать константы.
Если тип данных dword, это будет десятичное («123»), шестнадцатеричное («$7B»), или константа, представляющая собой целое число.
Если тип данных binary — последовательность шестнадцатеричных – десятичных байтов в форме: «00 ff 12 34».
Если тип данных none, параметр игнорируется.
[Run]
Раздел является необязательным. В этой секции можно указать любое количество программ для выполнения после того, как программа была успешно установлена, но до того, как программа установки отобразит окончательный диалог. Раздел [UninstallRun] также является необязательным, и указывает любое количество программ для выполнения в качестве первого этапа удаления. Оба раздела имеют одинаковый синтаксис, если не указано иное.
Программы выполняются в том порядке, в котором они отображаются в скрипте. По умолчанию при обработке записи [Run] / [UninstallRun] программа установки / удаления будет ждать завершения программы до перехода к следующей, если не используются флаги nowait, shellexec или waituntilidle.
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
[Code]
Pascal scripting (современный Delphi-подобный Pascal) добавляет множество новых возможностей для настройки вашей установки или удаления. Например:
- поддержка прерывания установки или деинсталляции запуска в пользовательских условиях;
- поддержка добавления пользовательских страниц мастера в программу установки во время выполнения;
- поддержка для извлечения и вызова DLL или других файлов из сценария Pascal до, во время или после установки;
- поддержка скриптовых констант, которые могут выполнять любые обычные константы, константы read-from-registry, read-from-ini и read-from-commandline, могут делать еще больше;
- поддержка временного удаления типов, компонентов и / или задач;
- поддержка условной установки записей [Files], [Registry], [Run] и т.д.
Pascal scripting делает почти все, что делает сама программа Inno и может делать еще больше.
Флаги
Большинство секций поддерживают параметр Flags. Этот параметр представляет собой набор дополнительных опций. Несколько флагов можно использовать в одной строке, разделяя их пробелами. В основном, для каждой секции предусмотрены свои специфические флаги.
[Registry]
- uninsdeletevalue — удаляет значения ключа при деинсталляции;
- deletekey — позволяет перед созданием нового ключа удалить уже существующий ключ со всеми его дочерними ключами, параметрами и значениями;
- deletevalue — позволяет перед созданием нового параметра в ключе удалить уже существующий параметр того же типа и с тем же именем;
- preservestringtype — если тип существующего параметра реестра не string или expandsz (т.е. не REG_SZ или REG_EXPAND_SZ), то он будет заменен строковым параметром с заданным значением, а если тип существующего параметра string или expandsz, заменится только его значение, а тип останется;
- uninsclearvalue — при удалении приложения параметр в реестре установится в пустую строку (с типом REG_SZ);
- uninsdeletekey — при удалении приложения удаляет ключ реестра со всеми его дочерними ключами, параметрами и значениями;
- uninsdeletekeyifempty — при удалении приложения ключ реестра удалится, только если он пустой;
- uninsdeletevalue — при удалении приложения удалится параметр реестра и его значение;
- dontcreatekey — используется в ситуациях, когда при установке уже существующий параметр в ключе реестра следует заменить новым, а если ключ или параметр не существует — не создавать ни ключа, ни параметра;
- createvalueifdoesntexist — инсталлятор создаст в ключе реестра параметр с заданным значением только в том случае, если он не существует. Не применяется с флагом deletevalue.
[Dirs]
- deleteafterinstall — указывает инсталлятору создать папку, но после успешной установки или, если установка прервана, удалить ее, если она пустая. Если в папке будут содержаться файлы, с помощью этого флага она не удалится;
- uninsalwaysuninstall — указывает деинсталлятору всегда пытаться удалять папку (если она пустая), даже если она уже существовала до начала установки приложения;
- uninsneveruninstall — указывает деинсталлятору не удалять папку при удалении программы — обычно при удалении программы деинсталлятор удаляет все папки, которые были созданы инсталлятором при установке (если они пустые).
[Files]
- ignoreversion — установить файл, который, возможно, уже установлен на компьютере пользователя и имеет более позднюю дату создания, т.е. является более новым (в этом случае инсталлятор по умолчанию оставит существующий файл);
- promptifolder — по умолчанию, когда установленный файл имеет более старый номер версии, чем существующий файл, программа установки не заменит существующий файл. Когда этот флаг используется, программа установки спросит пользователя, следует ли заменять файл;
- allowunsafefiles — отключает автоматическую проверку компиляторами для небезопасных файлов. Настоятельно рекомендуется, НЕ использовать этот флаг, если вы не уверены, что знаете, что делаете;
- comparetimestamp — использование этого флага не рекомендуется, кроме как в крайнем случае, потому что в нем есть неотъемлемая проблема: разделы NTFS хранят отметки времени в UTC (в отличие от разделов FAT). Время будет сдвигаться всякий раз, когда пользователь изменяет часовой пояс своей системы или когда переход на летнее/зимнее время. Это может создать ситуацию, когда файлы заменяются, когда это не нужно или не заменяются, когда это нужно;
- confirmoverwrite — всегда запрашивать у пользователя подтверждение перед заменой существующего файла;
- onlyifdestfileexists — файл должен заменить уже установленный на компьютере пользователя файл с тем же именем, а если такого файла в системе пользователя нет, то вообще не устанавливаться. Этот флаг полезен в том случае, когда вы создаете инсталлятор для обновления (апдейта) уже установленной у пользователя программы. Но следует помнить, что пользователь может переименовать некоторые файлы программы, и тогда обновление не установится, даже если пользователь установил программу;
- onlyifdoesntexist — установить файл, только в случае, если он еще не существует;
- overwritereadonly — всегда перезаписывать файл, помеченный атрибутом “только для чтения”. Без этого флага программа установки будет запрашивать у пользователя, должен ли быть перезаписан существующий файл “только для чтения”;
- replacesameversion — если уже установленный и устанавливаемый файлы имеют одну версию, по умолчанию инсталлятор не заменит уже установленный файл. Если установленный файл должен быть заменен (что рекомендуется), используется этот флаг;
- nocompression — если задать отдельному файлу флаг nocompression, то инсталлятор не будет сжимать только заданный файл.
[INI]
- uninsdeleteentry — используется для того, чтобы при удалении программы удалялся определенный ключ в заданной секции;
- uninsdeletesection — показывает, что при удалении программы должна удалиться заданная секция со всеми ее ключами и их значениями;
- uninsdeletesectionifempty — используется для того, чтобы при удалении программы удалялась только пустая секция;
- createkeyifdoesntexist — ключ с заданным именем будет создан только в том случае, если до установки он не существовал.
[Run]
- shellexec — применяется для файлов, которые не являются исполняемыми (.exe или .com) или командными (.bat или .cmd). С этим флагом файл запустится с помощью программы, принятой по умолчанию для его типа (например, файл ReadMe.txt будет отображен на странице Блокнота). Флаг shellexec не определяет, выполнилась программа или нет, поэтому его следует комбинировать с флагами nowait (инсталлятор не будет ждать, пока запущенный файл выполнится, и сразу перейдет к следующему параметру секции) или waituntilidle (в этом случае установка будет приостановлена для того, чтобы пользователь смог ввести необходимые данные);
- postinstall — используется для того, чтобы пользователь мог выбрать, какие файлы он хочет запустить, а какие нет. С помощью параметра Description можно указать комментарий к каждому из представленных на выполнение файлов. Если он не указан, инсталлятор будет использовать стандартный комментарий;
- unchecked — по умолчанию файл, помеченный таким флагом, будет не выбран;
- hidewizard – во время выполнения программы окно инсталлятора будет скрыто;
- unhidden – выполняемая программа (или файл) запустится в свернутом окне. Не следует использовать этот флаг для программы, при выполнении которой потребуется участие пользователя (например, он должен будет ввести какие-либо данные);
- runmaximized – программа (файл) запустится в развернутом окне;
- runminimized – программа (файл) запустится в свернутом окне;
- skipifnotsilent — указывает инсталлятору не запускать файл при обычной (не ускоренной) установке;
- skipifsilent — указывает инсталлятору не запускать файл при быстрой и очень быстрой установке;
- skipifdoesntexist — не выдавать сообщение об ошибке, если запускаемый файл не существует.
Константы
Большинство записей в сценарии могут содержать в себе константы. Это предопределенные строки, заключенные в фигурные скобки {}. Программа установки или удаления преобразует константы в их литеральные значения, в зависимости от выбора пользователя и конфигурации системы.
Ниже приведен список используемых в Inno Setup констант:
- {app} — папка установки, которую пользователь выбирает на странице «Выбор места назначения» мастера;
- {win} — каталог ОС Windows. «C:WINDOWS»;
- {sys} — системная папка Windows. В 64-битной Windows по умолчанию путь System32, возвращаемый этой константой, сопоставляется с каталогом, содержащим 32-битные системные файлы, как и на 32-разрядной Windows. (Это может быть отменено путем включения 64-битного режима.);
- {syswow64} — это фактический каталог, в котором находятся 32-разрядные системные файлы. В 32-битной Windows 32-разрядные системные файлы находятся в «System32» или «System», а не в отдельной директории SysWOW64, поэтому эта константа будет ссылаться на тот же каталог, что и {sys}. Не рекомендуется использовать эту константу, если нет конкретной потребности в получении имени фактического каталога, в котором находятся 32-разрядные системные файлы;
- {sd} — указывает на корневую папку диска, где установлена Windows, обычно «C:». Эта константа каталога эквивалентна переменной среды SystemDrive;
- {pf} — путь к каталогу Program Files;
- {cf} — путь к каталогу Common Files;
- {tmp} — временная директория, используемая программой установки или удаления. Это не значение переменной среды TEMP пользователя. Это подкаталог временного каталога пользователя, который создается при установке или удалении при запуске (с именем типа «C: WINDOWS TEMP IS-xxxxx.tmp»). Все файлы и подкаталоги в этом каталоге удаляются при завершении установки или удаления;
- {fonts} — каталог шрифтов. Обычно называется «FONTS» в каталоге Windows;
- {dao} — DAO. Это эквивалентно {cf} Microsoft Shared DAO;
- {dotnet11} — 32-разрядный корневой каталог .NET Framework версии 1.1.
Если будет предпринята попытка обратиться к этой константе в системе без .NET Framework версии 1.1. будет брошено исключение; - {dotnet20} — корневой каталог .NET Framework версии 2.0-3.5. {dotnet20} эквивалентен {dotnet2032}, если установка не выполняется в 64-битном режиме, и в этом случае она эквивалентна {dotnet2064};
- {dotnet2032} — 32-разрядная корневая директория .NET Framework версии 2.0-3.5;
- {dotnet2064} — только 64-разрядная версия Windows: 64-разрядная корневая директория .NET Framework версии 2.0-3.5;
- {dotnet40} — .NET Framework версии 4.0 и более поздней версии. {dotnet40} эквивалентно {dotnet4032}, если установка не выполняется в 64-битном режиме, и в этом случае она эквивалентна {dotnet4064};
- {dotnet4032} — 32-разрядная версия .NET Framework версии 4.0 и более поздней версии;
- {dotnet4064} — только 64-разрядная версия Windows: 64-разрядная версия .NET Framework версии 4.0 и более поздняя;
- {group} — путь к папке «Пуск», выбранный пользователем на странице «Выбор папки« Меню «Пуск» меню «Настройка». Эта папка создается в профиле «Все пользователи», если пользователь, устанавливающий приложение, не имеет административных прав, и в этом случае он создается в профиле пользователя;
- {localappdata} — путь к локальной папке Application Data;
- {userappdata} & {commonappdata} — путь к папке Application Data;
- {usercf} — путь к каталогу общих файлов текущего пользователя. Только Windows 7 и более поздние версии поддерживают {usercf}; если он используется в предыдущих версиях Windows, он переводится в тот же каталог, что и {localappdata}ProgramsCommon;
- {userdesktop} & {commondesktop} — путь к папке рабочего стола;
- {userdocs} & {commondocs} — путь к папке «Мои документы»;
- {userfavorites} & {commonfavorites} — путь к папке «Избранное»;
- {userpf} — путь к каталогу Program Files текущего пользователя. Только Windows 7 и более поздние версии поддерживают {userpf}; если он используется в предыдущих версиях Windows, он будет переводиться в тот же каталог, что и {localappdata}Programs;
- {olddata} — позволяет дополнить уже существующее значение параметра реестра, если его ValueType равен string, expandsz, или multisz.
Заключение
После заполнения необходимых секций скрипт Inno Setup компилируется, и в папке, которую нужно было указать в директиве “OutputDir” в секции Setup генерируется исполняемый файл установщика. Для того чтобы скомпилировать скрипт, нужно в меню редактора выбрать Build -> Compile, как показано на скриншоте ниже:
Можно также выбрать Run -> Run, тогда скрипт скомпилируется и сразу начнется установка приложения.
В меню Help -> Inno Setup Example Scripts можно найти несколько примеров того, как этот инструмент позволяет настроить установщик, чтобы он выполнял ту или иную задачу.
Вообще, документация и FAQ, которые прилагаются к редактору скриптов, составлены очень понятно и подробно, там можно найти решение большинства основных задач. Есть и русскоязычные форумы, где происходит обсуждение скриптов инсталлятора, особенностей их создания. Там можно найти много интересных примеров или попросить совета. А когда все начнет получаться — делиться своими знаниями, а может даже и похвастаться своими успехами.
Ссылка на обсуждение
Ссылка на собранные FAQ форума
Для удобства установки ваших программ на компьютеры пользователей вам понадобится создание дистрибутива. Сегодня я хочу рассказать об очень мощном и бесплатном инструменте для создания дистрибутивов для ОС 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 Setup, и Source Code, для загрузки исходных кодов, на которых я не буду заострять внимание.
Если вы собираетесь пользоваться более продвинутыми редакторами скрипта 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). Есть русификация.
-
-
-
- Inno Setup Toolbar Advanced for VB6 – создаёт дистрибутив для проекта Visual Basic из среды разработки Visual Basic 6.0.
-
-
-
- ISSComponentHelper – позволяет по файлу 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):
-
-
- ISTool – пользовательский интерфейс для работы со скриптом Inno Setup. Эта программа очень похожа на Inno Script Studio. Если поискать, то можно найти русификацию, см. картинку.
-
-
-
- InnoIDE – ещё один пользовательский интерфейс для работы со скриптом Inno Setup. Сайт InnoIDE перестал существовать примерно в августе 2012 года (www.innoide.org), поэтому использовать эту разработку не имеет смысла. Но сохранился архив сайта, который можно посмотреть здесь. Там же можно скачать дистрибутив. Русификацию для InnoIDE можно найти в Интернете.
-
-
-
- InnoSetup Script Joiner – утилита объединяющая несколько скриптов Inno Setup в один.
- Innounp (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:WINDOWSSYSTEM».
- {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:WINDOWSTEMPIS-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}ProgramsCommon).
- {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} – полный путь к консоли, например, WindowsSystem32cmd.exe (переменная окружения COMSPEC не используется для раскрытия этой константы).
- {computername} – имя компьютера, на котором выполняется инсталляция или деинсталляция (значение возвращаемое функцией GetComputerName).
- {drive:Path} – получает букву диска с двоеточием из произвольного пути. Если указан UNC-путь, то возвращает сервер и папку, например, \SERVERSHARE. Здесь также, чтобы написать символы «,», «|», «}» или «%», нужно писать «%2c», «%7c», «%7d» и «%25», соответственно. Вот примеры: {drive:{src}}, {drive:c:pathfile} или {drive:\serversharepathfile}.
- {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:HKxxSubkeyName,ValueName|DefaultValue} – строка из реестра, где HKxx – корневой ключ реестра, SubkeyName – путь к нужному ключу, ValueName – имя значения (или пусто, если нужно считать значение по умолчанию для ключа), DefaultValue – строка которую нужно использовать, если указанного значения нет или значение не строка (REG_SZ или REG_EXPAND_SZ). Здесь также, чтобы написать символы «,», «|», «}» или «%», нужно писать «%2c», «%7c», «%7d» и «%25», соответственно. Пример: {reg:HKLMSoftwareMy 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 FilesMy Programunins000.exe. Эта константа обычно используется для создания ярлыка для удаления программы в секции [Icons] скрипта 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, заставляющая компилятор втягивать строки из указанного произвольного текстового файла, в то место где эта директива стоит. Вот синтаксис:
С помощью директивы #preproc вы можете указать, какой препроцессор следует использовать: встроенный, поддерживающий только директиву #include, или Inno Setup Preprocessor (ISPP), который поддерживает очень много директив и функций. По умолчанию в скриптах используется препроцессор ISPP, если он установлен, а в файлах .isl используется встроенный препроцессор. Вот синтаксис:
#preproc builtin #preproc ispp
Секции скрипта Inno Setup
Приведу здесь полный список всех секций Inno Setup с кратким описанием. Полное описание секций и список элементов секций можно найти в справке в разделе «Setup Script Sections».
[Setup] – эта секция содержит глобальные настройки, используемые при инсталляции и деинсталляции. Пример:
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}My Program DefaultGroupName=My Program
[Types] – необязательная секция, определяющая варианты установки (Полная/Компактная/Выборочная), которые будут отображаться на странице выбора компонентов для установки. Пример:
[Types] Name: "full"; Description: "Full installation" Name: "compact"; Description: "Compact installation" Name: "custom"; Description: "Custom installation"; Flags: iscustom
[Components] – необязательная секция, определяющая компоненты, которые будут отображаться на странице выбора компонентов для установки. Пример:
[Components] Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed Name: "help"; Description: "Help Files"; Types: full Name: "helpenglish"; Description: "English"; Types: full Name: "helpdutch"; Description: "Dutch"; Types: full
[Tasks] – необязательная секция, для создания дополнительных заданий, выполняемых при инсталляции. Пользователь будет видеть задания в виде переключателей и сможет выбирать выполнять то или иное задание или нет. Пример:
[Tasks] Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: main Name: desktopiconcommon; Description: "For all users"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive Name: desktopiconuser; 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] – эта необязательная секция определяет, какие дополнительные папки, кроме папки приложения, нужно создавать.
[Dirs] Name: "{app}data" Name: "{app}bin"
[Files] – необязательная секция, определяющая, какие файлы будут устанавливаться на компьютер.
[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] – необязательная секция, определяющая, какие будут создаваться ярлыки в меню «Пуск», на рабочем столе и т.д.
[Icons] Name: "{group}My Program"; Filename: "{app}MYPROG.EXE"; WorkingDir: "{app}" Name: "{group}Uninstall My Program"; Filename: "{uninstallexe}"
[INI] – необязательная секция, определяющая, какие записи будут добавлены в INI-файл.
[INI] Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection Filename: "MyProg.ini"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
[InstallDelete] и [UninstallDelete] — эти необязательные секции определяют, какие файлы или папки нужно удалить, соответственно, при первой инсталляции или деинсталляции. Пример:
[UninstallDelete] Type: files; Name: "{win}MYPROG.INI"
[Languages] – секция определяет языки, которые будут доступны при инсталляции. При запуске инсталлятора будет подобран язык, совпадающий с языком системы. В ином случае по умолчанию будет использоваться язык находящийся первым в секции [Languages]. Пример:
[Languages] Name: "en"; MessagesFile: "compiler:Default.isl" Name: "nl"; MessagesFile: "compiler:LanguagesDutch.isl"
[Messages] – секция для замены сообщений, описанных в языковых файлах .isl. Пример замены стандартного текста «&Next >» на кнопке перехода на следующий шаг только для английского языка:
[Messages] en.ButtonNext=&Forward >
[CustomMessages] – секция для определения значений константы {cm:…}, см. описание констант выше. Пример использования:
[CustomMessages] CreateDesktopIcon=Create a &desktop icon [Tasks] Name: desktopicon; Description: "{cm:CreateDesktopIcon}"
[LangOptions] – секция содержит настройки языка, такие как шрифт. Пример:
[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] – эта необязательная секция определяет, какие ключи и значения нужно создать, изменить или удалить в реестре. Примеры использования:
[Registry] Root: HKCU; Subkey: "SoftwareMy Company"; Flags: uninsdeletekeyifempty Root: HKCU; Subkey: "SoftwareMy CompanyMy Program"; Flags: uninsdeletekey Root: HKLM; Subkey: "SoftwareMy Company"; Flags: uninsdeletekeyifempty Root: HKLM; Subkey: "SoftwareMy CompanyMy Program"; Flags: uninsdeletekey Root: HKLM; Subkey: "SoftwareMy CompanyMy ProgramSettings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
[Run] – эта необязательная секция определяет, какие программы нужно выполнить после успешной установки, но до появления финишного шага в окне мастера установки. Примеры:
[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
[UninstallRun] – эта необязательная секция определяет, какие программы нужно выполнить в самом начале деинсталляции.
[Code] – в этой необязательной секции вы можете разместить свой Pascal-скрипт. Для обработки Pascal-скрипта используется движок RemObjects Pascal Script. Этот движок так же бесплатен, как и Inno Setup. Официальная страница движка RemObjects Pascal Script — здесь. Примеры использования можно найти в файлах «Code*.iss» и «UninstallCode*.iss» в папке «Examples» в месте установки Inno Setup.
Порядок инсталляции и деинсталляции
Очень важный момент при инсталляции – это понимание, в каком порядке происходит выполнение скрипта. Ниже перечислены действия инсталлятора в том порядке, в котором они будут выполняться при установке:
-
-
- Выполнение секции [InstallDelete].
- Элементы секции [UninstallDelete] сохраняются в журнале деинсталляции (который, на этом этапе хранится в памяти).
- Создаётся директория приложения, если необходимо.
- Выполняется секции [Dirs].
- Резервируется имя файла журнала деинсталляции, если необходимо.
- Выполняется секция [Files] (регистрация файлов пока не производится).
- Выполняется секция [Icons].
- Выполняется секция [INI].
- Выполняется секция [Registry].
- Файлы, которые должны регистрироваться, регистрируются, за исключением случая, когда система должна быть перезагружена. В случае, когда требуется перезагрузка, регистрация происходит только после рестарта системы.
- Добавление в список установленных программ (Панель управленияПрограммыПрограммы и компоненты), если необходимо.
- Элементы секции [UninstallRun] сохраняются в журнал деинсталляции.
- EXE-файл и журнал деинсталлятора сохраняются на диск. После этого момента, пользователю запрещена отмена установки, и любые последующие ошибки не приведут к откату установки.
- Выполнение секции [Run], кроме элементов секции с установленным флагом «postinstall», которые будут выполнены после отображения последнего шага мастера установки.
- Обновление ассоциаций для файлов, если флаг «ChangesAssociations» установлен в «yes».
- Оповещение выполняемых приложений о том, что переменные окружения изменились, если флаг «ChangesEnvironment» установлен в «yes».
- Что касается элементов секции, то они будут выполняться в том порядке, в котором они расположены внутри секции.
-
Деинсталляция происходит в обратном порядке. Но это не касается секций [UninstallRun] и [UninstallDelete], которые будут выполняться в том порядке, в котором они встречаются в скрипте (не в обратном порядке).
Препроцессор Inno Setup
Пару слов хочется написать о препроцессоре Inno Setup (ISPP). Основная задача препроцессора – это автоматизация задач во время компиляции и снижение вероятности опечатки в ваших скриптах. Например, вы можете объявить переменную ISPP (переменная времени компиляции), содержащую имя вашего приложения, а затем использовать значение этой переменной в нескольких местах вашего скрипта. Если в дальнейшем по какой-то причине вы должны изменить имя вашего приложения, вы сможете сделать это в одном месте вашего скрипта. Без ISPP, вам придётся найти и исправить все части скрипта, где вы используете имя приложения, например, AppName, AppVerName, DefaultGroupName и т.п.
Другой пример использования ISPP – это вытягивание информации о версии приложения из ЕХЕ-файла и использование её в инструкции AppVerName в секции [Setup]. Без ISPP, вам придется менять скрипт каждый раз при изменении версии приложения.
Кроме того, разбиение скрипта на части, даёт возможность создать единый скрипт для разных версий вашего приложения (например, пробная и полнофункциональная версии).
При использовании препроцессора важно помнить, что препроцессор работает только во время компиляции.
Вызов компилятора Inno Setup из командной строки
Не лишним будет знать и о возможности компиляции дистрибутива из командной строки. Вызов компиляции выглядит следующим образом:
compil32 /cc <script name>
А вот пример:
compil32 /cc "c:isetupsamplesmy script.iss"
Вызов компиляции из командной строки, в данном случае, не скрывает отображение прогресса или сообщений об ошибках. Компилятор возвращает 0, если компиляция прошла успешно, 1, если параметры командной строки переданы неверно, или 2, если компиляция не удалась.
Альтернативный способ компиляции – это использование консольного компилятора ISCC.exe. Вот схема использования компилятора:
iscc [options] <script name>
А вот пример:
iscc "c:isetupsamplesmy 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:isetupsamplesmy script.iss"
ISCC возвращает 0, если компиляция прошла успешно, 1, если неправильно указаны параметры или произошла внутренняя ошибка, или 2, если компиляция не удалась.
В заключении об Inno Setup
Рассказать обо всех возможностях Inno Setup не удастся в рамках одной статьи, это очень большой объём информации, поэтому я описал здесь лишь основные моменты. После прочтения вы сможете начать пользоваться этим замечательным инструментом для создания собственных дистрибутивов. В будущем я расскажу про альтернативные пользовательские интерфейсы. А сейчас, пишите ваши комментарии к статье, и я постараюсь ответить на все ваши вопросы.
Как создать свой установщик программ
Подпишись на нас в Telegram
Привет, читатель или случайный гость, сегодня речь пойдет об так — называемом упаковщики программ (инсталлятор) мы сегодня посмотрим как — же сделать свой собственный инсталлятор
Сначала разберем
Что такое инсталлятор?
Инсталлятор — это компьютерная программа/приложение, которая устанавливает различные файлы, такие как приложения, драйверы, или другое программное обеспечение, на персональный компьютер конечного пользователя
Инсталлятор файлов обычно имеет формат EXE реже встречаются устаревшие DOS-форматы установщиков
Для чего нужен инсталлятор?
- Ну, во — первых это упаковка программ в единую систему
- Во — вторых не одна сложная программа например видеоигра ну никак не может быть портабл — версии (это такая версия,которая не требует установки)
Инсталлятор: Присутствует везде! Даже при установки операционной системы тоже он присутствует
Кому нужен инсталлятор?
- Разработчикам софта/программного обеспечения
- Всяким мододеллам
Как создать свой инсталлятор?
Мы не будем сегодня прибегать к сложному пути, и выберем в этом посте, самый простой! сделаем инсталлятор с помощью специального софта.
Для создание инсталлятора вам надо:
- Скачать SMART INSTALLER (можно из официального сайта) программа платная пробный период 30 дней
- Немного прямых рук
- Софт/или другое что вы собрались упаковывать!
- Программа полностью на русском языке, поэтому вам думаю вообще не составит труда все прописать как нужно!
В разделе файлы: вам надо перетащить все файлы, которые войдут в пакет установки через инсталлятор. Если не работает перетаскивание просто нажмите на плюсик в диалоговом окне.
В других разделах: (боковая колонка) можно полностью настроить ваш инсталлятор. К примеру выставить требование к установки, или настроить приветственное окно при первом запуски нашего SETUP.EXE
- Как мы все закончили вам надо нажать (F9) либо зеленную кнопку плей, чтобы пошел процесс компиляции. Скорость процесса пропорциональна весу файлов, чем тяжелее вес, тем дольше будет идти упаковка.
Все готово! Кстати будьте внимательны! Опытные юзеры могут через установщик такой! кидать вирусы, но сама программа не имеет к этому отношения никакого!
Если вам что — то непонятно по — программе напишите в комментариях!
Ключ активации программы: Smart Installer Maker!
Просмотров 4 626
- 1. Сборка инсталлятора
- 1. Шаг первый. Запуск сценария сборки скрипта
- 2. Шаг второй. Задаем данные программы
- 3. Шаг третий. Настройка папки для установки приложения
- 4. Шаг четвертый. Выбор папок и файлов, которые будут входить в пакет
- 5. Шаг пятый. Установка дополнительных параметров инсталлятора
- 6. Шаг шестой. Задаем лицензионное соглашение
- 7. Шаг седьмой. Настраиваем язык инсталлятора
- 8. Шаг восьмой. Настройка выходной папки и названия инсталлятора
- 9. Шаг девятый. Сборка инсталлятора
- 2. Резюме
- 3. Видеоурок
В
прошлой статье
Мы научились быстро собирать все используемые в проекте DLL-библиотеки. А теперь настало время поговорить о том, как собрать
инсталлятор
для ОС Windows. Уже длительное время пользуюсь довольно удобной opensource утилитой под названием InnoSetup, которая позволяет буквально в несколько кликов собирать мультиязычный инсталлятор.
Инсталлятор собирается утилитой из скрипта, который вы можете написать в рукопашную, или воспользоваться сценарием по созданию скрипта. Второй вариант проще и достаточно эффективен.
Сборка инсталлятора
Шаг первый. Запуск сценария сборки скрипта
Для запуска сценария заходим в меню и выбираем создать новый:
File > New
или комбинация клавиш
Ctrl + N.
После чего нажимаем на кнопку
Next.
Шаг второй. Задаем данные программы
На этом шаге производим настройку учетных данных программы:
- Название приложения;
- Версию приложения;
- Издателя приложения;
- Веб-сайт приложения.
После чего следуем дальше (кнопка Next).
Шаг третий. Настройка папки для установки приложения
На этом шаге выбираем папку, куда установится приложение, если она требуется, а также можем уточнить, позволять ли пользователю изменять целевую папку или нет.
Шаг четвертый. Выбор папок и файлов, которые будут входить в пакет
На данном шаге необходимо выбрать
исполняемый файл
(*.exe), папки и библиотеки Вашего приложения.
Шаг пятый. Установка дополнительных параметров инсталлятора
На данном шаге мы настраиваем иконки, которые будут создаваться при установке приложения, а также права пользователя на настройку этих иконок при установке.
Шаг шестой. Задаем лицензионное соглашение
Если конечно вы успели его написать …
Шаг седьмой. Настраиваем язык инсталлятора
Шаг восьмой. Настройка выходной папки и названия инсталлятора
На данном шаге настраиваем путь к папке, в которой будет собран инсталлятор и его название, а также иконку инсталлятора. Следующие шаги нажимаем
Next
и в конце
Finish.
Шаг девятый. Сборка инсталлятора
После окончания работы сценария по подготовке скрипта утилита предложит собрать инсталлятор.
От сборки инсталлятора рекомендую поначалу отказаться, если у Вас имеются папки со вложенными в них файлами. Поскольку всё равно необходимо вручную прописать путь сборки файлов, которые находятся в этих папках.
Для этого найдите блок [
Files
], а в нём строку, где выбрана папка с содержимым.
В данном случае это строка:
Source: "D:gui_stm32imageformats*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirsНеобходимо поправить параметр
DestDir,
как показано ниже, иначе инсталлятор свалит все файлы в общую кучу.Source: "D:gui_stm32imageformats*"; DestDir: "{app}imageformats"; Flags: ignoreversion recursesubdirs createallsubdirsРезюме
Подводя итоги, могу утверждать, что утилита справляется со своим функционалом на
«Отлично»
А скачать программу можно с официального сайта по следующей ссылке:
InnoSetup
Только не забудьте собрать все DLL проекта в одну папку, как это делалось в
прошлой статье
.
Купить лицензионную версию Windows можно на сайте:
https://ggsel.net/catalog/os
Видеоурок