Создание файла установщикаДля сборки установщика на Windows будем использовать программу Inno setupCсылка на скачивание 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=yesDefaultGroupName={#MyAppName}AllowNoIcons=yes; Uncomment the following line to run in non administrative install mode (install for current user only.);PrivilegesRequired=lowestOutputBaseFilename= Название файла установщика, например: Game_setupSetupIconFile= Путь для иконка формата ico, например: D:\icons\Game_icon.icoCompression=lzmaSolidCompression=yesWizardStyle=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: ignoreversionSource: "Путь ко всем остальным файлам, которые нужно установить, например, 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: uninsdeletevalueRoot: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekeyRoot: 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 skipifsilentAppIdId, по которому будет определяться приложение. Для разных приложений используем разный id, для одинаковых - одинаковый.Чтобы, сгенерировать AppId, заходим во вкладку Tools, а затем нажимаем Generate GUIDСгенерированный ID появится там, где сейчас находится курсор мыши:Сгенерированный id необходимо вставить в поле AppId, в формате:AppId= {{сгенерированный id}СборкаСохраняем файл проектаФайл установщика будет сохранен в папке Output в той же папке, что и сохранен файл проекта, так что сохраняйте проект в удобном месте)После сохранения можно собирать проект, нажав на синюю кнопку RunЖдём…После завершения сборки установщик автоматически запуститьсяГотовый файл будет ждать вас в папке Output в той же папке, что и сохранен файл проекта (это который с расширением .iss)Мой тг канал:t.meMors gamedev
????👀
????
👀