Files
aego/modules/update/res/docs/api.ru.md
sanspie d436311f69 Stage 11i4: signed self-updates for Aego and exported games (D362)
update core: signed release.json (Ed25519) per channel, ETag check, resumable download with sha256, Auto/Ask/Off policy, appliers for the install.sh layout, AppImage, NSIS installer (keeps the replaced setup.exe for Restore) and .app, trial run with rollback.
Editor and launcher: banner, status bar, Help commands, Task Center download, install on restart.
CLI: aego update, aego release keygen|manifest, aego export --release-json.
Games: modules/update with update { url publicKey }, settings and the aego/update script API.
release.sh refuses to publish without AEGO_RELEASE_KEY and AEGO_UPDATE_KEY; install.sh lays out versions; make test-update runs a real v1 -> v2 update.
2026-10-26 19:36:15 +03:00

44 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: aego/update
summary: Находит более новую версию игры на её сервере обновлений, скачивает её и перезапускает игру на ней.
---
Игра обновляет себя, если в `project.aego` указаны её сервер обновлений и ключ, которым подписаны её релизы:
```
update {
url="https://example.com/mygame/updates"
publicKey="<публичный ключ из aego release keygen>"
}
```
На сервере по папке на канал, `stable/release.json` и `nightly/release.json`, у каждого свой `release.json.sig`. `aego export --release-json` пишет оба файла рядом с архивом экспорта. Игра проверяет обновления при запуске; в режиме «Автоматически» она скачивает новую версию в фоне, а в окне настроек появляются **Обновления** и **Канал обновлений**. Без верной подписи и контрольной суммы ничего не устанавливается. В песочнице нет сервера обновлений, поэтому для этого примера нужен проект.
## Пример
```aes check
package demo
import (
"aego/log"
"aego/update"
)
script UpdateBanner {
var shown bool
func Update(dt float) {
if !shown && update.State() == "ready" {
shown = true
log.Info("version " + update.Version() + " is ready: " + update.Notes())
}
}
func Restart() {
if update.State() == "ready" {
update.Apply()
}
}
}
```