flash-recorder
huangwenxuangod/flash-recorder
0 stars
1 forks
JavaScript
69 views
SKILL.md
Tauri + React 桌面应用开发 SKILL(项目栈专用)
本文基于当前技术栈与实际工作流,整理从开发到构建、签名、发布与更新的完整流程,重点覆盖 Tauri Rust 运行机制、Windows 打包与自签名、资产与图标、工作流与权限要求。
1. 技术栈与运行形态
- 前端:React + TypeScript + Vite
- 桌面框架:Tauri 2(Rust)
- 包管理:Node + pnpm
- UI:Tailwind CSS + @heroui/react
- 打包:Windows MSI(WiX)+ NSIS
- 更新:Tauri Updater + GitHub Releases
2. Tauri Rust 核心运行流程
- 前端入口
- Vite 多入口构建(main / mini / edit)
- Tauri 启动流程
- 初始化插件(updater / process / dialog / autostart / opener)
- 注册 command(Rust 函数暴露给前端调用)
- 启动多窗口与权限能力
- 资源与路径
- 打包资源通过 bundle.resources 注入
- 运行时优先从资源目录解析路径
- 安装目录与运行目录必须兼容
3. 开发到构建的完整流程
3.1 环境准备
- Node.js + pnpm
- Rust 工具链(tauri-cli 2)
- Windows:Visual Studio Build Tools + Windows SDK
- WebView2 可用
3.2 本地开发流程
- 启动前端开发服务器
- 启动 Tauri Dev(绑定固定端口)
- 验证多窗口与前端热更新
3.3 本地构建流程
- 前端构建
- 生成多入口产物
- Tauri 打包
- 生成 MSI / NSIS
- 输出 updater 产物(latest.json / *.sig)
4. Windows 打包与签名
4.1 安装包与升级
- MSI
- UpgradeCode 必须固定
- 覆盖安装依赖 UpgradeCode 与稳定安装路径
- NSIS
- installMode 影响安装路径与覆盖策略
4.2 自签名与证书
- 安装包签名
- 使用 signtool.exe
- 证书可自签或正式证书
- 资源签名
- 外部可执行资源需要签名
4.3 图标与资产
- icon.ico 必须配置在 bundle.icon
- 资源文件放入 bundle.resources
- 路径访问使用资源解析逻辑
5. 自动更新体系
- updater 配置
- pubkey 必须与私钥匹配
- endpoints 指向 latest.json
- 更新产物
- latest.json
- *.sig
- 更新流程
- 检查更新 → 下载 → 安装 → 重启
- 常见问题
- pubkey/私钥不匹配导致校验失败
- latest.json 不在 Release 或 URL 不可访问
6. 权限与能力要求
- capabilities 必须声明前端可用能力
- 更新能力需要 updater 相关权限
- 窗口控制需要 window 权限
- 文件打开/保存需要 dialog 与 opener 权限
7. CI/CD 工作流(Windows)
- 安装 Node / pnpm / Rust
- 注入外部资源(如 ffmpeg)
- 设置签名证书
- 注入 updater 私钥
- 构建 MSI/NSIS 与 updater 产物
- 签名安装包与资源
- 上传 Release 资产
8. 常见问题与排查
8.1 打包失败
- 缺失 Windows SDK 或 C++ 工具链
- WebView2 引导安装配置错误
8.2 资源找不到
- resources 未打包
- 资源路径解析不兼容安装目录
8.3 更新失败
- latest.json 缺失或 URL 访问失败
- 更新签名校验失败
- 版本号不一致
8.4 安装覆盖失败
- MSI UpgradeCode 变更
- 安装路径不一致
9. 构建发布检查清单
- 版本号统一
- icon.ico 与资源完整
- updater pubkey 与私钥一致
- latest.json 与签名文件已上传
- MSI/NSIS 可覆盖安装