跳转到内容
Oleaflyv0.4.7

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 发布正文和更新窗口。

从版本标签到已安装的应用推送版本标签会为 macOS Apple Silicon、Windows x64、Linux x64 和 Linux ARM64 启动签名构建。它们的更新器片段会合并成一个 latest.json,附加到草稿发布上,供维护者审核。发布流程会再次检查一切,然后发布该版本,latest.json 随之生效。已安装的应用下载它,对照应用内嵌的公钥检查签名,然后安装。签名构建版本标签启动构建macOS Apple SiliconWindows x64Linux x64Linux ARM64latest.json一个清单草稿发布维护者审核发布流程再次检查,然后发布已发布的版本latest.json 已生效已安装的应用检查签名,然后安装维护者运行“发布”从版本标签到已安装的应用推送版本标签会为 macOS Apple Silicon、Windows x64、Linux x64 和 Linux ARM64 启动签名构建。它们的更新器片段会合并成一个 latest.json,附加到草稿发布上,供维护者审核。发布流程会再次检查一切,然后发布该版本,latest.json 随之生效。已安装的应用下载它,对照应用内嵌的公钥检查签名,然后安装。签名构建版本标签启动构建macOS Apple SiliconWindows x64Linux x64Linux ARM64latest.json一个清单草稿发布维护者审核发布流程再次检查,然后发布已发布的版本latest.json 已生效已安装的应用检查签名,然后安装
一个标签会为全部四个平台构建并签名,生成草稿。发布后 latest.json 生效,已安装的应用会先检查签名再安装。

更新程序的公钥提交在 src-tauri/tauri.conf.json 中。私钥只应放在 GitHub Actions 的密钥中:

  • TAURI_SIGNING_PRIVATE_KEY
  • TAURI_SIGNING_PRIVATE_KEY_PASSWORD

绝不要提交私钥。如果私钥泄露,请生成新的密钥对,更新仓库密钥,并替换嵌入的公钥。已有的安装只信任它们内嵌的密钥,所以轮换密钥需要一条经过规划的手动更新路径。

操作系统签名与更新程序签名是两回事。存在发布密钥时,macOS 构建使用 Apple 代码签名和公证。存在凭据时,Windows 构建使用 Azure Artifact Signing。

检查或下载失败时,已安装的应用保持不变。签名验证失败会阻止安装。只有在验证过的下载成功安装之后,应用才会重启。

Oleafly 不会自动回滚已完成的更新。要回到较早的版本,请关闭应用,备份重要的项目,下载较早版本的官方安装包,验证后覆盖安装到当前版本之上。

草稿与发布的流程参见发布 Oleafly。

图片预览

无法加载 AI 回答

请重试,或搜索文档。