00 / 00

构建与分发

构建 01MVP Desktop 安装包,并理解 macOS、Windows、Linux 分发的基本要求

桌面发布比 Web 发布多几个环节:前端 bundle、Rust 编译、安装包、代码签名、平台安全检查和下载分发。先在本机构建成功,再考虑 CI 和自动更新。

正式分发前的凭证清单

AI 或 CI 可以自动执行构建、签名和上传,但前提是账号、证书和 secret 已经准备好。

凭证或配置用途没有它会怎样
Developer ID ApplicationmacOS 面向用户下载的签名用户打开时会遇到 Gatekeeper 风险提示
Apple notarization 凭据把 macOS app 或 DMG 提交公证只有签名,没有完整公证状态
Windows code signing certificateWindows 安装包签名SmartScreen 和安全软件更容易拦截
TAURI_SIGNING_PRIVATE_KEY生成 updater 签名产物自动更新无法验证下载包
发布存储存放 .dmg.msi.AppImage 等安装包用户没有稳定下载地址
更新端点返回版本、下载 URL 和签名应用内“检查更新”不可用
生产 API / Web 地址桌面应用连接后端安装包可能连到本地或 staging

这些凭证不提交到仓库。放进本机安全位置、CI secret 或平台后台。AI 可以检查变量是否存在,但不能替用户购买开发者账号、完成双重验证或接受平台协议。

构建前检查

先跑桌面端代码检查:

vpr @01mvp/desktop#type-check
vpr @01mvp/desktop#lint
vpr @01mvp/desktop#test
vpr @01mvp/desktop#build
vpr @01mvp/desktop#tauri:check

如果这些命令失败,不要直接跑打包。先修基础问题。

本地打包

运行:

vpr @01mvp/desktop#tauri:build

Tauri 会先构建前端,再编译 Rust,最后生成平台安装包。

常见输出位置:

products/01mvp/apps/desktop/src-tauri/target/release/bundle

targetdist 都不提交到 git。

targets

模板里配置:

{
  "bundle": {
    "targets": "all"
  }
}

开发阶段可以保留 all。发布阶段建议按平台明确构建,避免 CI 产物太散:

平台常见产物
macOS.app.dmg
Windows.msi.exe
Linux.AppImage.deb.rpm

不同平台的产物、签名和用户安装习惯都不一样。不要只在 macOS 打过包,就认为 Windows 和 Linux 已经可发布。

版本号

桌面版本号在:

{
  "version": "0.1.0"
}

发布时要保持:

  • tauri.conf.json 的版本号正确
  • changelog 和下载页版本一致
  • 自动更新 manifest 使用同一个版本号
  • 安装包文件名能看出平台和版本

macOS 分发

macOS 正式分发通常需要:

  • Developer ID Application 证书
  • Tauri 使用证书签名
  • notarization
  • stapler 把公证票据绑定到应用或 DMG

详细流程看 macOS 签名与权限Tauri macOS signing

开发阶段可以用 ad-hoc 签名:

{
  "bundle": {
    "macOS": {
      "signingIdentity": "-"
    }
  }
}

ad-hoc 只适合本机开发,不能替代正式分发签名。

Windows 分发

Windows 正式分发通常需要代码签名证书。没有签名的安装包更容易触发 SmartScreen 风险提示。

新产品早期可以先做内部测试包,但面向真实用户下载时,要规划:

  • Windows code signing certificate
  • 安装包命名和版本
  • 下载页校验信息
  • 自动更新产物

Linux 分发

Linux 用户常见接受方式包括 AppImage、deb、rpm。你要根据目标用户选择:

  • 面向普通用户:AppImage 更简单
  • 面向 Debian/Ubuntu 用户:deb 更熟悉
  • 面向 Fedora/RHEL 用户:rpm 更熟悉

Linux 桌面环境差异比较大,发布前至少在一个干净环境里安装测试。

CI 发布建议

稳定发布前,把本地流程固化成 CI:

  1. 安装 Node、Rust 和平台依赖。
  2. 运行 type-check、lint、test。
  3. 构建前端和 Tauri app。
  4. 按平台签名。
  5. 上传 release assets。
  6. 生成或更新自动更新 manifest。
  7. 验证下载链接和更新端点。

不要只验证 git tag。真正的发布验收是安装资产存在、签名有效、下载可用、更新端点返回正确版本。

发布前人工检查

  • 安装包能在干净机器上打开
  • 应用名、图标、版本号正确
  • 登录和受保护 API 可用
  • app data 目录正常创建
  • 托盘菜单能打开和退出
  • 外部链接能打开
  • macOS 权限弹窗和签名状态符合预期
  • 卸载或覆盖安装后不会破坏用户数据

这篇文档有问题?