人人都会AI编程

15.2 各平台安装包配置

更新时间:2026-07-11

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.jsonbundle > 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"
      }
    }
  }
}

epochrelease 是 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 > signingKeyPathbundle > windows > wix > signingKeyPath 指定证书;macOS 自动使用 Keychain 中的“Developer ID Application”证书;Linux 一般不需要签名。
  • 更新:不要忘记 bundle > updater 配置,它定义应用如何自动更新。

只要配置好这些字段,tauri build 一条命令就能输出专业级别的安装包,避免了手动编写打包脚本的麻烦。真实项目中,建议先跑通默认配置,再按需微调语言、图标和安装路径这类最常变动的选项。