00 / 00

桌面端必懂基础

给新手准备的桌面应用基础知识:Tauri、窗口、本地权限、存储、签名和自动更新

桌面应用就是”一个带系统能力的本地窗口”。界面还是用 React 写,后端还是复用 01MVP Web/API,但多了本地 runtime:读文件、打开目录、托盘常驻、自动更新、系统权限和安装包。

新手最容易低估的点:桌面端不是套个壳就完事。只要你要发给真实用户,本地权限、存储位置、签名、公证和更新都得认真搞。

核心要点

界面仍然是前端

React 负责窗口里的页面、按钮、表单和数据展示。

系统能力要走 Tauri

文件、托盘、打开目录、进程和权限,不应该直接当成普通网页能力。

发布是工程问题

DMG、EXE、签名、公证、更新端点,都要在发布前纳入验收。

发布前会遇到哪些账号和证书

桌面端可以很快跑起 UI,但公开分发时会遇到平台信任问题。用户电脑会问:这个安装包是谁发的、有没有被篡改、能不能自动更新。

名称用途什么时候准备
Apple Developer ProgrammacOS Developer ID 签名、公证、Gatekeeper 信任、Mac App Store准备公开发 macOS 安装包前
Windows 代码签名证书.exe / .msi 安装包签名,降低安全警告准备公开发 Windows 安装包前
GitHub Releases / R2 / 文件服务器托管安装包、更新文件和 changelog做下载页或自动更新前
自己的域名下载页、API、隐私政策、自动更新端点真实分发前
Microsoft Partner Center上架 Microsoft Store 时使用只在选择商店分发时需要

内部测试可以先跳过签名和商店,直接生成安装包给自己或团队验。但只要面向真实用户,签名、公证和更新路径就要进入发布计划。

一张图看懂桌面端

React 界面
页面 / 表单 / 状态
Runtime Adapter
浏览器和 Tauri 的分界
Tauri Command
调用本地能力
操作系统
文件 / 权限 / 更新

关键是中间两层。普通网页没有 Tauri runtime,不能随便读写用户电脑。模板把”界面”和”系统能力”分开,这样调试时更容易定位问题出在哪一层。

先搞懂这 7 个概念

概念新手理解方式为什么重要
Tauri把 Web 前端变成桌面应用的框架让 React 界面拥有本地窗口和系统能力
Window用户看到的应用窗口尺寸、标题、全屏、关闭行为都要配置
Command前端请求本地能力的入口例如打开 app data 目录、读写配置、调用系统功能
CapabilityTauri 的权限清单限制前端能调用哪些本地能力
App Data应用自己的本地数据目录适合放偏好设置、缓存、离线资料
Keychain系统级安全存储适合放 token、敏感凭据,后续产品可按需接入
Updater自动更新机制用户安装后,不应每次手动下载安装包

Tauri 官方文档把桌面应用拆成前端、Rust 后端、配置和能力边界几部分。你不用一开始就精通 Rust,但要知道系统能力不能散落在页面里。

浏览器预览和 Tauri 真机窗口

浏览器预览适合做什么

  • 看页面布局
  • 调按钮、表单、普通 API
  • 快速检查 Tailwind 样式
  • 让没有 Rust 环境的人先看 UI

Tauri 原生窗口必须验证什么

  • 本地 command 是否可用
  • capabilities 是否放行
  • 托盘、窗口、打开目录是否正常
  • 打包后的安装包是否可启动

浏览器能跑通,不等于桌面端完成。浏览器只能说明 UI 和网络请求大概没问题;Tauri command、系统权限、安装包和自动更新必须在原生窗口或打包产物里验。

改造顺序

先改应用身份:产品名、identifier、窗口标题、图标、Bundle 信息和安装包显示名。

再接 Web/API:配置 VITE_DESKTOP_SERVER_URL,验证 health、登录、profile 和会员状态。

再加本地能力:每新增一个系统能力,都同步更新 Tauri command、capability、前端 adapter 和验收说明。

最后做发布工程:签名、公证、安装包、自动更新端点和多平台 QA 一起处理。

复制给 AI

当你要把模板改成自己的桌面应用,把这段发给 AI:

请帮我把 01MVP desktop 模板改成我的桌面应用。产品名称是「这里填名称」,核心功能是「这里填一句话」,目标平台是 macOS / Windows / Linux。

请先检查 products/01mvp/apps/desktop 的当前结构,再按这个顺序执行:
1. 替换应用名称、identifier、窗口标题、图标和 Tauri 配置。
2. 检查 VITE_DESKTOP_* 环境变量,并确认后端允许桌面端 origin。
3. 验证 health、登录、profile 和会员状态都通过现有 01MVP Web/API 调用。
4. 保留 runtime adapter,不要在页面里直接散写 Tauri 调用。
5. 如果新增本地能力,同步更新 Rust command、capability、前端 adapter 和文档。
6. 运行桌面端可用的 lint、type-check、test、cargo check、tauri build 或替代检查,并汇报结果。

如果你的应用需要全局快捷键、截图、文件监听、后台任务、Keychain 或自动更新,把这些作为独立任务交给 AI。系统能力越多,越要分批验证。

常见坑

正确做法
把所有 Tauri 调用写进页面放进 runtime adapter,页面只调用清晰的方法
浏览器预览通过就认为桌面完成原生窗口、command、capability、安装包都要测
本地数据乱放偏好和缓存放 app data,敏感凭据后续接 Keychain
忽略签名和自动更新真实分发前要准备证书、公证、更新端点和回滚方案
一次性加入太多系统权限每个权限单独说明、单独配置、单独验收

继续阅读

官方参考

这篇文档有问题?