Всегда
Node 24 + pnpm, Rust 1.96+ (rustup)
Лаунчер принадлежит одному проекту: адрес сервера, ключи подписи, соль машинного отпечатка и оформление запекаются в файл при сборке. Игрок ничего не настраивает и адрес не вводит, а чужой проект через этот файл не откроется. Поэтому «универсального» лаунчера не бывает — каждый проект собирает свой.
Всегда
Node 24 + pnpm, Rust 1.96+ (rustup)
Для Windows с Linux
cargo install cargo-xwin, пакеты clang lld llvm
Windows-сборка с Linux делается кросс-компиляцией: cargo-xwin сам скачивает заголовки
и библиотеки Windows SDK (около гигабайта, один раз), линкует lld. Виртуальная машина с
Windows не нужна.
Заберите конфигурацию с сервера
laminara-server client-config \ --config /etc/laminara/config.json \ --endpoint https://launcher.ваш-домен > mygame.client.jsonВнутри — адреса, всё кольцо ключей, соль машинного отпечатка и оформление вместе с картинками.
Соберите
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.
Выложите игрокам
Файл самодостаточный: игрок скачивает и запускает, установка не нужна. Дальше лаунчер
обновляет себя сам — выложите его же командой launcher publish,
и следующая версия доедет до игроков без их участия.
Ничего, кроме самой Windows 10 или 11. Рантайм Visual C++ вшит в файл, а движок показа интерфейса (WebView2) входит в Windows 11 и приезжает в Windows 10 вместе с Edge.
Пересборка нужна, только если поменялось запечённое:
| Поменялось | Нужна пересборка |
|---|---|
| Адрес сервера, домен | Да |
| Кольцо ключей подписи | Да |
| Соль машинного отпечатка | Да |
| Брендинг: имя, логотип, ссылка на сайт | Да |
| Сборки, моды, версии | Нет |
| Новости, доступ к сборкам, баны | Нет |