Перейти к содержимому

Сборка лаунчера

Лаунчер принадлежит одному проекту: адрес сервера, ключи подписи, соль машинного отпечатка и оформление запекаются в файл при сборке. Игрок ничего не настраивает и адрес не вводит, а чужой проект через этот файл не откроется. Поэтому «универсального» лаунчера не бывает — каждый проект собирает свой.

Что нужно

Всегда

Node 24 + pnpm, Rust 1.96+ (rustup)

Для Windows с Linux

cargo install cargo-xwin, пакеты clang lld llvm

Windows-сборка с Linux делается кросс-компиляцией: cargo-xwin сам скачивает заголовки и библиотеки Windows SDK (около гигабайта, один раз), линкует lld. Виртуальная машина с Windows не нужна.

Как собрать

  1. Заберите конфигурацию с сервера

    Окно терминала
    laminara-server client-config \
    --config /etc/laminara/config.json \
    --endpoint https://launcher.ваш-домен > mygame.client.json

    Внутри — адреса, всё кольцо ключей, соль машинного отпечатка и оформление вместе с картинками.

  2. Соберите

    Окно терминала
    cd client
    ./build-launcher.sh ../mygame.client.json --target windows
    ./build-launcher.sh ../mygame.client.json --target linux

    Готовые файлы — в client/dist-launcher/. Имя берётся из оформления: если в конфиге сервера branding.windowTitle = «Magic World», получится Magic World.exe. Перебить — флагом --name.

  3. Выложите игрокам

    Файл самодостаточный: игрок скачивает и запускает, установка не нужна. Дальше лаунчер обновляет себя сам — выложите его же командой launcher publish, и следующая версия доедет до игроков без их участия.

Что должно быть на компьютере игрока

Ничего, кроме самой Windows 10 или 11. Рантайм Visual C++ вшит в файл, а движок показа интерфейса (WebView2) входит в Windows 11 и приезжает в Windows 10 вместе с Edge.

Когда лаунчер надо пересобрать

Пересборка нужна, только если поменялось запечённое:

Поменялось Нужна пересборка
Адрес сервера, домен Да
Кольцо ключей подписи Да
Соль машинного отпечатка Да
Брендинг: имя, логотип, ссылка на сайт Да
Сборки, моды, версии Нет
Новости, доступ к сборкам, баны Нет