跳至主要内容

宣布 Tauri 1.1.0

· 阅读 5 分钟
Lucas Nogueira

Tauri 1.1 Launch Hero Image

经过 113 个拉取请求和近两个月的努力,Tauri 团队很高兴地宣布1.1.0 版本。这些更改已在内部经过审核,未发现任何安全问题。

你可以使用以下命令更新 NPM 依赖项

npm install @tauri-apps/cli@latest @tauri-apps/api@latest

若要更新 Cargo 依赖项,请在 src-tauri 文件夹中运行以下命令

cargo update

1.1.0 中的新增功能

安全补丁

此版本包含一个由 @martin-ocasek 报告的安全漏洞补丁。当找到符号链接时,readDir 函数能够返回配置范围之外的条目。此补丁还可在 Tauri 1.0.6 中获得。请参阅 GitHub 上的问题 了解更多详情。

图标生成

我们一直建议使用 tauricon 项目使用单个源 PNG 为您的 Tauri 应用程序生成图标。已报告了几个问题,我们决定“用 Rust 重写”以增强其稳定性。这使我们能够将此功能移至主 Tauri CLI,因此您现在可以使用 tauri icon 命令。

cargo-binstall 支持 Tauri CLI

现在可以使用 cargo-binstall 安装 Tauri CLI,cargo-binstall 是一种下载和安装预构建 Rust 二进制文件的方法。二进制文件可用于主要目标,并且可以使用以下命令进行安装

$ cargo install cargo-binstall
$ cargo binstall tauri-cli
$ cargo tauri dev # run any Tauri command!

在运行时创建系统托盘

系统托盘 API(以前仅在 tauri::Builder::system_tray 中可用)现在可以在运行时与 tauri::SystemTray 一起使用,让您可以控制其生命周期,甚至创建多个托盘。

以下是如何使用它的快速示例

use tauri::{Builder, CustomMenuItem, SystemTray, SystemTrayEvent, SystemTrayMenu};
Builder::default()
.setup(|app| {
let handle = app.handle();
SystemTray::new()
.with_id("main")
.with_menu(
SystemTrayMenu::new().add_item(CustomMenuItem::new("quit", "Quit"))
)
.on_event(move |event| {
let tray_handle = handle.tray_handle_by_id("main").unwrap();
if let SystemTrayEvent::MenuItemClick { id, .. } = event {
if id == "quit" {
tray_handle.destroy().unwrap();
}
}
})
.build(&handle)
.expect("unable to create tray");
});

TOML 配置支持

在 1.0 版本中,Tauri 默认支持 JSON 配置格式,当启用 config-json5 Cargo 功能时支持 JSON5,这意味着以下配置有效

tauri.conf.json
{
"build": {
"devPath": "http://localhost:8000",
"distDir": "../dist"
}
}
tauri.conf.json5
{
"build": {
// devServer URL (comments are allowed!)
"devPath": "http://localhost:8000",
"distDir": "../dist"
}
}

1.1.0 版本在 config-toml Cargo 特性中包含 TOML 支持。现在,您可以在 Tauri.toml 文件中定义 Tauri 配置

Tauri.toml
[build]
dev-path = "http://localhost:8000"
dist-dir = "../dist"

依赖项更新

此版本包含一些依赖项更新,如果您使用这些 crate 实现特定于平台的功能,则必须在您的应用中处理这些更新。最重要的更新是

  • windows 更新到 0.39.0
  • webview2-com 更新到 0.19.1
  • raw-window-handle 更新到 0.5.0

确保您还将插件(如 window-vibrancywindow-shadows)更新到最新版本。

1.1.0 的贡献者

Tauri 团队感谢以下贡献者对 1.1.0 版本做出的贡献

其他更改

此版本中有许多较小的更改和错误修复。您可以在以下部分中查看发行说明的摘要。可以在 版本页面 上找到完整的变更日志。

新增

  • tauri icon 命令
  • fs 模块中的 exists API
  • 使用 tauri dev --no-watch 禁用开发观察程序的选项
  • 自动将任何 .taurignore 文件用作开发观察程序和应用路径查找器的忽略规则
  • 为 Tauri CLI 添加对 cargo-binstall 的支持
  • TOML 配置格式 (Tauri.toml)
  • Linux 上的主题 API
  • 在运行时创建系统托盘
  • beforeBundleCommand 配置
  • beforeDevCommandbeforeBuildCommand 现在有一个选项来配置当前工作目录
  • api::Command::encoding 方法用于设置 stdout/stderr 编码
  • 添加了 native-tls-vendoredreqwest-native-tls-vendored Cargo 特性,以便在 Linux 上编译并静态链接到 OpenSSL 的供应商副本
  • AppAppHandle 实现 raw_window_handle::HasRawDisplayHandle

修复

  • CLI 解析器忽略内部子命令。
  • 更新器破坏 Finder 中的应用程序图标。
  • 使用 CodegenContext API 时修复代码生成输出的根。

安全

  • 修复 fs.readDir 递归选项读取范围不允许的符号链接目录

改进

  • 根据配置的公钥验证更新器签名
  • 如果辅助应用程序配置了与应用程序相同的文件名,则返回错误。
  • 将创建的窗口保存在 RefCell 中而不是 Mutex 中,避免死锁
  • tauri init 中提示 beforeDevCommandbeforeBuildCommand
  • 使用 cargo metadata 检测工作区根目录和目标目录。
  • 允许配置 before_dev_command 以强制 CLI 在继续之前等待命令完成。
  • 避免在每次构建时重新下载 AppImage 构建工具。
  • api::process::restart 中保留命令行参数
  • 通过清单依赖项 Microsoft.Windows.Common-Controls v6.0.0.0 增强 Windows 上的对话框样式。
  • 如果资产或图标更改,则重新运行代码生成
  • 仅在内容更改时重写临时图标文件,避免不必要的重新构建。