Skip to content

v0.15.0 — 应用内更新修好了,再次启动不再像卡住

Choose a tag to compare

@magicapple123 magicapple123 released this 30 Sep 21:23
· 331 commits to main since this release
7228260

这一版修了什么

一、更新这件事,从"看着像能用"修成"真的能用"

四个缺陷都不是理论风险——是线上就是坏的,逐条读过代码并实测确认:

  • 应用内更新在 Windows 上必然失败。 发行版同时挂 Windows 与 macOS 两个包,而挑包的
    逻辑是"按文件名排序取第一个 .zip":macos 排在 windows 前面,于是 Windows 用户
    永远下到 macOS 包,而那个包里没有 start.cmd,校验直接报「更新包缺少 start.cmd」——
    按钮摆在那里,一点就错。
  • backend/app/data/ 永远不会被更新。 排除规则是"任意层级下名为 data 的目录",
    把受跟踪的程序资源(技能词典、ATS 关键词)一起跳过了:新版本往那里加的文件到不了老
    用户机器上,随后启动自检会以"缺少文件"拒绝启动。
  • 先覆盖再停进程。 手动那条路径在应用还开着时就开始复制,文件锁会让它中途失败,
    留下一棵"一半新一半旧"的树。
  • 失败静默、而且谎报成功。 更新器的输出被丢进黑洞,后端 1 秒后无条件退出;界面更是
    在点击安装时就写下"已完成"的标记——安装崩了,下次打开照样显示「已更新」。

现在:按当前平台挑包并核对发布方的 .sha256;排除规则按路径判断(用户数据绝不动、
程序资源跟着更新);复制之前先停应用;更新器的输出与状态写进 runtime/update.log 与
runtime/update-status.json,只有实际跑起来的版本等于目标版本才算成功,没起来会说清
原因和日志位置。

二、已经装在旧版本上的用户,也能从应用内更新

上面第一条最后那句"这段代码在旧版本上修不了"是真的:应用内更新跑的挑包逻辑,是用户
机器上那份旧代码
。所以他手上那个按钮,光靠改新版本救不回来。

救它的是发行版的资产名:这一版多挂一个 ResumeForge-0.15.0-all.zip,它按文件名排序
排在最前面,旧代码会选中它——而它确实装得上。从 0.15.0 起,应用内更新自己会优先选带
平台词的包,全平台包只作为兜底,不受影响。

如果你现在跑的是 0.14.2 或更早、并且点「重启并安装」报过「更新包缺少 start.cmd」:
这一版可以再试一次,或者照旧双击 update.cmd / update.command——两条路都不会动
你的 data/。

三、再次启动时,终端会说明"正在载入"

依赖装好之后再次双击 start.cmd,终端原本在「探测依赖 → 等后端就绪(最长 90 秒)→ 等
前端就绪(最长 120 秒)→ 预热前端页面」这几段里一行字都没有——最容易被当成卡死。
现在会先说一句"依赖已经装好、这次不用重新装",再在每段等待前报一句"正在等待后端/前端
就绪(最多 N 秒)"。macOS 补上同样的等待提示。

怎么更新到这一版

  • 已经在用(0.14.2 及更早):设置 → 应用 → 软件更新 → 检查更新 → 下载 → 重启并安装;
    或者双击项目目录里的 update.cmd(macOS 是 update.command)。两条路都只替换程序文件。
  • 第一次安装:到下面「Assets」里按系统下载——
    • Windows:ResumeForge-0.15.0-windows.zip
    • macOS:ResumeForge-0.15.0-macos.zip
    • ResumeForge-0.15.0-all.zip 是给"手动下载但不确定系统"和旧版本应用内更新用的,
      它同时含两个平台的启动脚本,解压双击即可。
      解压后双击 start.cmd(Windows)或 start.command(macOS),其余依赖会自动准备。

旧版本的数据怎么带过来

不用做任何事。 data/(岗位、简历、资料、助手对话、照片)与 .env 都在更新范围之外,
更新只覆盖程序文件。数据库结构在下次启动时自动升级,升级前会在
backend/data/backups/ 留一份快照。

换电脑或想留底:设置 → 数据 → 导出当前数据集,在新机器上「导入备份为新数据集」还原即可
(备份不含 API Key,需要重新填写)。

校验下载

每个压缩包旁边都有一份 .sha256。Windows 上:

Get-FileHash .\ResumeForge-0.15.0-windows.zip -Algorithm SHA256

macOS 上:

shasum -a 256 ResumeForge-0.15.0-macos.zip

把结果与 .sha256 文件里的值对照即可。应用内更新会自动做这一步。

完整改动

见仓库里的 CHANGELOG.md。