配置桌面应用
配置 01MVP Desktop 的应用身份、环境变量、窗口、图标、CSP 和后端 origin
把模板改成自己的桌面应用时,先改身份和配置,再加业务功能。身份配置不稳定,会影响登录、权限、签名、自动更新和用户本地数据目录。
配置总清单
桌面端比 Web 多了系统身份、安装包、权限和更新链路。用户准备好这张表里的材料,AI 就能按配置文件逐项落地和验收。
| 配置项 | 用户需要准备 | 写到哪里 | 什么时候必须完成 |
|---|---|---|---|
| 应用身份 | product name、version、bundle identifier | tauri.conf.json | 第一次原生窗口和打包前 |
| Web/API 地址 | 本地、preview、production 三套地址 | .env.local、CI env、构建环境 | 登录和 API 调试前 |
| 后端 origin | Tauri dev / production origin | products/01mvp/packages/config/.env 和生产环境 | 登录、CORS、Better Auth 前 |
| 本地数据身份 | 固定 identifier 和 app data 策略 | Tauri 配置和本地偏好 | 开始给用户测试前 |
| 系统权限 | 麦克风、快捷键、辅助功能、文件访问等场景 | Tauri capabilities、macOS 权限说明 | 功能接入前 |
| 自动更新 | 更新域名、下载存储、updater 公钥、版本策略 | tauri.conf.json、发布服务、CI secret | preview 或正式分发前 |
| 签名和公证 | Developer ID、notarization、Windows code signing | 平台后台、证书、CI secret | 面向真实用户下载前 |
| 发布资料 | 下载页、版本号、反馈入口、隐私政策 | Web 页面和安装包元信息 | 内测和公开发布前 |
不要把签名私钥、notarization 密钥、updater 私钥或服务端 secret 写进前端公开变量或仓库。
需要改的配置文件
| 文件 | 负责什么 |
|---|---|
products/01mvp/apps/desktop/package.json | 包名、脚本、依赖 |
products/01mvp/apps/desktop/.env.local | 本地桌面前端公开变量 |
products/01mvp/apps/desktop/src-tauri/tauri.conf.json | Tauri product name、identifier、窗口、CSP、bundle |
products/01mvp/apps/desktop/src-tauri/icons/icon.png | 打包图标 |
products/01mvp/packages/config/.env | 后端允许的桌面 origin |
应用名和 identifier
tauri.conf.json 里最重要的是这三项:
{
"productName": "01MVP Desktop",
"version": "0.1.0",
"identifier": "com.01mvp.desktop.template"
}改成自己的应用时:
| 字段 | 示例 | 说明 |
|---|---|---|
productName | Acme Studio | 用户看到的应用名 |
version | 0.1.0 | 安装包和自动更新使用的版本号 |
identifier | com.acme.studio | macOS、Windows、Tauri app data 和签名都会用到 |
identifier 一旦开始分发,不要随便改。改了以后,用户系统会把它当成另一个应用,本地数据、权限记录和更新链路都会受到影响。
开发版和正式版
推荐开发版和正式版分开:
| 项 | 开发版 | 正式版 |
|---|---|---|
| 应用名 | Acme Studio Dev | Acme Studio |
| identifier | com.acme.studio.dev | com.acme.studio |
| API | 本地或 staging | production |
| 签名 | Apple Development 或 ad-hoc | Developer ID / Windows code signing |
这样可以避免开发权限、测试账号和正式用户数据互相污染。
桌面端公开环境变量
桌面端前端读取:
VITE_DESKTOP_APP_NAME="Acme Studio"
VITE_DESKTOP_SERVER_URL="http://localhost:7001/api"
VITE_DESKTOP_WEB_URL="http://localhost:7001"读取和校验逻辑在:
products/01mvp/apps/desktop/src/config/desktop-env.ts规则很简单:
VITE_DESKTOP_SERVER_URL必须指向/apiVITE_DESKTOP_WEB_URL是网页入口,不带/api- 公开变量会进入前端 bundle,不放服务端 secret
后端 origin
后端的 CORS 和 Better Auth trusted origins 使用:
DESKTOP_ALLOWED_ORIGINS="http://localhost:7410,http://127.0.0.1:7410,tauri://localhost,http://tauri.localhost"它被两个地方使用:
products/01mvp/apps/web/src/server/hono.ts
products/01mvp/packages/auth/src/index.ts本地开发通常保留默认值即可。生产环境如果使用自定义 Tauri origin 或 webview origin,要把它加进去。
窗口配置
窗口配置在 tauri.conf.json:
{
"app": {
"windows": [
{
"label": "main",
"title": "01MVP Desktop",
"width": 1180,
"height": 780,
"minWidth": 1024,
"minHeight": 720
}
]
}
}模板默认按桌面工作台设计,不专门做窄屏。你可以根据产品类型调整尺寸:
| 产品类型 | 建议 |
|---|---|
| 工具型工作台 | 保持 1100px 以上宽度 |
| 小型菜单栏工具 | 单独设计小窗口,不沿用工作台布局 |
| 编辑器或内容工具 | 增大默认高度,保留可调整窗口 |
CSP
桌面端的 CSP 也在 tauri.conf.json。生产环境只允许必要来源:
{
"security": {
"csp": "default-src 'self'; connect-src ipc: http://ipc.localhost https://start.01mvp.com http://localhost:* http://127.0.0.1:*; img-src 'self' asset: data:; style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'none'; frame-ancestors 'none'"
}
}新增 API 域名、图片 CDN 或更新服务时,要同步检查 CSP。不要为了省事把所有来源都放开。
图标
当前模板图标在:
products/01mvp/apps/desktop/src-tauri/icons/icon.png改图标时,尽量从一份品牌源文件生成所有平台资源。不要分别手工改 macOS、Windows、Linux 的图标,否则很容易出现发布包和网页品牌不一致。
配置完成后检查
vpr @01mvp/desktop#type-check
vpr @01mvp/desktop#test
vpr @01mvp/desktop#build
vpr @01mvp/desktop#tauri:check如果改了文档路径或 sidebar,再跑:
vpr @01mvp/web#docs:check-links复制给 AI
请帮我检查 01MVP desktop 的配置是否已经适合 development / preview / production 三个阶段。
我会提供应用名、bundle identifier、版本号、生产 Web/API 地址、是否需要托盘、是否需要系统权限、是否需要自动更新、目标分发平台。
请你只修改必要配置,并列出还缺哪些证书、账号、发布域名、更新端点或 CI secret。
不要把签名私钥、updater 私钥、notarization 密钥或服务端 secret 写进仓库。这篇文档有问题?