Быстрая сборка установщика User guide
Создание файла установщика
Для сборки установщика на Windows будем использовать программу Inno setup
Cсылка на скачивание Inno setup https://jrsoftware.org/isdl.php
Официальная документация https://jrsoftware.org/ishelp
После запуска Inno setup открывается начальное меню с возможностью создать новый файл или выбрать недавние
При создании нового файла есть выбор
- Create a new empty script file - наш выбор, если будете использовать код из данной статьи, который уже настроен
- Create a new script file using the Script Wizard - использовать, если хотим с нуля создать установщик со своими настройками. Не буду описывать данный пункт подробно, так как там всё довольно легко.
После выбора Create a new empty script file - Нам отображается меню с возможностью ввода кода.
Сюда необходимо вставить код ниже.
Для удобства, ключевые строчки, которые необходимо исправить, выделены жирным шрифтом.
Код
#define MyAppName "Название приложения/игры в кавычках"
#define MyAppVersion "Версия, например: 1.6.0, в кавычках"
#define MyAppPublisher "Название компании/команды, в кавычках"
#define MyAppURL "Можно добавить сайт здесь, в кавычках"
#define MyAppExeName "Название приложения, например: Game.exe, в кавычках"
#define MyAppAssocName MyAppName + " Setup"
#define MyAppAssocExt ".myp"
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId= {{Здесь вставляем сгенерированный код для приложения (см.далее)}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
; autopf - при установке будет предлагать папку Program files, или переустановит в ту, где было до этого установлено приложение
ChangesAssociations=yes
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputBaseFilename= Название файла установщика, например: Game_setup
SetupIconFile= Путь для иконка формата ico, например: D:\icons\Game_icon.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
; Выбор языков при начале установки
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
; файлы, которые нужно упаковать, нам важен исполнительный файл и остальные в папке
[Files]
Source: "Путь к исполнительному файлу (который нужно запустить, чтобы запустилась игра формата .exe), например, D:\Build\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "Путь ко всем остальным файлам, которые нужно установить, например, D:\Build\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
AppId
Id, по которому будет определяться приложение. Для разных приложений используем разный id, для одинаковых - одинаковый.
Чтобы, сгенерировать AppId, заходим во вкладку Tools, а затем нажимаем Generate GUID
Сгенерированный ID появится там, где сейчас находится курсор мыши:
Сгенерированный id необходимо вставить в поле AppId, в формате:
AppId= {{сгенерированный id}
Сборка
Сохраняем файл проекта
Файл установщика будет сохранен в папке Output в той же папке, что и сохранен файл проекта, так что сохраняйте проект в удобном месте)
После сохранения можно собирать проект, нажав на синюю кнопку Run
Ждём…
После завершения сборки установщик автоматически запуститься
Готовый файл будет ждать вас в папке Output в той же папке, что и сохранен файл проекта (это который с расширением .iss)
Мой тг канал: