Rust+Tauri2 桌面应用创建、运行与打包全流程
前言
Tauri 是一个使用 Rust 作为后端、Web 技术作为前端的跨平台桌面应用框架。
相比 Electron,Tauri 生成的安装包体积更小、内存占用更低,安全性也更强。
Tauri 2 是目前的稳定主线版本,引入了全新的插件权限体系和更简洁的配置方式。
本文以 Windows 平台为主,介绍从环境准备到打包发布的完整流程。
环境准备
Microsoft Visual C++ 生成工具
Rust 在 Windows 上依赖 MSVC 工具链进行编译,需要提前安装 C++ 构建环境。
前往 Visual Studio 生成工具下载页 下载并运行安装程序,勾选 C++ 生成工具 和 Windows 10/11 SDK。
WebView2
Tauri 在 Windows 上使用 WebView2 渲染页面内容。
Windows 11 已预置 WebView2,Windows 10 需前往 微软官方页面 下载并安装”常青版引导程序”。
Rust 安装
前往 https://www.rust-lang.org/tools/install 下载 rustup-init.exe 并安装。
安装完成后重启终端,执行以下命令验证安装是否成功。
1 | rustc --version |
若网络较慢,可配置国内镜像以加速 crates 下载。
编辑文件 C:/Users/你的用户名/.cargo/config.toml,写入以下内容(文件不存在则新建)。
1 | [source.crates-io] |
Node.js 安装
Tauri 前端部分使用 Node.js 构建工具,推荐使用 nvm 管理 Node 版本。
建议安装 Node.js 18+ 版本,可通过如下命令安装并切换。
1 | nvm install 20 |
创建项目
初始化
进入你要存放项目的目录,执行以下命令启动交互式项目初始化向导。
1 | npm create tauri-app@latest |
命令执行后会依次询问:
- 项目名称(如
my-tauri-app) - 选择包管理器(
npm/pnpm/yarn) - 选择前端语言(
TypeScript/JavaScript) - 选择 UI 框架(
Vanilla/Vue/React/Svelte等)
根据自身技术栈选择即可,本文以 Vue + TypeScript 为例。
安装依赖
向导完成后,进入项目目录并安装前端依赖。
1 | cd my-tauri-app |
目录结构
项目创建完成后,整体目录结构如下所示。
1 | my-tauri-app/ |
src-tauri/tauri.conf.json 是 Tauri 的主配置文件,包含应用名称、窗口尺寸、打包标识等关键信息。
Tauri 2 新增了 capabilities/ 目录,用于细粒度地声明应用所需的系统权限。
运行
开发模式
开发时执行以下命令,Tauri 会同时启动前端 Vite 热更新服务与 Rust 后端,并打开桌面窗口。
1 | npm run tauri dev |
首次运行需要编译 Rust 依赖,耗时较长(约 3-10 分钟),后续增量编译会快很多。
前端代码修改后会自动热更新,Rust 代码修改后会重新编译后端。
常用命令
以下是开发阶段常用的 Tauri CLI 命令。
1 | # 查看 Tauri CLI 版本 |
前端调用 Rust 命令
定义 Rust 命令
在 src-tauri/src/lib.rs 中使用 #[tauri::command] 宏定义供前端调用的函数,然后在 run() 函数中注册该命令。
1 |
|
前端调用
在前端代码中通过 @tauri-apps/api 包的 invoke 方法调用 Rust 函数,invoke 返回 Promise,支持 async/await 写法。
1 | import { invoke } from '@tauri-apps/api/core' |
注意:Rust 函数参数使用下划线命名(如 my_name),前端调用时需转换为小驼峰(如 myName)。
打包
修改打包配置
打包前先确认 src-tauri/tauri.conf.json 中的关键配置,尤其是 identifier 字段,它是应用的唯一标识,建议使用反向域名格式。
1 | { |
执行打包命令
配置完成后执行以下命令进行打包,Tauri 会先编译前端再编译 Rust 后端,最终生成安装包。
1 | npm run tauri build |
也可以通过 --bundles 参数临时指定打包格式,优先级高于配置文件,适合在 CI 中按需输出不同格式。
1 | # 只生成 exe(NSIS 安装包) |
Windows 平台 targets 可选值说明:nsis 生成 .exe 安装包,msi 生成 .msi 安装包,all 同时生成所有格式。
若只需要 .exe,在 tauri.conf.json 中将 targets 设为 ["nsis"] 即可,省去每次都要附加参数的麻烦。
如果不需要任何安装包,只想得到一个可直接运行的绿色 .exe 文件,使用 --no-bundle 跳过所有打包步骤。
1 | npm run tauri build -- --no-bundle |
编译完成后,可执行文件位于 src-tauri/target/release/<应用名>.exe,双击即可运行,无需安装。
打包产物位于 src-tauri/target/release/bundle/ 目录下(使用 --no-bundle 时产物直接在 src-tauri/target/release/ 下)。
打包产物路径
不同平台的安装包输出位置如下所示。
1 | src-tauri/target/release/bundle/ |
常见问题
WiX 工具下载失败
打包时若提示 wix311-binaries.zip 下载失败,可手动从以下地址下载并解压到对应目录。
1 | 下载地址:https://github.com/wixtoolset/wix3/releases/download/wix3112rtm/wix311-binaries.zip |
注意 WixTools 目录下直接放可执行文件(如 candle.exe),不要再嵌套子文件夹。
Rust 编译依赖超时
若 cargo 拉取依赖时网络超时,确认已按前文配置清华 crates 镜像。
也可以在项目的 .cargo/config.toml 中单独配置,效果与全局配置相同。
前端资源路径 404
开发模式下前端走本地 Vite 服务,打包后走静态文件。
确认 tauri.conf.json 中的 build.frontendDist 路径与 vite.config.ts 中 build.outDir 一致(默认均为 ../dist)。
验证
开发模式下可通过以下方式验证功能是否正常。
- 桌面窗口是否正常弹出并加载前端页面
- 打开浏览器 DevTools(快捷键
F12或右键 → 检查元素)查看控制台日志 - 修改前端代码后页面是否自动刷新
- 调用
invoke命令后是否收到 Rust 函数的返回值
打包完成后,双击安装包完成安装,运行程序验证打包产物功能与开发模式一致。
总结
使用 Tauri 2 创建桌面应用的完整步骤如下。
- 安装 MSVC 构建工具、WebView2、Rust、Node.js
- 配置 Rust crates 国内镜像(可选,但推荐)
- 执行
npm create tauri-app@latest创建项目并选择技术栈 - 进入项目目录执行
npm install安装前端依赖 - 执行
npm run tauri dev启动开发模式 - 在
src-tauri/src/lib.rs定义 Rust 命令并注册 - 前端通过
invoke调用 Rust 命令 - 修改
tauri.conf.json中的identifier等打包配置 - 执行
npm run tauri build生成安装包
注意事项:
- 首次编译 Rust 依赖耗时较长,属于正常现象
identifier必须全局唯一,建议使用反向域名格式- Rust 命令参数命名在 JS 侧需转换为小驼峰
- 打包时若遇到 WiX 下载失败,需手动放置工具包