Add software version manifest management
This commit is contained in:
@@ -275,7 +275,100 @@ curl -i -b /tmp/sumi-player.cookie http://127.0.0.1:3030/api/auth/me
|
||||
curl -i -H "X-Admin-Token: change-this-admin-token" http://127.0.0.1:3030/api/admin/software
|
||||
```
|
||||
|
||||
## 10. 数据与备份
|
||||
## 10. version.json 与检查更新
|
||||
|
||||
管理后台上传软件时可以同时上传 `version.json`,也可以直接编辑“版本内容 JSON”。如果上传安装包且版本内容留空,服务端会自动生成一个兼容更新器的 version.json。
|
||||
|
||||
推荐 `version.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.2.0",
|
||||
"changelog": "修复已知问题并优化启动速度",
|
||||
"forceUpdate": false,
|
||||
"minSupportedVersion": "1.0.0",
|
||||
"sha256": "package-sha256-if-known"
|
||||
}
|
||||
```
|
||||
|
||||
也兼容下面这种更新器常用格式:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.1.5",
|
||||
"update_url": "https://sumi.work/api/software/server-manager/version.json",
|
||||
"release_notes": "数据库测试连接改为真实 MySQL 连接探测。",
|
||||
"download_url": "https://sumi.work/api/software/server-manager/download",
|
||||
"full_installer_url": "https://sumi.work/api/software/server-manager/download",
|
||||
"delta_updates": {}
|
||||
}
|
||||
```
|
||||
|
||||
字段说明:
|
||||
|
||||
- `version`:最新版本号,检查更新时用于和客户端当前版本对比
|
||||
- `changelog`:更新说明
|
||||
- `release_notes`:更新说明,等同于 `changelog`
|
||||
- `update_url`:version.json 地址,建议改成当前下载中心的 `/api/software/<软件ID>/version.json`
|
||||
- `download_url`:完整安装包下载地址,建议改成当前下载中心的 `/api/software/<软件ID>/download`
|
||||
- `full_installer_url`:完整安装包下载地址,等同于 `download_url`
|
||||
- `delta_updates`:差分更新信息,会原样返回
|
||||
- `forceUpdate`:是否强制更新
|
||||
- `minSupportedVersion`:最低支持版本,客户端版本低于它时会返回 `forceUpdate: true`
|
||||
- `sha256`:安装包校验值;如果未提供,会使用服务端上传安装包计算出的值
|
||||
|
||||
如果使用你原来的内网文件服务地址,例如:
|
||||
|
||||
```json
|
||||
"update_url": "http://172.18.180.94:3000/api/file?path=server_manager/build/output/version.json",
|
||||
"download_url": "http://172.18.180.94:3000/api/download?path=server_manager/build/output/ServerManager_Setup.exe"
|
||||
```
|
||||
|
||||
它也能被服务端读取和保存。但如果希望下载中心继续执行“玩家登录后才能下载”的规则,应改成下载中心自己的地址:
|
||||
|
||||
```json
|
||||
"update_url": "https://sumi.work/api/software/server-manager/version.json",
|
||||
"download_url": "https://sumi.work/api/software/server-manager/download",
|
||||
"full_installer_url": "https://sumi.work/api/software/server-manager/download"
|
||||
```
|
||||
|
||||
其中 `server-manager` 是软件 ID。新增软件时服务端会按软件名自动生成 ID;也可以上传后在管理接口返回结果里查看 `id`、`versionManifestUrl` 和 `downloadUrl`。
|
||||
|
||||
后台操作规则:
|
||||
|
||||
- 只上传安装包,版本内容留空:服务端自动生成 version.json。
|
||||
- 上传安装包,同时填写版本内容 JSON:安装包会更新,版本内容按填写的 JSON 保存。
|
||||
- 不上传安装包,只修改版本内容 JSON:只更新版本清单和检查更新内容。
|
||||
- 上传 `version.json` 文件:文件内容优先于文本框内容。
|
||||
|
||||
获取版本清单:
|
||||
|
||||
```bash
|
||||
curl -i http://127.0.0.1:3030/api/software/sumi-launcher/version.json
|
||||
```
|
||||
|
||||
检查更新:
|
||||
|
||||
```bash
|
||||
curl -i "http://127.0.0.1:3030/api/software/sumi-launcher/check-update?version=1.0.0"
|
||||
```
|
||||
|
||||
返回重点字段:
|
||||
|
||||
```json
|
||||
{
|
||||
"currentVersion": "1.0.0",
|
||||
"latestVersion": "1.2.0",
|
||||
"updateAvailable": true,
|
||||
"forceUpdate": false,
|
||||
"downloadUrl": "/api/software/sumi-launcher/download",
|
||||
"versionManifestUrl": "/api/software/sumi-launcher/version.json"
|
||||
}
|
||||
```
|
||||
|
||||
`downloadUrl` 仍然受玩家登录保护,未登录下载会返回 `401` 或跳转到登录页。
|
||||
|
||||
## 11. 数据与备份
|
||||
|
||||
需要持久化和备份:
|
||||
|
||||
@@ -283,6 +376,7 @@ curl -i -H "X-Admin-Token: change-this-admin-token" http://127.0.0.1:3030/api/ad
|
||||
- `server/data/players.json`:玩家账号数据
|
||||
- `server/uploads/icons/`:上传的软件图标
|
||||
- `server/uploads/packages/`:上传的软件安装包
|
||||
- `server/uploads/manifests/`:上传的 version.json 文件
|
||||
|
||||
建议备份命令:
|
||||
|
||||
@@ -292,7 +386,7 @@ tar -czf sumi-work-data-$(date +%F).tar.gz server/data server/uploads
|
||||
|
||||
恢复时把这两个目录放回仓库根目录,然后重启服务。
|
||||
|
||||
## 11. 常见问题
|
||||
## 12. 常见问题
|
||||
|
||||
端口被占用:
|
||||
|
||||
@@ -324,7 +418,7 @@ lsof -i :3030
|
||||
- 不要配置 Nginx 直接静态暴露 `server/uploads/packages/`
|
||||
- 正确做法是所有请求都反代到 Node 服务
|
||||
|
||||
## 12. 快速执行清单
|
||||
## 13. 快速执行清单
|
||||
|
||||
```bash
|
||||
cd /path/to/sumi.work
|
||||
|
||||
Reference in New Issue
Block a user