Дерево объектов
serverId — числовой id строки из таблицы servers. Backend возвращает
профиль только для существующего видимого сервера.
Профиль сборки
profile.json является источником правил запуска и управления файлами.
Пример находится в
E:\Wraithbound\wraithbound-launcher-platform\apps\launcher\resources\build-profile.example.json.
Селекторы путей не являются glob-выражениями.
libraries означает сам
каталог и всё его содержимое. Абсолютные пути, .., обратные слеши и glob
метасимволы отклоняются backend’ом.
Manifest сборки
manifest.json создаёт Rust manifest-builder. Для каждого файла он хранит:
- оставляет файлы внутри
update + updateVerify; - удаляет элементы, попавшие в
updateExclusions; - формирует
forceDownloadиз файлов внутриupdate; - вычисляет revision из UUID профиля, версии, правил и хешей файлов.
Java runtime
Runtime выбирается поrecommendJavaVersion:
files/ кладётся уже
распакованный runtime целиком. Архив .zip не подходит: Guardian запускает
bin/javaw.exe непосредственно из проверенного каталога.
Автоматическая публикация
Основной способ — операторский Rust CLIwraithbound-publisher. Он получает
Mojang assets, при необходимости скачивает и проверяет Java runtime, строит все
manifests и синхронизирует точные S3 keys:
AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY и опциональный AWS_SESSION_TOKEN. Они не записываются
в launcher config или manifest.
Ручная генерация одного manifest
Совместимыйmanifest-builder остаётся для диагностики и нестандартных
операций. В штатном release flow использовать его вручную не требуется.
Сборка:
Порядок публикации CLI
- Подготовьте чистый каталог кастомного клиента и
profile.jsonбез комментариев. - Запустите
check, затем обязательный первыйpublish --dry-run. - Запустите
publish: CLI подготовит assets/runtime и построит manifests. - CLI загрузит тела файлов, затем manifests и
profile.jsonв новый release-каталог. - Установите envelope в launcher-server и отдельно активируйте релиз.
- Вызовите
launcher/builds/profileсserver_id,release_idи тестовым Bearer token. - Проверьте, что ответ содержит
profile,build,assetsиruntime. - Запустите клиент и убедитесь, что все финальные проверки завершились.
Signed URL
Для файлов клиента используетсяPOST launcher/builds/resolve, для Java —
POST launcher/builds/runtime/resolve. Новые клиенты передают в каждом запросе
server_id и выбранный control-plane release_id; legacy-запрос без release ID
оставлен только на время миграции. Backend:
- проверяет Bearer session;
- повторно загружает активный manifest;
- отклоняет путь, которого нет в manifest;
- ограничивает batch 500 файлами;
- создаёт URL на 15 минут.
