人人都会AI编程

应用基础信息、窗口配置、安全配置

更新时间:2026-07-11

1. 应用基础信息

这部分定义了应用的全局标识、名称、版本等,直接影响生成的二进制文件名、安装包属性和系统内显示的标识。

{
  "productName": "我的工具",
  "version": "1.0.0",
  "identifier": "com.mycompany.mytool",
  "build": {
    "beforeBuildCommand": "npm run build",
    "beforeDevCommand": "npm run dev",
    "devUrl": "http://localhost:1420",
    "frontendDist": "../dist"
  }
}
  • productName:最终 .exe.app 的名称,系统托盘、安装程序标题都会用到。
  • version:必须符合语义化版本,Tauri 会用它生成安装包版本号。
  • identifier:反向域名的唯一标识,macOS 和 Linux 系尤其需要,避免与其它应用冲突。
  • build 区域:告诉 Tauri 如何启动前端开发服务器(devUrl)以及打包时前端构建产物的位置(frontendDist)。beforeDevCommandbeforeBuildCommand 分别在开发/构建前自动执行,通常就是 npm run devnpm run build

实际要注意identifier 一旦设定尽量不要改名,否则可能导致旧配置残留;frontendDist 的路径是相对于 src-tauri 目录的,填错会造成打包后白屏。


2. 窗口配置

窗口配置决定了应用启动时的外观、大小、行为,直接关系到用户体验。

"app": {
  "windows": [
    {
      "title": "我的工具",
      "width": 800,
      "height": 600,
      "resizable": true,
      "fullscreen": false,
      "decorations": true,
      "center": true,
      "minWidth": 400,
      "minHeight": 300
    }
  ]
}
  • title:窗口标题栏显示的文字,支持动态更新(通过 Rust 端 API)。
  • width / height:初始尺寸(单位像素)。
  • resizable:是否允许用户拖拽边框调整大小。
  • decorations:是否显示系统原生的窗口装饰(标题栏、关闭按钮等)。设为 false 可实现无边框窗口,常用于自定义标题栏。
  • center:启动时是否自动居中屏幕。
  • minWidth / minHeight:窗口最小尺寸,防止页面内容被过度压缩。

实用建议:如果你需要 Kiosk 模式或自定义窗口控件,可以设置 decorations: false 并用前端模拟标题栏,但要自行处理拖拽、最小化和关闭。


3. 安全配置

安全是 Tauri 架构的核心优势之一。安全配置通过权限白名单的方式,严格限制前端 JavaScript 能调用的后端接口。

"app": {
  "security": {
    "csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost; script-src 'self'",
    "dangerousDisableAssetCspModification": false
  }
}

另外,权限控制主要在 tauri.conf.jsonplugins 和旧版 allowlist 中(Tauri v2 推荐使用 capabilities 文件),但基础安全选项仍在此处:

  • csp(内容安全策略):定义前端能够加载资源的来源,防御 XSS 和数据注入。示例中只允许加载同源脚本、图片等,可根据需要放宽。Tauri 默认会注入一个严格的 CSP,你可以覆盖,但务必谨慎。
  • dangerousDisableAssetCspModification:设为 true 会禁用 Tauri 在开发时对 asset 协议的 CSP 注入。一般用不到,保持默认 false 即可。

权限白名单(Tauri v1 风格简述)
传统的 Tauri v1 有 tauri.allowlist 字段,例如:

"tauri": {
  "allowlist": {
    "fs": {
      "readFile": true,
      "writeFile": true,
      "scope": ["$APPDATA/*", "$DOCUMENT/*"]
    },
    "shell": {
      "open": true
    },
    "clipboard": {
      "writeText": true,
      "readText": true
    }
  }
}

在 Tauri v2 中,这些能力通过插件系统的 capabilities 进行更细粒度的管理,但设计理念一致:默认全部禁用,需要什么就显式开启什么。只有被明确允许的命令,前端才能通过 invoke 调用。

安全底线:永远不要为了方便而把所有 API 全盘开启。即使发生前端代码被篡改,攻击者也受限于你配置的权限范围,无法任意访问系统。


总结
这三个配置区域互相协作:基础信息确保应用有一个合法的身份,窗口配置提供了第一眼的使用体验,安全配置则构成了一道防波堤。在项目开始时就做好这些设定,后续才能平稳开发、安全上线。