经过 113 个拉取请求和近两个月的努力,Tauri 团队很高兴地宣布1.1.0 版本。这些更改已在内部经过审核,未发现任何安全问题。
你可以使用以下命令更新 NPM 依赖项
- npm
- Yarn Classic
- Yarn Berry
- pnpm
npm install @tauri-apps/cli@latest @tauri-apps/api@latest
yarn upgrade @tauri-apps/cli @tauri-apps/api --latest
yarn up @tauri-apps/cli @tauri-apps/api
pnpm update @tauri-apps/cli @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
,这意味着以下配置有效
{
"build": {
"devPath": "http://localhost:8000",
"distDir": "../dist"
}
}
{
"build": {
// devServer URL (comments are allowed!)
"devPath": "http://localhost:8000",
"distDir": "../dist"
}
}
1.1.0 版本在 config-toml
Cargo 特性中包含 TOML 支持。现在,您可以在 Tauri.toml
文件中定义 Tauri 配置
[build]
dev-path = "http://localhost:8000"
dist-dir = "../dist"
依赖项更新
此版本包含一些依赖项更新,如果您使用这些 crate 实现特定于平台的功能,则必须在您的应用中处理这些更新。最重要的更新是
windows
更新到 0.39.0webview2-com
更新到 0.19.1raw-window-handle
更新到 0.5.0
确保您还将插件(如 window-vibrancy
和 window-shadows
)更新到最新版本。
1.1.0 的贡献者
Tauri 团队感谢以下贡献者对 1.1.0 版本做出的贡献
- Berrysoft
- keraf
- jsoref
- A-kirami
- olivierlemasle
- mateo-gallardo
- rockerBOO
- Flecart
- brian14708
- koriwi
- paul-soporan
- shniubobo
- horochx
- RubenKelevra
- LIMPIX31
- AxlLind
其他更改
此版本中有许多较小的更改和错误修复。您可以在以下部分中查看发行说明的摘要。可以在 版本页面 上找到完整的变更日志。
新增
tauri icon
命令fs
模块中的exists
API- 使用
tauri dev --no-watch
禁用开发观察程序的选项 - 自动将任何
.taurignore
文件用作开发观察程序和应用路径查找器的忽略规则 - 为 Tauri CLI 添加对 cargo-binstall 的支持
- TOML 配置格式 (Tauri.toml)
- Linux 上的主题 API
- 在运行时创建系统托盘
beforeBundleCommand
配置beforeDevCommand
和beforeBuildCommand
现在有一个选项来配置当前工作目录api::Command::encoding
方法用于设置 stdout/stderr 编码- 添加了
native-tls-vendored
和reqwest-native-tls-vendored
Cargo 特性,以便在 Linux 上编译并静态链接到 OpenSSL 的供应商副本 - 为
App
和AppHandle
实现raw_window_handle::HasRawDisplayHandle
修复
- CLI 解析器忽略内部子命令。
- 更新器破坏 Finder 中的应用程序图标。
- 使用
CodegenContext
API 时修复代码生成输出的根。
安全
- 修复
fs.readDir
递归选项读取范围不允许的符号链接目录
改进
- 根据配置的公钥验证更新器签名
- 如果辅助应用程序配置了与应用程序相同的文件名,则返回错误。
- 将创建的窗口保存在 RefCell 中而不是 Mutex 中,避免死锁
- 在
tauri init
中提示beforeDevCommand
和beforeBuildCommand
。 - 使用
cargo metadata
检测工作区根目录和目标目录。 - 允许配置
before_dev_command
以强制 CLI 在继续之前等待命令完成。 - 避免在每次构建时重新下载 AppImage 构建工具。
- 在
api::process::restart
中保留命令行参数 - 通过清单依赖项
Microsoft.Windows.Common-Controls v6.0.0.0
增强 Windows 上的对话框样式。 - 如果资产或图标更改,则重新运行代码生成
- 仅在内容更改时重写临时图标文件,避免不必要的重新构建。