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

Обновление лаунчера

Лаунчер обновляется сам при запуске: проверяет сервер, скачивает новую версию, подменяет себя и перезапускается. Игрок ничего не выбирает и ничего не скачивает руками.

Как выложить версию

Обычно это одна команда — launcher build сам берёт заготовку из релиза, впечатывает вашу конфигурацию и публикует версию, см. Сборку лаунчера. Ниже — что происходит под капотом и как выложить файлы, собранные своими руками.

Положите их в каталог версий:

/var/lib/laminara/launcher/
0.2.0/
Laminara.exe
Laminara
Laminara-mac-os-arm64.app.tar.gz
Laminara-mac-os.app.tar.gz

Здесь Laminara.exe — Windows-сборка, файл без расширения — Linux-сборка, архивы .app.tar.gz — приложения для macOS; имя берётся из брендинга проекта (--name в build-launcher.sh). Понимаются и другие форматы: .msi, .AppImage, .deb, .rpm, .dmg — тип и платформа определяются по расширению или упоминанию платформы в имени. Затем:

laminara-server exec "launcher publish 0.2.0"
laminara-server exec "launcher status"

Публикация кладёт байты в то же хранилище, что и сборки, подписывает документ релиза вашим ключом и делает его текущим. Версия обязана быть вида 1.2.3 и строго больше предыдущей — понижение невозможно ни на сервере, ни на клиенте.

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

Включите каталог в конфиге:

{
"launcher": { "dir": "/var/lib/laminara/launcher" }
}

Что делает лаунчер игрока

  1. При старте запрашивает релиз и проверяет подпись тем же ключом, что и манифесты сборок.
  2. Если версия новее и её можно установить — показывает экран «Обновление лаунчера» с прогрессом.
  3. Качает артефакт, сверяет BLAKE3, атомарно подменяет себя и перезапускается.

Если обновление не удалось (нет сети, нет прав, битые байты) — лаунчер продолжает работу на текущей версии: старый файл возвращается на место.

Установки из пакетного менеджера или системных каталогов (/usr, /opt, Program Files, Snap, Flatpak) лаунчер не трогает — он только сообщает, что вышла новая версия.