一键导入
tauri-updater
Tauri 应用自动更新技能,使用 tauri-plugin-updater 实现版本更新。 触发场景: - 需要实现应用自动更新 - 需要配置更新服务器 - 需要处理更新 UI 和流程 - 需要管理更新签名和安全 触发词: 更新、update、自动更新、版本更新、升级、updater、OTA
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Tauri 应用自动更新技能,使用 tauri-plugin-updater 实现版本更新。 触发场景: - 需要实现应用自动更新 - 需要配置更新服务器 - 需要处理更新 UI 和流程 - 需要管理更新签名和安全 触发词: 更新、update、自动更新、版本更新、升级、updater、OTA
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Git 工作流与版本管理技能,规范分支策略、提交信息和发布流程。 触发场景: - 用户需要创建分支或合并代码 - 用户需要规范提交信息格式 - 用户需要管理版本发布流程 触发词:Git、分支、提交、合并、版本发布
发布 Tauri 桌面应用新版本,处理版本号同步、Git tag、GitHub Actions 构建、Release 仓库产物同步、Cloudflare R2 上传、update.json 生成、自动更新发布和文档站重建。 触发场景: - 需要发布新版本或 release - 需要打 tag、推送发布分支或触发 CI 构建 - 需要生成或更新 update.json - 需要处理 Tauri updater 签名产物 - 需要同步 R2 CDN、GitHub/Gitee release 仓库或发布安装包 触发词:发布、release、版本发布、推送、打Tag、update.json、签名构建、安装包、自动更新、R2、CDN
Git 工作流与版本管理技能,规范分支策略、提交信息和发布流程。 触发场景: - 用户需要创建分支或合并代码 - 用户需要规范提交信息格式 - 用户需要管理版本发布流程 触发词:Git、分支、提交、合并、版本发布
自主连续开发方法论(Codex 版)。把一个项目按「每轮一个最小可提交单元」的方式推进到完成: 每轮读真相源 → 选下一个未做项 → 做一个最小单元 → 过验证门 → 记录勾选 → 最小提交 → 报进度。 适用于"按需求/台账建功能、还原原型、修一批 bug、补测试、重构、迁移、清理"等需要反复同构推进的任务。 与 Claude Code 的关系:Claude Code 有内置 `/loop` 自动续期(`/loop /dev-loop`),Codex 没有—— 所以 Codex 端由你(或脚本 / cron)反复触发"继续下一轮",方法论本身一致。 触发场景: - 想让 Codex 把某个项目/某个意图"一轮轮推进到完成" - 还原原型图、修一批 warning、补单测、重构模块等同构重复任务 - 需要"每步可编译、可回退、可恢复"的稳健推进方式 触发词:自主开发、连续开发、循环开发、一轮一提交、还原原型、批量修复、autonomous dev、continuous dev
Tauri 打包与分发技能,指导桌面端(Windows/macOS/Linux)与移动端(Android/iOS)的构建、签名和分发。 触发场景: - 需要构建生产安装包(exe/dmg/deb/apk/aab/ipa) - 需要配置各平台打包参数 - 需要代码签名(Windows 证书 / Android keystore / iOS 描述文件) - 需要减小安装包体积 - 需要设置应用图标和元数据 - 需要打包 Android / iOS App 触发词: 打包、构建、build、发布、安装包、exe、dmg、deb、apk、aab、ipa、签名、分发、release、android build、ios build、移动端打包
排查已发生的问题、定位 Bug 原因。 触发场景: - 代码运行报错,需要定位原因 - 功能不正常,需要排查 - Tauri Command 返回错误,需要分析 - 日志分析、调试代码 触发词:Bug、报错、不工作、调试、排查、为什么、出问题、失败、不生效、无效、找不到原因、定位问题
| name | tauri-updater |
| description | Tauri 应用自动更新技能,使用 tauri-plugin-updater 实现版本更新。 触发场景: - 需要实现应用自动更新 - 需要配置更新服务器 - 需要处理更新 UI 和流程 - 需要管理更新签名和安全 触发词: 更新、update、自动更新、版本更新、升级、updater、OTA |
# Cargo.toml
tauri-plugin-updater = "2"
pnpm add @tauri-apps/plugin-updater
tauri::Builder::default()
.plugin(tauri_plugin_updater::Builder::new().build())
{ "permissions": ["updater:default"] }
{
"plugins": {
"updater": {
"endpoints": [
"https://releases.myapp.com/update.json"
],
"pubkey": "YOUR_PUBLIC_KEY_HERE"
}
},
"bundle": {
"createUpdaterArtifacts": true
}
}
注意:
createUpdaterArtifacts: true让构建自动生成.sig签名文件和更新用的.zip包。
| 模式 | 示例 | 说明 |
|---|---|---|
| 静态 JSON 文件 | https://cdn.example.com/update.json | 最简单,适合静态托管 |
| 动态端点 | https://api.example.com/{{target}}/{{arch}}/{{current_version}} | 服务端可按条件返回 |
| GitHub Pages | https://username.github.io/releases/update.json | 免费托管 |
完整示例,包含所有平台:
{
"version": "1.1.0",
"notes": "修复了若干问题,提升了性能",
"pub_date": "2026-03-05T12:00:00Z",
"platforms": {
"windows-x86_64": {
"url": "https://github.com/user/repo/releases/download/v1.1.0/MyApp_1.1.0_x64-setup.nsis.zip",
"signature": "CONTENT_OF_.sig_FILE"
},
"darwin-aarch64": {
"url": "https://github.com/user/repo/releases/download/v1.1.0/MyApp.app.tar.gz",
"signature": "CONTENT_OF_.sig_FILE"
},
"darwin-x86_64": {
"url": "https://github.com/user/repo/releases/download/v1.1.0/MyApp.app.tar.gz",
"signature": "CONTENT_OF_.sig_FILE"
},
"linux-x86_64": {
"url": "https://github.com/user/repo/releases/download/v1.1.0/MyApp_1.1.0_amd64.AppImage.tar.gz",
"signature": "CONTENT_OF_.sig_FILE"
}
}
}
signature 值: 构建产物的
.sig文件内容(Base64 字符串),不是文件路径。
| 平台 | 构建产物 | 包大小参考 | 建议 |
|---|---|---|---|
| Windows x86_64 | .nsis.zip | ~10-30MB | 推荐,覆盖最大用户群 |
| macOS aarch64 (Apple Silicon) | .app.tar.gz + .dmg | ~10-20MB | 推荐,新 Mac 必需 |
| macOS x86_64 (Intel) | .app.tar.gz + .dmg | ~10-20MB | 推荐,兼容旧 Mac |
| Linux x86_64 | .AppImage.tar.gz + .deb | ~60-80MB | 可选,体积较大 |
决策建议: 小团队可先只支持 Windows + macOS,Linux 用户量少且 AppImage 体积大。在 update.json 的
platforms中只包含你实际构建的平台即可。
import { check } from "@tauri-apps/plugin-updater";
async function checkForUpdate() {
const update = await check();
if (update) {
console.log(`发现新版本: ${update.version}`);
console.log(`更新说明: ${update.body}`);
// 下载并安装
await update.downloadAndInstall((event) => {
switch (event.event) {
case "Started":
console.log(`开始下载,总大小: ${event.data.contentLength}`);
break;
case "Progress":
console.log(`下载中: ${event.data.chunkLength} bytes`);
break;
case "Finished":
console.log("下载完成");
break;
}
});
// 安装完成后需要重启
// await relaunch();
} else {
console.log("已是最新版本");
}
}
# 生成更新签名密钥对
pnpm tauri signer generate -w ~/.tauri/myapp.key
# 输出:
# 私钥: ~/.tauri/myapp.key
# 公钥: 显示在终端(复制到 tauri.conf.json 的 pubkey)
# 构建时设置签名密钥
TAURI_SIGNING_PRIVATE_KEY=~/.tauri/myapp.key pnpm tauri build
CI 负责构建、签名并上传到 GitHub Release。根据需要调整构建矩阵。
# .github/workflows/release.yml
name: Release
on:
push:
tags: ['v*.*.*']
jobs:
release:
strategy:
fail-fast: false
matrix:
include:
# Windows
- platform: windows-latest
args: '--bundles nsis'
# macOS Apple Silicon
- platform: macos-latest
args: '--bundles app,dmg'
target: aarch64-apple-darwin
# macOS Intel
- platform: macos-latest
args: '--bundles app,dmg'
target: x86_64-apple-darwin
# Linux(可选,取消注释启用)
# - platform: ubuntu-22.04
# args: '--bundles appimage,deb'
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- run: pnpm install
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
with:
tagName: ${{ github.ref_name }}
releaseName: 'MyApp ${{ github.ref_name }}'
releaseDraft: true
args: ${{ matrix.args }}
| Secret | 说明 |
|---|---|
GITHUB_TOKEN | 自动提供,无需配置 |
TAURI_SIGNING_PRIVATE_KEY | 更新签名私钥内容 |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD | 私钥密码(无密码则设为空字符串) |
tauri.conf.json 和 package.json 中的版本号git tag v1.1.0 && git push --tags.sig 文件内容填入 update.jsonupdate.json 推送到更新端点(静态文件托管)| 错误做法 | 正确做法 |
|---|---|
| 不签名更新包 | 必须使用签名确保安全 |
| 私钥提交到仓库 | 私钥只放在 CI 密钥或本地 |
| 更新后不提示重启 | 提示用户重启以应用更新 |
| 不处理下载失败 | catch 错误并允许重试 |
| 不做灰度发布 | 先小范围测试再全量推送 |