fix: 数据目录移出安装目录,修掉「覆盖安装/卸载即丢数据」
根因:数据目录是 <安装目录>\data(config.yaml 的 dataDir 相对服务端工作目录),
而 electron-builder 的卸载器结尾执行 RMDir /r $INSTDIR,且覆盖安装会先跑旧卸载器
(installSection.nsh:52 的 uninstallOldVersion)→ 赛事库/规则/用户/审计/上传图片
连同安装目录被整个删除,再装新版。卸载一次同样如此。
- 服务端新增 -data <dir>(主命令、backup、passwd 三处),非空时覆盖 config.yaml 的
dataDir;不传时行为完全不变(兼容便携/手工运行)
- Console 把数据指到当前用户目录 %LOCALAPPDATA%\ScoreboardConsole\data(卸载器不会碰
这里;没有用 app.getPath('userData'),因为 %APPDATA%\<AppName> 正是被删的那个)
- 一次性迁移:目标为空且 <安装目录>\data 有数据时整体改名过去;两边都有数据时不动作
只记警告;任何失败都保留原地数据、绝不删除
- passwd 也带 -data(否则重置的是安装目录下那个空库里的账号)
- deploy/backup.bat 指向同一数据目录
- 文档:部署指南新增「数据放在哪里(升级/卸载都不会删)」+ 备份/恢复/迁移路径改写,
上线检查清单与使用手册同步
自检:服务端 12 包全绿;console 语法 14 文件 + datadir 单测 11/11;backup.bat 保持纯 ASCII。
This commit is contained in:
1 parent
6483acf9ad
commit
005b51b2ec
18 files changed
+626
-64
No files matched your search
+8
-6
@@ -16,14 +16,15 @@
|
||||
|
||||
- [ ] Windows 10/11 x64,接市电(建议接 UPS)
|
||||
- [ ] 端口 **19540** 未被占用:`netstat -ano | findstr 19540`
|
||||
- [ ] 数据目录可写:默认 `<安装目录>\data\`,需要放行杀毒/防火墙
|
||||
- [ ] 数据目录可写:默认 `%LOCALAPPDATA%\ScoreboardConsole\data`(在安装目录之外,升级/卸载都不会删),需要放行杀毒/防火墙
|
||||
- [ ] 大屏通过 HDMI 接在**同一台机器**上(系统显示模式设为「扩展」)
|
||||
- [ ] **安装目录不要选 `C:\Program Files`**(那里普通用户没写权限,数据库会写不进去);装到 D 盘等普通目录即可,向导里可以改路径
|
||||
- [ ] **安装目录不要选 `C:\Program Files`**(那里普通用户没写权限,日志会写不进去);装到 D 盘等普通目录即可,向导里可以改路径
|
||||
|
||||
## 3. 首次启动
|
||||
|
||||
- [ ] 双击 `Scoreboard_Console.exe`,启动管理窗口出现
|
||||
- [ ] 服务端状态变为「运行中 · 就绪」
|
||||
- [ ] 「运行日志」里 `数据目录:` 指向 `%LOCALAPPDATA%\ScoreboardConsole\data`(**不是**安装目录),且没有「都有数据 / 迁移失败」的警告
|
||||
- [ ] 打开管理面板(窗口内「打开服务端管理面板」按钮),用管理员账号登录
|
||||
- [ ] **管理员初始密码**在 `logs\console.log` 里搜 `INITIAL ADMIN CREATED`,密码就在该行上方;也可以直接打开 Console 的「运行日志」面板往上翻。首次登录会要求改密
|
||||
|
||||
@@ -45,9 +46,9 @@
|
||||
|
||||
## 6. 数据与备份
|
||||
|
||||
- [ ] 确认 `data\backups\` 里已出现 `system-auto-*.db` 与 `event-auto-*.db`(默认每 5 分钟)
|
||||
- [ ] 确认数据目录 `%LOCALAPPDATA%\ScoreboardConsole\data` 下的 `backups\` 里已出现 `system-auto-*.db` 与 `event-auto-*.db`(默认每 5 分钟)
|
||||
- [ ] 开幕前手动点一次「立即备份」
|
||||
- [ ] 记下备份目录位置,必要时整个目录拷到 U 盘
|
||||
- [ ] 把整个数据目录(不只是 `backups\`:`event_projs\<项目名>\uploads\` 里还有上传的图片)拷一份到 U 盘
|
||||
|
||||
## 7. 现场流程演练(建议至少一次)
|
||||
|
||||
@@ -61,8 +62,9 @@
|
||||
| 故障 | 动作 |
|
||||
| --- | --- |
|
||||
| 服务端无响应 | 服务管理窗口「重启服务」 |
|
||||
| 主机死机 | 备机启动同一份部署包,拷回 `data\` 最近备份 |
|
||||
| 数据库损坏 | 停机,用 `data\backups\` 最新备份替换 `data\event_projs\<项目名>\event.db`(先删 `-wal`/`-shm`) |
|
||||
| 主机死机 | 备机启动同一份部署包,把数据目录(`%LOCALAPPDATA%\ScoreboardConsole\data`)拷回去 |
|
||||
| 数据库损坏 | 停机,用数据目录下 `backups\` 的最新备份替换 `event_projs\<项目名>\event.db`(先删 `-wal`/`-shm`),详见部署指南第 8.3 节 |
|
||||
| 大屏黑屏 | 服务管理窗口「重新排布」;仍不行就用备用笔记本开同一地址 |
|
||||
| 覆盖安装后数据不见了 | 看「运行日志」里的 `数据目录:` 与迁移警告,按部署指南第 9.9 节处理 |
|
||||
|
||||
> 完整恢复步骤见 [部署指南 · 备份与恢复](./部署指南.md#8-备份与恢复)。
|
||||
+1
-1
@@ -515,7 +515,7 @@
|
||||
当前服务端一次只运行一个赛事项目(默认 `default`)。导入赛事项目包后,需要重启服务端并指定 `-project <项目名>` 才能切换,详见部署指南第 8.5 节。
|
||||
|
||||
**Q:导出的文件在哪里?**
|
||||
结果导出和赛事包由浏览器下载到默认下载目录;服务端自身也会在 `data\exports\` 下生成临时包(导出完成后自动删除)。
|
||||
结果导出和赛事包由浏览器下载到默认下载目录;服务端自身也会在数据目录下的 `exports\` 里生成临时包(导出完成后自动删除)。数据目录默认是 `%LOCALAPPDATA%\ScoreboardConsole\data`,详见部署指南第 3.4 节。
|
||||
|
||||
**Q:登录多久会过期?**
|
||||
会话有效期 12 小时。过期后自动回到只读访客视图,重新登录即可。
|
||||
|
||||
+82
-17
@@ -13,7 +13,7 @@
|
||||
| 网络 | 完全离线即可运行。若需要手机/平板/电视访问,用独立交换机或路由器组成局域网 |
|
||||
| 磁盘 | 建议预留 ≥ 10GB |
|
||||
| 运行时 | 无需安装 Go / Node / 数据库等任何运行时,前端已内嵌进可执行文件 |
|
||||
| 权限 | 首次运行会在部署目录下创建 `data\`、`logs\`,请确保该目录可写 |
|
||||
| 权限 | 首次运行会在 `%LOCALAPPDATA%\ScoreboardConsole\data` 下建库、在部署目录的 `logs\` 写日志,请确保这两处可写 |
|
||||
|
||||
> 服务端只构建 Windows amd64 一个版本。Linux / 其他平台不在交付范围内。
|
||||
|
||||
@@ -51,7 +51,7 @@ deploy\build.bat
|
||||
3. 安装完成后,桌面会出现名为**「赛事积分榜」**的快捷方式。
|
||||
4. 双击「赛事积分榜」启动。
|
||||
|
||||
> 程序会在自己的安装目录下创建 `data\` 与 `logs\`,请安装到当前用户有写权限的目录;若装到受保护的系统目录,可能因无写入权限而无法建库。
|
||||
> 赛事数据存放在 `%LOCALAPPDATA%\ScoreboardConsole\data`(不随安装目录走,见第 8.1 节),日志写在安装目录的 `logs\` 下;安装目录本身只要当前用户可写即可。
|
||||
|
||||
### 3.2 使用免安装包
|
||||
|
||||
@@ -61,7 +61,7 @@ deploy\build.bat
|
||||
### 3.3 首次启动会自动完成
|
||||
|
||||
- 拉起并守护服务端 `scoreboard.exe`;
|
||||
- 在 `data\` 下自动建库、建目录;
|
||||
- 在数据目录(默认 `%LOCALAPPDATA%\ScoreboardConsole\data`)下自动建库、建目录;
|
||||
- 打开服务端管理面板窗口;
|
||||
- 把大屏页面投到扩展屏;
|
||||
- 启用防熄屏;
|
||||
@@ -77,11 +77,32 @@ deploy\build.bat
|
||||
├── scoreboard.exe # Go 服务端
|
||||
├── config.yaml # 服务端配置
|
||||
├── scoreboard.png # 应用图标
|
||||
├── data\ # 首次运行生成:数据库、备份
|
||||
└── logs\console.log # 首次运行生成:运行日志
|
||||
```
|
||||
|
||||
> `data\` 与二进制分离,升级时替换可执行文件即可保留数据。
|
||||
数据目录不在安装目录里,是独立的一处(详见 3.4):
|
||||
|
||||
```
|
||||
%LOCALAPPDATA%\ScoreboardConsole\data\ # 数据库、备份、上传的图片
|
||||
```
|
||||
|
||||
### 3.4 数据放在哪里(升级/卸载都不会删)
|
||||
|
||||
覆盖安装时安装程序会**先静默运行旧版卸载器**,而卸载器会把整个安装目录删掉,所以数据库、规则、用户、上传的图片都不能放在安装目录里。现在的规则:
|
||||
|
||||
| 场景 | 数据目录 |
|
||||
| --- | --- |
|
||||
| 默认(`console\config.json` 的 `server.dataDir` 留空) | `%LOCALAPPDATA%\ScoreboardConsole\data`,即 `C:\Users\<用户名>\AppData\Local\ScoreboardConsole\data` |
|
||||
| 想放到别处,例如 D 盘 | 在 `console\config.json` 里把 `server.dataDir` 改成 `"D:\\scoreboard-data"`(绝对路径),或相对安装目录的路径 |
|
||||
| 直接双击 `scoreboard.exe`(不经 Console) | 服务端默认行为不变:用工作目录下的 `data\`,**这种用法在覆盖安装时仍会丢数据** |
|
||||
|
||||
- Console 启动时会把这个目录用 `-data` 参数交给服务端,界面上方「运行日志」里能看到 `数据目录:...` 这一行;
|
||||
- **一次性迁移**:如果新数据目录还是空的,而旧的 `<安装目录>\data` 里有数据,Console 会在启动时把旧目录**整体改名**过去(同盘很快),日志里会写「已把旧数据从 X 迁移到 Y」。任何失败(跨盘、权限不足等)都只记日志,旧数据原地保留,不会被删;
|
||||
- 如果两个目录里**都有数据**,Console 不做任何动作,只写一条警告日志,由现场人工决定保留哪一份;
|
||||
- 迁移只在安装包版本(打包后)执行一次,`pnpm start` 之类的开发运行不会碰仓库里的 `data\`;
|
||||
- 迁移的**旧目录只认 `<安装目录>\data`**。如果你已经把数据迁到默认位置、之后又想改成 D 盘等其他目录,Console **不会**自动搬运:请先停服务,把 `%LOCALAPPDATA%\ScoreboardConsole\data` 整个目录复制到新路径,再改 `server.dataDir` 并重启 Console。
|
||||
|
||||
> 升级到本版本后第一次启动,请打开 Console 的「运行日志」确认是否有迁移记录,并核对管理端里的赛事/账号数据是否完整。
|
||||
|
||||
---
|
||||
|
||||
@@ -167,9 +188,11 @@ findstr /C:"INITIAL ADMIN CREATED" logs\console.log
|
||||
在 Console 里先**停止服务**,然后在部署目录(`config.yaml` 所在目录)执行:
|
||||
|
||||
```bat
|
||||
scoreboard.exe passwd -config config.yaml
|
||||
scoreboard.exe passwd -config config.yaml -data "%LOCALAPPDATA%\ScoreboardConsole\data"
|
||||
```
|
||||
|
||||
> **`-data` 不能省**:不加它服务端会去用工作目录下的 `data\`,改的是另一个库里的账号(那个库是空的,看起来像「密码重置成功但登录不上」)。数据目录改过配置的,把这里换成 `console\config.json` 里 `server.dataDir` 实际生效的那个路径;实在不确定,可以先看 `logs\console.log` 里 `数据目录:` 那一行。
|
||||
|
||||
该命令会为用户 `admin` 生成一个新的随机密码并打印出来,同时要求下次登录强制改密。可选参数:
|
||||
|
||||
| 参数 | 说明 |
|
||||
@@ -177,6 +200,7 @@ scoreboard.exe passwd -config config.yaml
|
||||
| `-user <用户名>` | 指定要重置的用户,默认 `admin` |
|
||||
| `-password <新密码>` | 直接指定新密码;留空则随机生成并打印 |
|
||||
| `-new-username <新用户名>` | 同时修改用户名 |
|
||||
| `-data <数据目录>` | 数据目录;通过 Console 启动时必须带上同一个值(见第 3.4 节) |
|
||||
|
||||
---
|
||||
|
||||
@@ -188,7 +212,7 @@ scoreboard.exe passwd -config config.yaml
|
||||
| --- | --- | --- |
|
||||
| `server.host` | `0.0.0.0` | 监听地址;`0.0.0.0` 表示局域网内其他设备也能访问 |
|
||||
| `server.port` | `19540` | HTTP 端口 |
|
||||
| `dataDir` | `data` | 数据目录,相对服务端工作目录解析 |
|
||||
| `dataDir` | `data` | 数据目录,相对服务端工作目录解析;**Console 启动时会用 `-data <绝对路径>` 覆盖它**,配置项本身只对直接运行 `scoreboard.exe` 时生效 |
|
||||
| `log.level` | `info` | 日志级别:`debug` / `info` / `warn` / `error` |
|
||||
| `backup.intervalMinutes` | `5` | 自动备份间隔(分钟),`<=0` 关闭自动备份 |
|
||||
| `backup.keep` | `20` | 每个库滚动保留的备份份数 |
|
||||
@@ -200,6 +224,7 @@ scoreboard.exe passwd -config config.yaml
|
||||
| --- | --- | --- |
|
||||
| `server.exe` | `scoreboard.exe` | 服务端可执行文件;相对路径会在配置目录、当前目录、上级目录、`dist\` 依次查找 |
|
||||
| `server.args` | `["-config","config.yaml"]` | 传给服务端的启动参数 |
|
||||
| `server.dataDir` | `""` | 数据目录;留空 = 用默认位置 `%LOCALAPPDATA%\ScoreboardConsole\data`。填了就按它来:绝对路径直接用,相对路径以安装目录为基准。Console 会把它作为 `-data <绝对路径>` 追加到启动参数后(见第 3.4 节) |
|
||||
| `server.host` / `server.port` | `127.0.0.1` / `19540` | 健康检查与打开管理面板用的地址;配成 `0.0.0.0` 时本机探测自动改走回环地址 |
|
||||
| `server.autoStart` | `true` | Console 启动后是否自动拉起服务端 |
|
||||
| `server.healthIntervalMs` | `5000` | 健康检查间隔(毫秒) |
|
||||
@@ -295,7 +320,13 @@ http://<主机IP>:19540/display
|
||||
|
||||
### 8.1 备份目录
|
||||
|
||||
所有备份都在 `data\backups\` 下,文件名为 `.db` 快照。该目录不进版本库。
|
||||
所有备份都在**数据目录**下的 `backups\` 里,文件名为 `.db` 快照。默认数据目录是 `%LOCALAPPDATA%\ScoreboardConsole\data`,所以备份在:
|
||||
|
||||
```
|
||||
%LOCALAPPDATA%\ScoreboardConsole\data\backups\
|
||||
```
|
||||
|
||||
数据目录改过 `server.dataDir` 的,按改后的路径找(同目录下的 `backups\`)。该目录不进版本库。
|
||||
|
||||
### 8.2 如何备份
|
||||
|
||||
@@ -303,13 +334,14 @@ http://<主机IP>:19540/display
|
||||
| --- | --- | --- |
|
||||
| 自动 | 服务端启动后按 `backup.intervalMinutes`(默认 5 分钟) | `system-auto-<时间戳>.db` 与 `event-auto-<时间戳>.db` |
|
||||
| 管理端 | 「系统设置 → 备份 → 立即备份」 | `system-manual-<时间戳>.db` 与 `event-manual-<时间戳>.db` |
|
||||
| 命令行 | 在部署目录执行 `scoreboard.exe backup -config config.yaml` | `system-manual-<时间戳>.db` 与 `event-manual-<时间戳>.db` |
|
||||
| 命令行 | 在部署目录执行 `scoreboard.exe backup -config config.yaml -data "%LOCALAPPDATA%\ScoreboardConsole\data"` | `system-manual-<时间戳>.db` 与 `event-manual-<时间戳>.db` |
|
||||
| 快捷脚本 | `deploy\backup.bat`(原因记 `manual`)或 `deploy\backup.bat publish`(原因记 `publish`) | 同上(`publish` 时原因为 `publish`) |
|
||||
| 发布前 | 每次发布成绩时自动 | `event-publish-<时间戳>.db` |
|
||||
|
||||
- 备份使用 SQLite 的 `VACUUM INTO`,服务运行中也能安全执行,不需要停服务,也不依赖外部 `sqlite3.exe`;
|
||||
- 自动、手动、命令行三种方式都按 `backup.keep`(默认 20 份)滚动保留,`system` 库与赛事库各自计算,超出的旧备份自动删除;
|
||||
- 同一时刻只允许一个备份在进行,自动备份与手动、发布前备份不会互相踩;
|
||||
- `deploy\backup.bat` 会自动用和 Console 相同的数据目录(优先 `%LOCALAPPDATA%\ScoreboardConsole\data`,该目录还不存在时回退到脚本上级目录的 `data`),并把该目录作为 `-data` 传给服务端,所以从哪里运行都不会备份到别的库;
|
||||
- 现场建议:开幕前、每次发布高峰前、每天结束时各手动备份一次(自动备份只是兜底)。
|
||||
|
||||
### 8.3 如何恢复
|
||||
@@ -317,18 +349,22 @@ http://<主机IP>:19540/display
|
||||
服务端目前**没有一键恢复接口**,恢复需停机手工执行:
|
||||
|
||||
1. 在 Console 里**停止服务**,避免恢复过程中继续写入;
|
||||
2. 把当前的 `data\event_projs\<项目名>\event.db` 改名留档,确认恢复失败还能退回;
|
||||
2. 把当前的 `<数据目录>\event_projs\<项目名>\event.db` 改名留档,确认恢复失败还能退回;
|
||||
3. 选一份目标备份复制为 `event.db`(覆盖原文件);
|
||||
4. 同时删除同目录下的 `event.db-wal` 与 `event.db-shm`;
|
||||
5. 重新启动服务,核对积分榜与最近一次发布记录。
|
||||
|
||||
> `data\system.db` 保存账号与会话信息,一般不需要回退;如需一并回退,替换它的方法与 `event.db` 相同(同时删除 `system.db-wal` / `system.db-shm`)。
|
||||
> `<数据目录>\system.db` 保存账号与会话信息,一般不需要回退;如需一并回退,替换它的方法与 `event.db` 相同(同时删除 `system.db-wal` / `system.db-shm`)。
|
||||
>
|
||||
> 恢复会丢弃备份时间点之后的所有改动。现场若还有备机,优先切换备机比原地恢复更快。
|
||||
|
||||
### 8.4 整机迁移
|
||||
|
||||
把整个部署目录(含 `data\`)拷贝到另一台同版本 Windows 机器,启动 Console 即可,无需重新配置。
|
||||
把 **安装目录**(`Scoreboard_Console.exe`、`config.json`、`config.yaml`、`rules\` 等)与**数据目录** `%LOCALAPPDATA%\ScoreboardConsole\data` 一起拷到另一台同版本 Windows 机器:
|
||||
|
||||
- 安装目录:按同样路径放好,或直接用新机器上的安装包装一遍;
|
||||
- 数据目录:拷到新机器的 `%LOCALAPPDATA%\ScoreboardConsole\data`(同一用户名下路径一致,最省事);
|
||||
- 启动 Console 即可,无需重新配置;若数据目录放到了别处,记得同步改 `console\config.json` 的 `server.dataDir`。
|
||||
|
||||
### 8.5 赛事项目包导出 / 导入
|
||||
|
||||
@@ -337,10 +373,23 @@ http://<主机IP>:19540/display
|
||||
| 导出 | 「导出 → 赛事项目包 → 导出 zip」 | 包内含 `meta.yaml`、`event.db`、`uploads/`、`rules.yaml`;整包拷走即可在另一台机器复现 |
|
||||
| 导入 | 「导出 → 赛事项目包 → 选择 .zip → 导入」 | **仅管理员**可操作;可填「重命名」,勾选「覆盖同名项目」会先二次确认 |
|
||||
|
||||
- 导入后项目落在 `data\event_projs\<项目名>\`;
|
||||
- 当前运行的服务端默认使用 `default` 项目。要让新导入的赛事生效,可在 Console 的 `config.json` 里把 `server.args` 改为 `["-config","config.yaml","-project","<项目名>"]`,然后重启 Console;也可以直接用 `scoreboard.exe -config config.yaml -project <项目名>` 启动;
|
||||
- 导入后项目落在 `<数据目录>\event_projs\<项目名>\`;
|
||||
- 当前运行的服务端默认使用 `default` 项目。要让新导入的赛事生效,可在 Console 的 `config.json` 里把 `server.args` 改为 `["-config","config.yaml","-project","<项目名>"]`,然后重启 Console;也可以直接用 `scoreboard.exe -config config.yaml -project <项目名> -data "%LOCALAPPDATA%\ScoreboardConsole\data"` 启动;
|
||||
- 导入期间请勿停止服务端进程。
|
||||
|
||||
### 8.6 手工备份 / 迁移整个数据目录
|
||||
|
||||
快照备份之外,数据库文件、上传的图片、备份都可以整体拷走:
|
||||
|
||||
1. 在 Console 里**停止服务**(托盘 → 停止服务),避免拷贝过程中继续写入;
|
||||
2. 把整个数据目录 `%LOCALAPPDATA%\ScoreboardConsole\data` 复制到 U 盘或其他盘(里面含 `system.db`、`event_projs\`(数据库 + `uploads\` 图片)、`backups\`);
|
||||
3. 恢复时把整个目录拷回去,然后:
|
||||
- 拷回**原路径**:直接启动 Console 即可;
|
||||
- 拷到**别的路径**:先建好目标目录并放入数据,再在 `console\config.json` 里把 `server.dataDir` 指向它,重启 Console;
|
||||
4. 恢复完成后在管理端核对赛事、账号、上传图片是否齐全。
|
||||
|
||||
> 只拷 `backups\` 里的 `.db` 快照也能救回成绩数据,但上传的背景图/会标在 `event_projs\<项目名>\uploads\` 里,不拷这个目录会丢图片。
|
||||
|
||||
---
|
||||
|
||||
## 9. 故障排查
|
||||
@@ -386,7 +435,7 @@ http://<主机IP>:19540/display
|
||||
### 9.4 服务反复重启
|
||||
|
||||
- 打开 `logs\console.log`,搜索 `[server!]`,这是服务端错误输出;
|
||||
- 检查 `data\` 是否可写、磁盘是否已满;
|
||||
- 检查数据目录 `%LOCALAPPDATA%\ScoreboardConsole\data` 是否可写、磁盘是否已满;
|
||||
- 检查 `config.yaml` 语法与端口是否合法。
|
||||
|
||||
### 9.5 页面显示「示例数据」
|
||||
@@ -410,14 +459,30 @@ http://<主机IP>:19540/display
|
||||
|
||||
### 9.8 忘记管理员密码
|
||||
|
||||
见第 5.5 节,使用 `scoreboard.exe passwd -config config.yaml` 重置。
|
||||
见第 5.5 节,使用 `scoreboard.exe passwd -config config.yaml -data "%LOCALAPPDATA%\ScoreboardConsole\data"` 重置。
|
||||
|
||||
### 9.9 升级后数据不见了 / 日志里有迁移警告
|
||||
|
||||
覆盖安装时安装程序会先跑旧卸载器删掉安装目录,所以本版本起数据默认放在 `%LOCALAPPDATA%\ScoreboardConsole\data`。首次启动后先看 Console「运行日志」或 `logs\console.log`:
|
||||
|
||||
| 日志 | 含义 |
|
||||
| --- | --- |
|
||||
| `数据目录:<路径>` | 本次实际使用的数据目录,先确认它是不是你期望那个 |
|
||||
| `已把旧数据从 X 迁移到 Y` | 旧数据已整体搬过去,属正常 |
|
||||
| `警告:...都有数据...` | 两个目录都有数据,Console 没有动任何一边;请人工把要保留的那份拷到 `数据目录:` 指向的位置 |
|
||||
| `警告:迁移旧数据失败...` | 跨盘或权限问题;旧数据仍在日志里写的 `X`,手工拷过去再重启即可 |
|
||||
| `警告:数据目录仍在安装目录内` | `server.dataDir` 配置成了安装目录里的路径,覆盖安装会丢数据,请改到安装目录之外 |
|
||||
|
||||
若安装目录里的 `data\` 已被删掉,优先用 `backups\` 里最新的 `.db` 快照按第 8.3 节恢复。
|
||||
|
||||
---
|
||||
|
||||
## 10. 上线检查清单
|
||||
|
||||
- [ ] 服务端开机自启、崩溃自动拉起已验证
|
||||
- [ ] `data\backups\` 可写,已生成至少一份备份
|
||||
- [ ] 「运行日志」里的 `数据目录:` 指向 `%LOCALAPPDATA%\ScoreboardConsole\data`(不是安装目录),且没有迁移警告
|
||||
- [ ] 数据目录的 `backups\` 可写,已生成至少一份备份
|
||||
- [ ] 已把数据目录整个拷一份到 U 盘(含 `event_projs\<项目名>\uploads\` 里的图片)
|
||||
- [ ] 大屏 HDMI 输出定位正确、分辨率正确、字体正常
|
||||
- [ ] 管理端各角色账号可登录,权限正确
|
||||
- [ ] 主机 IP 固定,管理端 / 大屏地址已打印或做成二维码贴在操作台
|
||||
|
||||
Reference in new issue
Block a user