#tauri #bundle #desktop-applications #cargo #os-version

tauri-bundler

为 Tauri 包装特定于操作系统的应用程序包

112 个版本 (30 个稳定版)

2.0.1-rc.5 2024 年 8 月 22 日
2.0.1-beta.192024 年 7 月 29 日
2.0.1-beta.72024 年 3 月 20 日
2.0.0-alpha.132023 年 12 月 19 日
0.5.0 2020 年 3 月 28 日

#68 in Cargo 插件

Download history 3442/week @ 2024-05-03 2980/week @ 2024-05-10 2986/week @ 2024-05-17 2936/week @ 2024-05-24 3129/week @ 2024-05-31 3080/week @ 2024-06-07 3030/week @ 2024-06-14 2649/week @ 2024-06-21 3571/week @ 2024-06-28 3000/week @ 2024-07-05 3210/week @ 2024-07-12 3187/week @ 2024-07-19 3455/week @ 2024-07-26 3722/week @ 2024-08-02 3521/week @ 2024-08-09 3588/week @ 2024-08-16

14,849 每月下载量
用于 4 个 crate(3 个直接使用)

Apache-2.0 OR MIT

545KB
12K SLoC

Tauri Bundler

在特定于操作系统的应用程序包中包装 Rust 可执行文件。

关于

这是 awesome cargo-bundle 的一个分支,已转换为由 Tauri CLI 使用的库。

配置

Tauri 会自动从 tauri.conf.json > bundle 对象加载配置,但这个库不依赖于它,也可以用于非 Tauri 应用。

一般设置

这些设置适用于所有(或大多数)操作系统的应用程序包。

  • name:构建应用程序的名称。如果不存在,则将使用您的 Cargo.toml 文件中的 name 值。
  • identifier: [必填] 一个以反向DNS形式唯一标识您的应用的字符串(例如,"com.example.appname""io.github.username.project")。对于OS X和iOS,这用作捆绑包的 CFBundleIdentifier 值;对于Windows,这将被哈希以创建应用程序GUID。
  • icon: [可选] 供您的应用程序使用的图标。这应该是一个文件路径或glob(包含各种大小/格式的图像);tauri-bundler 将根据需要自动在不同平台之间进行图像格式转换。支持的格式包括ICNS、ICO、PNG,以及可以被 image crate 解码的任何其他格式。针对高分辨率(例如Retina)显示的图标应在扩展名之前包含 @2x(请参阅以下示例)。
  • version: [可选] 应用程序的版本。如果不存在,则使用 Cargo.toml 文件中的 version 值。
  • resources: [可选] 要复制到捆绑包资源部分的文件或目录列表。支持glob。
  • copyright: [可选] 包含与您的应用程序相关联的版权字符串。
  • category: [可选] 该应用程序的类型。这可以是一个可读性强的字符串(例如,"Puzzle game"),或者是一个Mac OS X LSApplicationCategoryType值(例如,"public.app-category.puzzle-games"),或者是一个GNOME桌面文件类别名称(例如,"LogicGame"),并且 tauri-bundler 将根据需要自动进行不同平台的转换。
  • short_description: [可选] 应用程序的一行简短描述。如果不存在,则使用 Cargo.toml 文件中的 description 值。
  • long_description: [可选] 应用程序的多行长描述。

Debian特定设置

这些设置仅在捆绑 deb 包时使用。

  • depends: 表示其他包(例如共享库)的字符串列表,该包需要安装。如果存在,则形成 deb 包控制文件的 Depends: 字段。

Mac OS X特定设置

这些设置仅在捆绑 appdmg 包时使用。

  • 框架:一个字符串列表,指示需要与应用程序捆绑的任何 Mac OS X 框架。每个字符串可以是框架的名称(不带 .framework 扩展名,例如 "SDL2"),在这种情况下,tauri-bundler 将在该框架的标准安装位置(~/Library/Frameworks//Library/Frameworks//Network/Library/Frameworks/)中搜索该框架,或者是指向特定框架捆绑包的路径(例如 ./data/frameworks/SDL2.framework)。请注意,此设置只是让 tauri-bundler 将指定的框架复制到 OS X 应用程序捆绑包中(位于 Foobar.app/Contents/Frameworks/);您仍然需要(1)确保编译的二进制文件链接到这些框架(例如,通过从您的 build.rs 脚本中发出类似 cargo:rustc-link-lib=framework=SDL2 的行),并且(2)在您的二进制文件中嵌入正确的 rpath(例如,通过编译后运行 install_name_tool -add_rpath "@executable_path/../Frameworks" path/to/binary)。
  • minimum_system_version:一个版本字符串,指示捆绑的应用程序支持的最低 Mac OS X 版本(例如 "10.11")。如果您使用此配置字段,您可能还希望让您的 build.rs 脚本发出 cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.11(或您想要的任何版本号),以确保编译的二进制文件具有相同的最低版本。
  • license:DMG 捆绑包的许可文件路径。
  • exception_domain:在 macOS .app 捆绑包上使用的异常域。允许与外部世界进行通信,例如您所发货的 Web 服务器。
  • provider_short_name:如果您Apple ID连接到多个团队,您必须指定您想要用于签名的应用程序的团队提供者短名称。有关如何获取提供者短名称的更多信息,请参阅自定义签名工作流程并搜索 --list-providers

示例 tauri.conf.json

{
  "productName": "Your Awesome App",
  "version": "0.1.0",
  "identifier": "com.my.app",
  "app": {},
  "bundle": {
    "active": true,
    "shortDescription": "",
    "longDescription": "",
    "copyright": "Copyright (c) You 2021. All rights reserved.",
    "icon": [
      "icons/32x32.png",
      "icons/128x128.png",
      "icons/[email protected]",
      "icons/icon.icns",
      "icons/icon.ico"
    ],
    "resources": ["./assets/**/*.png"],
    "deb": {
      "depends": ["debian-dependency1", "debian-dependency2"]
    },
    "macOS": {
      "frameworks": [],
      "minimumSystemVersion": "10.11",
      "license": "./LICENSE"
    },
    "externalBin": ["./sidecar-app"]
  }
}

许可

(c) 2017 - 现在,George Burton,Tauri-Apps 组织

此程序许可为Apache 软件许可MIT 许可

-> 注意,对于 bundle_dmg,我们包含了一个 BSD 3 许可的二进制文件 seticonhttps://github.com/sveinbjornt/osxiconutils/blob/master/seticon.m tools/rust/cargo-tauri-bundle/src/bundle/templates/seticon

依赖项

~18–36MB
~624K SLoC