自动更新
Oleafly 如何构建、签名、验证并发布跨平台的更新源。
Oleafly 使用 Tauri 的更新插件。启动时,应用会检查 GitHub 上的最新发布,有更新版本时会打开自己的更新窗口。用户也可以从应用菜单或 关于 → 检查更新 手动检查。
发布源
标题为“发布源”的部分每个平台的构建都会生成已签名的更新产物和一个 latest.json 片段。发布工作流会把这些片段分开保存,直到四个构建全部完成,再把各目标负责的条目合并成一份规范的清单。
最终的清单必须包含 macOS Apple Silicon、Windows x64、Linux x64 和 Linux ARM64 的条目。在维护者运行受保护的发布工作流之前,它一直附在草稿发布上。已安装的应用看不到草稿。
应用从 GitHub Releases 下载 latest.json。安装之前,Tauri 会用嵌入在 src-tauri/tauri.conf.json 中的公钥验证更新程序签名。缺失、未签名或被改动的产物都会被拒绝。
发布说明来自 CHANGELOG.md 中对应的章节。工作流会提取该章节,同时用于 GitHub 发布正文和更新窗口。
签名密钥
标题为“签名密钥”的部分更新程序的公钥提交在 src-tauri/tauri.conf.json 中。私钥只应放在 GitHub Actions 的密钥中:
TAURI_SIGNING_PRIVATE_KEYTAURI_SIGNING_PRIVATE_KEY_PASSWORD
绝不要提交私钥。如果私钥泄露,请生成新的密钥对,更新仓库密钥,并替换嵌入的公钥。已有的安装只信任它们内嵌的密钥,所以轮换密钥需要一条经过规划的手动更新路径。
操作系统签名与更新程序签名是两回事。存在发布密钥时,macOS 构建使用 Apple 代码签名和公证。存在凭据时,Windows 构建使用 Azure Artifact Signing。
失败与回滚
标题为“失败与回滚”的部分检查或下载失败时,已安装的应用保持不变。签名验证失败会阻止安装。只有在验证过的下载成功安装之后,应用才会重启。
Oleafly 不会自动回滚已完成的更新。要回到较早的版本,请关闭应用,备份重要的项目,下载较早版本的官方安装包,验证后覆盖安装到当前版本之上。
草稿与发布的流程参见发布 Oleafly。