mit einem Klick
tauri-packaging
// Tauri 打包与分发技能,指导跨平台安装包构建、签名和分发。 触发场景: - 需要构建生产安装包 - 需要配置各平台打包参数 - 需要代码签名 - 需要减小安装包体积 - 需要设置应用图标和元数据 触发词: 打包、构建、build、发布、安装包、exe、dmg、deb、签名、分发、release
// Tauri 打包与分发技能,指导跨平台安装包构建、签名和分发。 触发场景: - 需要构建生产安装包 - 需要配置各平台打包参数 - 需要代码签名 - 需要减小安装包体积 - 需要设置应用图标和元数据 触发词: 打包、构建、build、发布、安装包、exe、dmg、deb、签名、分发、release
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、移动端打包
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
排查已发生的问题、定位 Bug 原因。 触发场景: - 代码运行报错,需要定位原因 - 功能不正常,需要排查 - Tauri Command 返回错误,需要分析 - 日志分析、调试代码 触发词:Bug、报错、不工作、调试、排查、为什么、出问题、失败、不生效、无效、找不到原因、定位问题
排查已发生的问题、定位 Bug 原因。 触发场景: - 代码运行报错,需要定位原因 - 功能不正常,需要排查 - Tauri Command 返回错误,需要分析 - 日志分析、调试代码 触发词:Bug、报错、不工作、调试、排查、为什么、出问题、失败、不生效、无效、找不到原因、定位问题
Git 工作流与版本管理技能,规范分支策略、提交信息和发布流程。 触发场景: - 用户需要创建分支或合并代码 - 用户需要规范提交信息格式 - 用户需要管理版本发布流程 触发词:Git、分支、提交、合并、版本发布
| name | tauri-packaging |
| description | Tauri 打包与分发技能,指导跨平台安装包构建、签名和分发。 触发场景: - 需要构建生产安装包 - 需要配置各平台打包参数 - 需要代码签名 - 需要减小安装包体积 - 需要设置应用图标和元数据 触发词: 打包、构建、build、发布、安装包、exe、dmg、deb、签名、分发、release |
# 构建所有平台安装包
pnpm tauri build
# 仅构建特定格式
pnpm tauri build --bundles msi # Windows MSI
pnpm tauri build --bundles nsis # Windows NSIS
pnpm tauri build --bundles dmg # macOS DMG
pnpm tauri build --bundles deb # Linux DEB
pnpm tauri build --bundles appimage # Linux AppImage
# Debug 构建(包含 DevTools)
pnpm tauri build --debug
{
"productName": "MyApp",
"version": "1.0.0",
"identifier": "com.company.myapp",
"bundle": {
"active": true,
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
],
"resources": [],
"copyright": "Copyright (c) 2026 Company",
"category": "Productivity",
"shortDescription": "我的桌面应用",
"longDescription": "一个使用 Tauri 构建的跨平台桌面应用"
}
}
{
"bundle": {
"windows": {
"certificateThumbprint": null,
"digestAlgorithm": "sha256",
"timestampUrl": "",
"wix": null,
"nsis": {
"displayLanguageSelector": true,
"languages": ["SimpChinese", "English"],
"installerIcon": "icons/icon.ico"
}
}
}
}
{
"bundle": {
"macOS": {
"entitlements": null,
"frameworks": [],
"minimumSystemVersion": "10.15",
"signingIdentity": null
}
}
}
{
"bundle": {
"linux": {
"deb": {
"depends": ["libwebkit2gtk-4.0-37"],
"section": "utility"
},
"appimage": {
"bundleMediaFramework": false
}
}
}
}
# 从 1024x1024 PNG 生成所有平台图标
pnpm tauri icon path/to/icon-1024x1024.png
需要准备的图标:
| 文件 | 尺寸 | 平台 |
|---|---|---|
icon.ico | 多尺寸合一 | Windows |
icon.icns | 多尺寸合一 | macOS |
32x32.png | 32x32 | 通用 |
128x128.png | 128x128 | 通用 |
128x128@2x.png | 256x256 | HiDPI |
# src-tauri/Cargo.toml
[profile.release]
opt-level = "z" # 最小体积
lto = true # 链接时优化
codegen-units = 1 # 单代码生成单元
strip = true # 剥离调试信息
panic = "abort" # abort 而非 unwind
| 平台 | 基础模板 | 中等应用 |
|---|---|---|
| Windows (.msi) | ~3 MB | ~5-10 MB |
| macOS (.dmg) | ~5 MB | ~8-15 MB |
| Linux (.deb) | ~4 MB | ~6-12 MB |
src-tauri/target/release/bundle/
├── msi/ → .msi 安装包 (Windows)
├── nsis/ → .exe 安装程序 (Windows)
├── dmg/ → .dmg 磁盘映像 (macOS)
├── macos/ → .app 应用包 (macOS)
├── deb/ → .deb 包 (Debian/Ubuntu)
└── appimage/ → .AppImage (通用 Linux)
版本号需在 3 处同步:
# 1. package.json
"version": "1.0.0"
# 2. src-tauri/Cargo.toml
version = "1.0.0"
# 3. src-tauri/tauri.conf.json
"version": "1.0.0"
项目已配置 GitHub Actions CI(.github/workflows/release.yml),推送 v*.*.* Tag 后自动构建三平台安装包。
使用 /release 命令可自动完成全部发布流程,详见 release-publish 技能。
| 错误做法 | 正确做法 |
|---|---|
| 不配置 release profile | 添加 LTO + strip 优化体积 |
| 图标尺寸不全 | 使用 tauri icon 命令自动生成 |
| 版本号不同步 | 3 处版本号保持一致 |
| 不测试安装包 | 每次发布前在干净环境安装测试 |
| 不设置应用标识 | identifier 使用反向域名格式 |
Rust 中启动子进程未设 CREATE_NO_WINDOW | 打包后变 GUI 进程,所有 Command::new() 必须设 creation_flags(0x08000000) |
productName 含中文导致 WiX MSI 打包失败 | 改用 NSIS ("targets": ["nsis"]) 或改 productName 为纯 ASCII |
bundle.targets 设为 "all" 在 CI 上出错 | CI 中通过 --bundles 参数指定,本地可用 ["nsis"] |