Tauri 的打包配置集中在一个文件里:src-tauri/tauri.conf.json,其中的 bundle 字段决定了各个平台生成什么格式的安装包。你不需要离开前端工具链去学 NSIS 脚本或 Apple 的复杂签名流程,Tauri CLI 会在构建时自动调用各平台的原生打包工具,你只需要用 JSON 声明需求即可。
下面按平台逐一说明常见的安装包格式及其配置要点。
Windows:exe、msi、nsis
Windows 用户主要接触三种格式:便携版 .exe、安装版 .msi 和 .nsis 安装程序。
1. 便携版 .exe
默认情况下,tauri build 就会生成一个 .exe 文件,位于 src-tauri/target/release/bundle/nsis/ 或 msi 目录下。这个 exe 不需要安装,双击即可运行,适合内部工具或绿色软件。无需额外配置,bundle > active: true 即可。
2. NSIS 安装包(推荐)
NSIS (Nullsoft Scriptable Install System) 是 Tauri 在 Windows 上的默认安装包格式,扩展名为 .exe,但它是带安装向导的。你可以在 tauri.conf.json 的 bundle > windows > nsis 里定制几乎所有安装行为:
{
"bundle": {
"active": true,
"targets": "nsis",
"icon": ["icons/icon.ico"],
"windows": {
"nsis": {
"installMode": "currentUser",
"installerIcon": "icons/icon.ico",
"headerImage": "icons/header.bmp",
"sidebarImage": "icons/sidebar.bmp",
"createDesktopShortcut": true,
"createStartMenuShortcut": true,
"shortcutName": "我的应用",
"displayLanguageSelector": true,
"languages": ["English", "SimpChinese"]
}
}
}
}
常见选项解释:
installMode:currentUser(无需管理员权限,安装到用户目录)或allUsers(需要管理员权限,安装到 Program Files)。headerImage/sidebarImage: 安装向导的装饰图,尺寸必须严格符合 NSIS 要求(header 150×57 或 150×80,sidebar 164×314),否则打包会报错。createDesktopShortcut/createStartMenuShortcut: 是否创建快捷方式。displayLanguageSelector: 是否显示语言选择界面,配合languages数组实现多语言安装。
3. MSI 安装包
MSI 格式更适合企业通过组策略静默部署。要生成 .msi,需将 targets 设为 msi,并配置 bundle > windows > wix 字段(Tauri 使用 WiX Toolset 构建 MSI):
{
"bundle": {
"targets": "msi",
"windows": {
"wix": {
"language": "zh-CN",
"template": "main.wxs",
"fragmentPaths": ["./fragments/"],
"componentGroupRefs": ["MyComponents"],
"bannerPath": "icons/banner.bmp",
"dialogImagePath": "icons/dialog.bmp"
}
}
}
}
一般无需自定义 WiX 模板,Tauri 会自动生成。如果需要注册服务、写注册表等高级操作,才需提供自定义 .wxs 模板。MSI 打包依赖系统安装 WiX Toolset,可通过 cargo install wix 或在 Windows 上通过 Tauri CLI 的自动检查安装。
macOS:dmg、app bundle
在 macOS 上,Tauri 默认生成 .dmg(磁盘映像)和 .app(应用包),同步也会处理好代码签名和公证(需开发者账号)。
1. 应用包 .app
这是 macOS 的原生可执行格式,实质是一个目录。只要运行 tauri build,就会在 src-tauri/target/release/bundle/macos/ 下得到 应用名.app。你可以直接把它压缩分发给用户,但不方便安装管理。配置主要在 bundle > identifier(必须反向域名格式,如 com.example.app)和 bundle > icon(需提供 .icns 文件)。
2. DMG 安装映像
这是分发 macOS 应用最惯用的方式。Tauri 会自动将 .app 打包进一个只读的 .dmg 文件,背景、布局都有一套默认设置。如需定制,可以通过 bundle > macOS 字段:
{
"bundle": {
"active": true,
"targets": "dmg",
"icon": ["icons/icon.icns"],
"macOS": {
"dmg": {
"background": "icons/dmg-background.png",
"windowPosition": { "x": 200, "y": 100 },
"windowSize": { "width": 600, "height": 400 },
"appFolderPosition": { "x": 150, "y": 180 },
"applicationPosition": { "x": 450, "y": 180 }
}
}
}
}
背景图片必须是 PNG 格式,尺寸通常为 600×400。appFolderPosition 是“应用程序”文件夹快捷方式的位置,applicationPosition 是你的应用图标位置,这两个点决定用户看到的拖拽安装界面。
关于签名和公证:Tauri 会自动查找你的 Apple 开发者证书(Keychain 中)。配置 bundle > macOS > minimumSystemVersion 可以指定支持的最低系统版本。公证需要在 tauri.conf.json 中设置 tauri > bundle > macOS > notarize,并提供 Apple ID 和团队信息,或在 CI 环境使用专用的 notarization 工具。
Linux:deb、AppImage、rpm
Linux 发行版多样,Tauri 支持三种主流包格式。
1. DEB 包(用于 Debian/Ubuntu 等)
只需将 targets 设为 deb,并配置基本元数据:
{
"bundle": {
"active": true,
"targets": "deb",
"linux": {
"deb": {
"depends": ["libwebkit2gtk-4.1-0", "libgtk-3-0"],
"desktopTemplate": "path/to/custom.desktop"
}
}
}
}
depends 定义依赖关系,通常 Tauri 会自动添加所需的 WebView 库,你可以补充系统包。如果不想依赖 Systemd 或需要自定义启动器,可提供 desktopTemplate。
2. AppImage(通用便携格式)
AppImage 不依赖包管理器,一个文件直接运行。配置极简:
{
"bundle": {
"targets": "appimage",
"linux": {
"appimage": {
"bundleMediaFramework": true
}
}
}
}
bundleMediaFramework 表示是否将多媒体框架打包进去,避免在某些精简系统上缺少 gstreamer 插件导致音视频问题。
3. RPM 包(用于 Fedora、CentOS 等)
配置与 deb 类似:
{
"bundle": {
"targets": "rpm",
"linux": {
"rpm": {
"depends": ["webkit2gtk4.1", "gtk3"],
"epoch": 0,
"release": "1"
}
}
}
}
epoch 和 release 是 RPM 包的版本控制字段,一般保持默认即可。
多格式同时打包
你可能希望同时生成多种格式,例如在 CI 中一次性打出 Windows 的 NSIS 和 MSI,或者 Linux 的 DEB 和 AppImage。只需在 bundle > targets 中用数组列举:
{
"bundle": {
"active": true,
"targets": ["nsis", "msi", "appimage", "deb"]
}
}
Tauri 会依次构建,产物分别放在对应的子目录中。
配置的通用要点
- 图标:提供多尺寸图标可让系统更好地显示。
icon字段接受一个数组,按需提供.ico(Windows)、.icns(macOS)、.png(Linux)。Tauri 会自动转换为各平台需要的尺寸。 - 应用标识符:
bundle > identifier是必须的,且建议使用反向域名格式,如com.yourcompany.appname,这会影响 macOS 的 Bundle ID、Windows 的注册表项、Linux 的 desktop 文件名。 - 签名:Windows 上可使用
bundle > windows > nsis > signingKeyPath或bundle > windows > wix > signingKeyPath指定证书;macOS 自动使用 Keychain 中的“Developer ID Application”证书;Linux 一般不需要签名。 - 更新:不要忘记
bundle > updater配置,它定义应用如何自动更新。
只要配置好这些字段,tauri build 一条命令就能输出专业级别的安装包,避免了手动编写打包脚本的麻烦。真实项目中,建议先跑通默认配置,再按需微调语言、图标和安装路径这类最常变动的选项。