自动更新配置

Tydora 支持自动更新功能,用户启动应用时会自动检查并安装最新版本。本文档介绍如何配置自动更新所需的签名密钥。

工作原理

  1. 开发者构建应用时,使用私钥对安装包进行签名
  2. 构建产物包含 .sig 签名文件和 latest.json 版本信息
  3. 用户启动应用时,Tauri 从 GitHub Releases 下载 latest.json
  4. 验证签名后自动下载并安装更新

三条更新渠道

Tydora 会先判断当前安装形态(Rust 侧 is_store_version / is_portable_version),再决定走哪条更新路径:

渠道 判断方式 更新方式
GitHub 版(默认) 非商店、非便携 Tauri 更新器读取 GitHub Releases 的 latest.json 与 .sig
微软商店版 安装标识来自 MSIX 跟随商店更新;检测到 GitHub 有更高版本时,由用户在「关于」页主动确认切换到 GitHub 版本
便携版 存在便携标记 通过便携版专用通道(check_portable_update)检查并安装
商店版与便携版的更新入口都在设置的「关于」标签;三个渠道共用同一份签名密钥与 latest.json。

生成签名密钥

安装 minisign

# Windows(使用 scoop)
scoop install minisign

# macOS
brew install minisign

# Linux
sudo apt install minisign

生成密钥对

minisign -G -s ~/.tauri/tydora.key -p ~/.tauri/tydora.key.pub

执行后会提示输入密码,此密码即为 TAURI_SIGNING_PRIVATE_KEY_PASSWORD。

生成两个文件:

  • ~/.tauri/tydora.key — 私钥(保密)
  • ~/.tauri/tydora.key.pub — 公钥(公开)

配置 GitHub Secrets

步骤

  1. 打开仓库 zuorn/Tydora
  2. 进入 Settings → Secrets and variables → Actions
  3. 点击 New repository secret
  4. 添加以下 secrets:
Secret 名称 值 说明
TAURI_SIGNING_PRIVATE_KEY 私钥文件内容 cat ~/.tauri/tydora.key 的输出
TAURI_SIGNING_PRIVATE_KEY_PASSWORD 生成密钥时设置的密码 可选,未设置密码则留空

复制私钥内容

# Windows
type %USERPROFILE%\.tauri\tydora.key

# macOS / Linux
cat ~/.tauri/tydora.key

将输出的完整内容粘贴到 GitHub Secret 中。

配置公钥

将公钥配置到 app/tydora-desktop/tauri.conf.json 的 plugins.updater 中:

{
  "plugins": {
    "updater": {
      "pubkey": "<公钥内容>",
      "endpoints": [
        "https://github.com/zuorn/Tydora/releases/latest/download/latest.json"
      ]
    }
  }
}
桌面端在 2026-09 的重构中已从仓库根的 src-tauri/ 移到 app/tydora-desktop/,VERSION 与 tauri.conf.json 的同步由 npm run sync-version(scripts/sync-version.mjs)负责。

公钥内容可通过以下命令获取:

# Windows
type %USERPROFILE%\.tauri\tydora.key.pub

# macOS / Linux
cat ~/.tauri/tydora.key.pub

构建产物

配置完成后,Release 构建(.github/workflows/release.yml)会自动生成并汇总以下产物:

文件 平台 说明
Tydora_x.x.x_x64-setup.exe Windows NSIS 安装包
Tydora_x.x.x_x64-setup.exe.sig Windows NSIS 签名文件
Tydora_x.x.x_x64_portable.zip Windows 便携版(免安装,解压即用,由 CI 额外压缩 Tydora.exe)
Tydora_x.x.x_x64_en-US.msi Windows MSI 安装包(用于企业分发)
Tydora_x.x.x_aarch64.dmg macOS Apple 芯片安装包
Tydora_aarch64.app.tar.gz / .sig macOS Apple 芯片更新包与签名
Tydora_x64.dmg macOS Intel 芯片安装包
Tydora_x64.app.tar.gz / .sig macOS Intel 芯片更新包与签名
Tydora_amd64.AppImage / .sig Linux AppImage 安装包与签名
Tydora_amd64.deb / .sig Linux Debian / Ubuntu 安装包与签名
Tydora_x86_64.rpm / .sig Linux Fedora / RHEL 安装包与签名
Tydora_x.x.x.0_x64.msix Windows 微软商店包(由 .github/workflows/msstore.yml 单独产出,见 09-博客/上架微软商店)
latest.json 全平台 版本信息(Tauri 更新器自动读取)

验证配置

本地验证

# 构建应用
npm run tauri build

# 检查是否生成 .sig 文件(target 目录在仓库根,由 app/.cargo/config.toml 指定)
ls target/release/bundle/nsis/*.sig

GitHub Actions 验证

  1. 推送到 release 分支或手动触发 Actions
  2. 查看构建日志,确认无签名相关错误
  3. 检查 Release 是否包含 .sig 文件和 latest.json

常见问题

Q: 构建失败提示签名错误

确保 TAURI_SIGNING_PRIVATE_KEY 的值包含完整的私钥内容,包括 untrusted comment: 开头的部分。

Q: 用户无法自动更新

检查 latest.json 是否可访问:

https://github.com/zuorn/Tydora/releases/latest/download/latest.json

Q: 如何更换密钥

  1. 使用 minisign -G 生成新密钥对
  2. 更新 GitHub Secrets 中的私钥
  3. 更新 tauri.conf.json 中的公钥
  4. 重新构建并发布

相关文档