Создаём 64-битный портативный установщик с выбором модов и встроенной Java на основе TL

Данная статья — идейное продолжение моей прошлой новости

Создаем установщик для своей сборки + портативный клиент на основе tLauncher

За основу клиента ( не установщика ) взят клиент с моей сборки
The Journey

В данной статье мы научимся создавать портативный установщик для своей сборки.

Плюсы:

 Немного юмора

  • Доминирование над сборками в архиве с ручной установкой
  • Выбор любой папки для установки
  • Выбор устанавливаемых модов
  • Принудительный запуск предустановленной 64-битной Java 8 u181 — у скачавших будет меньше проблем с запуском игры

Минусы:

  • Привязка к Windows — невозможность запуска на других ОС
  • Возможность запуска только на 64-битных системах

Подготовка рабочего места

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

Скачать с сайта

Распаковываем в любое место и запускаем.

innosetup-qsp-5.6.1-unicode.exe

Устанавливаем в любое место, далее -> далее -> далее и т.д., ничего не меняя.
В конце нам предложат запустить программу — любезно отказываемся.
В итоге мы установили 2 программы — Inno Setup и Inno Script Studio

Копируем файл Russian.lng, который был в архиве в

C:Program Files (x86)Inno Script StudioLanguages

Так мы установили русификатор, к которому мы еще вернёмся

Подготовка клиента игры

Подготавливаем наш клиент для упаковки в установщик. В комплекте идут пара модов на 1.12.2 для примера и 2 предустановленные версии с Forge

Minecraft 1.7.10
Minecraft 1.12.2

Forge 10.13.4.1614
Forge 14.23.4.2759

Удалите лишний по усмотрению.

В клиенте для примера находятся 11 модов для различных примеров, итоговый вид папки Minecraft :


ЧЕМ МЕНЬШЕ ФАЙЛОВ — ТЕМ ВАМ БУДЕТ ЛЕГЧЕ
Поэтому познавайте дзен очищения сборок от лишних файлов

Настройки лаунчера ( configuration.cfg ) и профили хранятся в папке

\Minecraftlibrariesbin

Предустановленная Java хранится в

\Minecraftlibrariesbinjava

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

Создание установщика

Для начала русифицируем нашу программу. Берём файл Russian.lng и вставляем его в установленную папку ISS.

C:Program Files (x86)Inno Script StudioLanguages

Далее открываем файл примера скрипта из архива setup.iss.
Должна открыться программа Inno Script Studio. В меню View меняем язык на Русский

Теперь быстро пробежим по секциям:

Inno Setup Script
весь код установщика в чистом виде
Ставим курсор в конец 6 строки AppId= и нажимаем кнопки Shift+Ctrl+G
После чего в положение курсора должен вставиться уникальный GUID, генерируйте его так каждый раз при создании нового проекта установщика.

Пример: AppId={{22AF3634-7CEC-413C-9EC4-233DB9777B09}

Рассмотрим основные строки:

#define MyAppName «Minecraft Super Client»
Название установщика

#define MyAppVersion «1.5»Версия установщика

DefaultDirName=C:GamesMinecraft Client{#MyAppName}
Путь по умолчанию, куда будет установлен клиент

SetupIconFile=C:GamesSIPБез-имени-1.ico
Путь к иконке установщика

Компоненты
категории и элементы для выборки устанавливаемых модов

Тут мы создаём всё, что хотим сделать опциональным.
Компоненты разделяются на категории/подкатегории обратной косой чертой ( ).
Имя — название компонента.
Описание — то, что будет показано в установщике.
Типы — к какому типу установки принадлежит категория. По умолчанию стоит тип «Full», т.е. полная установка.
Если выставить компоненту тип «Full», то он будет включен по умолчанию. Если ничего не выставлять — выключен по умолчанию.
Флаги — параметр компонента. По умолчанию никаких флагов не установлено.
[/i]»fixed»[/i] — запрет на изменение вкл./выкл.
[/i]»exclusive»[/i] — сделать компонент уникальным в масштабе данной категории, т.е. будет возможен выбор только одного элемента
В итоге наш пример будет выглядеть так:

Файлы
все файлы, которые будут упакованы в установщик

Пихаем сюда весь наш клиент. Тут начинается самая тяжёлая и долгая часть.

Для начала нажмите ПКМ в любом месте правого окна ( где файлы ), в всплывшем окне нажмите «Настройка представления» и поставьте галочку у «Компоненты»
Рассмотрим основные свойства:

Исходная папка
Откуда будет взят данный файл

Папка назначения
Куда будет установлен файл. {app} — путь по умолчанию, который мы указали ранее

Компоненты
Выбранный компонент файлу. Если не выбрать — то файл не будет установлен!

В свойства файла можно двойным нажатием ЛКМ или через соответствующий пункт через ПКМ. Возможно изменение свойств нескольким выбранным файлам.

Для удобства я разделил «системные» файлы, которые будут установлены в любом случае, выдав им компонент «client»

Все остальные файлы модов и прочего — надо выставить вручную для каждого созданного компонента.

То есть для файла BetterFPS выбираем компонент «modscat1betterfps», который мы создали специально для него.

И подобным образом компоненты выставляются всем файлам, включая файлы конфигов ( из папки config ).

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

Если вы создали компонент, но не назначили ему файлов, то в установщике не будет указан его размер.

После того, как отмучаетесь с этим — можно компилировать скрипт ( красная рамка ).


В случае успеха там же есть кнопка для запуска установщика ( фиолетовая рамка ).

Обязательно проверяйте установщик после успешной компиляции!
Установите его несколько раз, посмотрите на список компонентов, всё ли верно выставлено
Проверьте пути установки и правильность расположения файлов

В итоге у нас должно получиться уот такое уот чудо: