菜单

打包器

相关源文件

Tauri 打包器是一个核心系统,负责将编译后的应用程序转换为特定于平台的发行包,例如 .msi.exe.dmg.deb 等。本页面介绍了打包器的架构、配置选项以及如何使用它来创建跨平台的安装包。有关打包器的 CLI 接口信息,请参阅 CLI

概述

Tauri 打包器会获取您编译好的应用程序,并将其与特定于平台的元数据、二进制文件、资源和打包信息一起打包,从而创建安装程序或分发包。该打包器设计灵活,支持多种目标平台和包格式,并提供广泛的自定义选项。

来源

包类型

打包器支持各种平台上的多种包类型

包类型描述平台
MacOsBundlemacOS 应用程序包 (.app)macOS
IosBundleiOS 应用程序包iOS
WindowsMsiWindows MSI 安装程序Windows
NsisWindows NSIS 安装程序 (.exe)Windows
DebDebian 包 (.deb)Linux
RpmRPM 包 (.rpm)Linux
AppImageAppImage 包 (.AppImage)Linux
DmgmacOS 磁盘映像 (.dmg)macOS
Updater更新程序包所有

每种包类型都在打包器中实现为一个独立的模块,其中包含针对平台特定要求的打包逻辑。

来源

打包器设置架构

打包器使用分层设置结构,该结构定义了打包过程的各个方面

来源

打包过程

打包过程遵循以下步骤

  1. 配置加载:CLI 读取 tauri.conf.json 配置文件和任何特定于平台的覆盖配置
  2. 设置准备:配置转换为打包器设置
  3. 二进制文件准备:编译好的二进制文件会被准备好,并在需要时进行签名
  4. 资源收集:收集配置文件中指定的资源
  5. 创建包:为每种目标包类型执行特定于平台的打包逻辑
  6. 更新程序集成:如果启用,将创建并签名更新程序工件

来源

CLI 打包命令

CLI 通过 tauri bundle 命令暴露打包器,该命令负责配置加载、执行打包器以及报告结果。该命令支持各种选项来控制打包过程

选项描述
--debug使用 debug 标志构建
--bundles要打包的包的空格或逗号分隔列表
--config要合并的 JSON 字符串或配置文件路径
--features要激活的 Cargo 功能的空格或逗号分隔列表
--target要构建的目标三元组
--ci跳过提示输入值

来源

特定平台打包

Windows 打包

Windows 打包支持 MSI(Windows Installer)和 NSIS(Nullsoft Scriptable Install System)包,并提供广泛的自定义选项。

Windows MSI (WiX) 设置

MSI 打包器使用 WiX Toolset,并支持以下自定义设置

  • 版本信息
  • 升级代码用于更新
  • 多语言支持
  • 自定义模板和组件
  • 横幅和对话框图像
  • 提升权限的更新任务
  • FIPS 合规性设置

NSIS 设置

NSIS 打包器支持

  • 自定义模板
  • 自定义头和侧边栏图像
  • 安装程序图标自定义
  • 安装模式(每用户或全机器)
  • 多语言安装程序及语言选择器
  • 压缩设置
  • 开始菜单文件夹自定义
  • 自定义安装程序挂钩
  • WebView2 最低版本要求

macOS 打包

macOS 打包支持 .app 包和 .dmg 磁盘映像

macOS App Bundle 设置

  • 框架包含
  • 自定义文件映射
  • 包版本控制
  • 最低系统版本要求
  • 用于网络访问的异常域名
  • 代码签名身份和设置
  • 硬化运行时配置
  • 公证设置

DMG 设置

  • 自定义背景图像
  • 窗口位置和大小自定义
  • DMG 窗口中的 App 和 Applications 文件夹定位

Linux 打包

Linux 支持多种打包格式

Debian 设置

  • 包依赖项
  • 包推荐
  • 自定义文件位置
  • 桌面模板自定义
  • 安装前/后脚本

RPM 设置

  • 包依赖项
  • 自定义文件映射
  • 桌面模板自定义
  • 安装前/后脚本
  • 压缩设置

AppImage 设置

  • 自定义文件映射
  • 媒体框架打包选项
  • XDG 集成

移动端打包

对移动平台的支持实现在 CLI 层而不是核心打包器中

iOS 打包

  • iOS 应用程序包创建
  • 包版本管理
  • 资源复制
  • 供应配置文件集成
  • 代码签名和公证

Android 打包

  • APK 和 AAB 生成
  • 资源集成
  • 自定义配置

来源

更新程序集成

当启用更新程序功能时,打包器对创建更新程序工件有特殊支持

  1. 它为兼容的包类型创建更新程序包
  2. 使用提供的签名密钥对更新程序工件进行签名
  3. 生成签名文件以进行更新验证

更新程序集成需要

  • 配置文件中的公钥
  • 用于签名的私钥(通常通过环境变量)
  • 私钥的可选密码

打包器确保签名密钥与公钥匹配,以防止配置错误。

来源

打包构建实现

打包器实现可以表示如下

打包逻辑遵循以下步骤

  1. 根据设置或默认值确定要构建的包类型
  2. 按优先级对包类型进行排序(以处理 DMG 需要 APP 等依赖关系)
  3. 对于每种包类型
    • 如果已打包则跳过
    • 调用特定于平台的打包函数
    • 收集包路径
  4. 如果需要,对更新程序工件进行签名
  5. 返回包列表

来源

与 CLI 集成

打包器通过 bundle 命令集成到 Tauri CLI 中,该命令

  1. 处理命令行参数
  2. 加载和合并配置文件
  3. 创建 AppInterface 并获取应用设置
  4. 将应用设置转换为打包器设置
  5. 调用打包器并处理结果

来源

配置选项

Tauri 打包器可以通过 tauri.conf.json 文件进行高度配置。关键配置部分包括:

捆绑包配置

通过多层处理,配置被映射到内部设置结构

  1. 读取并合并配置文件与特定于平台的覆盖配置
  2. 配置转换为 ConfigMetadata
  3. AppSettings 提取包配置
  4. 包配置转换为 BundleSettings
  5. BundleSettings 用于创建打包器的 Settings

来源

结论

Tauri 打包器是一个强大而灵活的系统,用于跨多个平台创建分发包。它与 Tauri CLI 和配置系统深度集成,提供了广泛的自定义选项,同时抽象了特定于平台的打包复杂性。

了解打包器架构有助于开发人员正确配置其应用程序以进行分发,并在出现打包问题时进行故障排除。