From 3e1778aa680a0e098fe256ff93cb5ab487b4609a Mon Sep 17 00:00:00 2001 From: Adam C <66894537+Wind-Explorer@users.noreply.github.com> Date: Tue, 24 Oct 2023 08:54:59 +0800 Subject: [PATCH 1/7] i18zh-cn: Upgrade & Migrate -> Upgrade from Tauri 1.0 --- .../guides/upgrade-migrate/from-tauri-1.mdx | 1150 +++++++++++++++++ 1 file changed, 1150 insertions(+) create mode 100644 src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx diff --git a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx new file mode 100644 index 0000000000..6662b9c429 --- /dev/null +++ b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx @@ -0,0 +1,1150 @@ +--- +title: 从 Tauri 1.0 升级 +i18nReady: true +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import CommandTabs from '@components/CommandTabs.astro'; + +本指南将引导您完成将 Tauri 1.0 应用程序升级到 Tauri 2.0 的过程。 + +## 自动迁移 + +Tauri v2 CLI 包含一个 `migrate` 命令,可以自动执行大部分过程并帮助您完成迁移: + + + +{/* TODO: 2.0 */} + +在[命令行界面参考](/2/reference/cli#migrate)中了解有关 `migrate` 命令的更多信息 + +## 变化总结 + +下面总结了 Tauri 1.0 到 Tauri 2.0 的变化: + +### Tauri 配置 + +- `tauri > allowlist` 已被移除。 +- `tauri > allowlist > protocol > assetScope` 已被移至 `tauri > security > assetProtocol > scope`。 +- `tauri > cli` 已被移至 `plugins > cli`。 +- `tauri > updater` 已被移至 `tauri > bundle > updater`。 +- `tauri > updater > dialog` 已被移除。 +- `tauri > updater > endpoints` 已被移至 `plugins > updater`。 +- `tauri > systemTray` 已被重命名为 `tauri > trayIcon`。 + +[Tauri 2.0 配置 API 参考](/2/reference/config) + +### 新 Cargo 功能 + +- linux-protocol-body: 启用自定义协议主体请求解析,允许IPC使用它。 需要 webkit2gtk 2.40。 + +### 已移除的 Cargo 功能 + +- reqwest-client: reqwest 现是唯一受支持的 client 对象。 +- reqwest-native-tls-vendored: 使用 `native-tls-vendored` 代替。 +- process-command-api: 使用 `shell` 插件代替 (请参阅下一节中的说明)。 +- shell-open-api: 使用 `shell` 插件代替 (请参阅下一节中的说明)。 +- windows7-compat: 已移至 `notification` 插件。 +- updater: 升级器现为插件。 +- linux-protocol-headers: 自从我们升级了最低 webkit2gtk 版本以来,现在默认启用。 +- system-tray (系统任务栏托盘): 重命名为 `tray-icon`(托盘图标)。 + +### Rust Crate 箱 变更 + +- 删除了 `api`模块。 每个 API 模块都可以在 Tauri 插件中找到。 +- 删除了 `api::dialog` 模块。 请改用`tauri-plugin-dialog`。 [迁移](#migrate-to-dialog-plugin) +- 删除了 `api::file` 模块。 请改用 Rust 的 [`std::fs`](https://doc.rust-lang.org/std/fs/)。 +- 删除了 `api::http` 模块。 请改用 `tauri-plugin-http`。 [迁移](#migrate-to-http-plugin) +- `api::ip` 模块重写并移至 `tauri::ipc`。 查看新的 API,特别是 `tauri::ipc::Channel`。 +- `api::path` 模块函数和 `tauri::PathResolved` 移至 `tauri::Manager::path`。 [迁移](#migrate-path-to-tauri-manager) +- 删除了 `api::process::Command`、`tauri::api::shell` 和 `tauri::Manager::shell_scope` API。 请改用 `tauri-plugin-shell`。 [迁移](#migrate-to-shell-plugin) +- `api::process::current_binary` 和 `tauri::api::process::restart` 移至 `tauri::process`。 +- `api::version` 模块已被删除。 请改用 [semver crate 箱](https://docs.rs/semver/latest/semver/)。 +- 删除了 `App::clipboard_manager`和`AppHandle::clipboard_manager`。 请改用 `tauri-plugin-clipboard`。 [迁移](#migrate-to-clipboard-plugin) +- 删除了 `App::get_cli_matches`。 请改用 `tauri-plugin-cli`。 [迁移](#migrate-to-cli-plugin) +- 删除了 `App::global_shortcut_manager`和`AppHandle::global_shortcut_manager`。 请改用`tauri-plugin-global-shortcut`。 [迁移](#migrate-to-global-shortcut-plugin) +- 删除了 `Manager::fs_scope`。 文件系统可以通过`tauri_plugin_fs::FsExt`访问。 +- `Plugin::PluginApi` 现在接收插件配置作为第二个参数。 +- 删除了 `Plugin::setup_with_config`。 请改用更新后的 `tauri::Plugin::PluginApi`。 +- 删除了 `scope::ipc::RemoteDomainAccessScope::enable_tauri_api` 和 `scope::ipc::RemoteDomainAccessScope::enables_tauri_api`。 通过 `scope::ipc::RemoteDomainAccessScope::add_plugin` 单独启用每个核心插件。 +- `scope::IpcScope` 被删除,使用 `scope::ipc::Scope` 代替。 +- `scope::IpcScope` 被删除,使用 `scope::ipc::Scope` 代替。 +- 删除了 `scope::FsScope`、`scope::GlobPattern` 和 `scope::FsScopeEvent`,现请改用 `scope::fs::Scope`、`scope::fs::Pattern` 和 `scope::fs: : 事件`。 +- 删除了 `updater`模块。 请改用 `tauri-plugin-updater`。 [迁移](#migrate-to-updater-plugin) +- `Env.args` 字段已被删除,请使用 `Env.args_os` 字段代替。 +- 删除了 `Menu`、`MenuEvent`、`CustomMenuItem`、`Submenu`、`WindowMenuEvent`、`MenuItem` 和 `Builder::on_menu_event` API。 [迁移](#migrate-to-menu) +- 删除了 `SystemTray`、`SystemTrayHandle`、`SystemTrayMenu`、`SystemTrayMenuItemHandle`、`SystemTraySubmenu`、`MenuEntry` 和 `SystemTrayMenuItem` API。 [迁移](#migrate-to-tray-icon-module) + +### JavaScript API 接口变更 + +`@tauri-apps/api` 包不再提供非核心模块,现仅提供`tauri`、`path`和`event`模块。所有其他内容均已移至插件。 + +- 删除了`@tauri-apps/api/app`模块。 请改用`@tauri-apps/plugin-app`。 [迁移](#migrate-to-app-plugin) +- 删除了`@tauri-apps/api/cli`模块。 请改用`@tauri-apps/plugin-cli`。 [迁移](#migrate-to-cli-plugin) +- 删除了`@tauri-apps/api/clipboard`模块。 请改用`@tauri-apps/plugin-clipboard`。 [迁移](#migrate-to-clipboard-plugin) +- 删除了`@tauri-apps/api/dialog`模块。 请改用`@tauri-apps/plugin-dialog`。 [迁移](#migrate-to-dialog-plugin) +- 删除了`@tauri-apps/api/fs`模块。 请改用`@tauri-apps/plugin-fs`。 [迁移](#migrate-to-file-system-plugin) +- 删除了`@tauri-apps/api/global-shortcut`模块。 请改用`@tauri-apps/plugin-global-shortcut`。 [迁移](#migrate-to-global-shortcut-plugin) +- 删除了`@tauri-apps/api/http`模块。 请改用`@tauri-apps/plugin-http`。 [迁移](#migrate-to-http-plugin) +- 删除了`@tauri-apps/api/os`模块。 请改用`@tauri-apps/plugin-os`。 [迁移](#migrate-to-os-plugin) +- 删除了`@tauri-apps/api/notification`模块。 请改用`@tauri-apps/plugin-notification`。 [迁移](#migrate-to-notification-plugin) +- 删除了`@tauri-apps/api/process`模块。 请改用`@tauri-apps/plugin-process`。 [迁移](#migrate-to-process-plugin) +- 删除了`@tauri-apps/api/shell`模块。 请改用`@tauri-apps/plugin-shell`。 [迁移](#migrate-to-shell-plugin) +- 删除了`@tauri-apps/api/updater`模块。 使用 `@tauri-apps/plugin-updater` 代替。 [迁移](#migrate-to-updater-plugin) +- 删除了`@tauri-apps/api/window`模块。 使用 `@tauri-apps/plugin-window` 代替。 [迁移](#migrate-to-window-plugin) + +## 详细的迁移步骤 + +将 Tauri 1.0 应用程序迁移到 Tauri 2.0 时可能会遇到的常见场景。 + +### 迁移至 App 应用插件 + +JavaScript `@tauri-apps/api/app` API 已被删除。 请改用 `@tauri-apps/plugin-app` 插件: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-app = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_app::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-app": "^2.0.0" + } +} +``` + +```js +import { show, hide } from '@tauri-apps/plugin-app'; +await hide(); +await show(); +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_app::init()) + .setup(|app| { + #[cfg(target_os = "macos")] + { + app.hide()?; + app.show()?; + } + Ok(()) + }) +} +``` + + + + +### 迁移至 CLI 命令行 插件 + +Rust `App::get_cli_matches` 与 JavaScript `@tauri-apps/api/cli` API 已被移除。请用 `@tauri-apps/plugin-cli` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-cli = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_cli::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-cli": "^2.0.0" + } +} +``` + +```js +import { getMatches } from '@tauri-apps/plugin-cli'; +const matches = await getMatches(); +``` + + + + +```rust +fn main() { + use tauri_plugin_cli::CliExt; + tauri::Builder::default() + .plugin(tauri_plugin_cli::init()) + .setup(|app| { + let cli_matches = app.cli().matches()?; + Ok(()) + }) +} +``` + + + + +### 迁移至 Clipboard 剪切板 插件 + +Rust 的 `App::clipboard_manager` 和 `AppHandle::clipboard_manager` 与 JavaScript 的 `@tauri-apps/api/clipboard` API 已被移除。请用 `@tauri-apps/plugin-clipboard-manager` 插件代替: + +```toml +[dependencies] +tauri-plugin-clipboard-manager = "2" +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_clipboard_manager::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-clipboard-manager": "^2.0.0" + } +} +``` + +```js +import { writeText, readText } from '@tauri-apps/plugin-clipboard-manager'; +await writeText('Tauri 很nb!'); +assert(await readText(), 'Tauri 很nb!'); +``` + + + + +```rust +use tauri_plugin_clipboard::{ClipboardExt, ClipKind}; +tauri::Builder::default() + .plugin(tauri_plugin_clipboard::init()) + .setup(|app| { + app.clipboard().write(ClipKind::PlainText { + label: None, + text: "Tauri 很nb!".into(), + })?; + Ok(()) + }) +``` + + + + +### 迁移至 Dialog 对话框 插件 + +Rust 的 `tauri::api::dialog` 与 JavaScript 的 `@tauri-apps/api/dialog` API 已被移除。请用 `@tauri-apps/plugin-dialog` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-dialog = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_dialog::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-dialog": "^2.0.0" + } +} +``` + +```js +import { save } from '@tauri-apps/plugin-dialog'; +const filePath = await save({ + filters: [ + { + name: '图片', + extensions: ['png', 'jpeg'], + }, + ], +}); +``` + + + + +```rust +use tauri_plugin_dialog::DialogExt; +tauri::Builder::default() + .plugin(tauri_plugin_dialog::init()) + .setup(|app| { + app.dialog().file().pick_file(|file_path| { + // 使用此处的可选文件路径执行某些操作 + // 如果用户关闭对话框,文件路径为 `None` + }); + + app.dialog().message("Tauri 很nb!").show(); + Ok(()) + }) +``` + + + + +### 迁移至 File System 文件系统 插件 + +Rust 的 `App::get_cli_matches` 与 JavaScript 的 `@tauri-apps/api/fs` API 已被移除。请用 Rust 的 [`std::fs`](https://doc.rust-lang.org/std/fs/) 与 JavaScript 的 `@tauri-apps/plugin-fs` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-fs = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_fs::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-fs": "^2.0.0" + } +} +``` + +```js +import { createDir, BaseDirectory } from '@tauri-apps/plugin-fs'; +await createDir('db', { dir: BaseDirectory.AppLocalData }); +``` + + + + +使用 Rust 的 [`std::fs`](https://doc.rust-lang.org/std/fs/) 函数。 + + + + +### 迁移至 Global Shortcut 全局快捷键 插件 + +Rust 的 `App::global_shortcut_manager` 和 `AppHandle::global_shortcut_manager` 与 JavaScript 的 `@tauri-apps/api/global-shortcut` API 已被移除。请用 `@tauri-apps/plugin-global-shortcut` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-global-shortcut = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_global_shortcut::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-global-shortcut": "^2.0.0" + } +} +``` + +```js +import { register } from '@tauri-apps/plugin-global-shortcut'; +await register('CommandOrControl+Shift+C', () => { + console.log('快捷键已被触发!'); +}); +``` + + + + +```rust +use tauri_plugin_global_shortcut::GlobalShortcutExt; + +tauri::Builder::default() + .plugin(tauri_plugin_shortcut::init()) + .setup(|app| { + app.global_shortcut().register("CmdOrCtrl+Y")?; + Ok(()) + }) +``` + + + + +### 迁移至 HTTP 插件 + +Rust 的 `tauri::api::http` 与 JavaScript 的 `@tauri-apps/api/http` API 已被移除。请用 `@tauri-apps/plugin-http` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-http = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_http::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-http": "^2.0.0" + } +} +``` + +```js +import { fetch } from '@tauri-apps/plugin-http'; +const response = await fetch( + 'https://raw.githubusercontent.com/tauri-apps/tauri/dev/package.json' +); +``` + + + + +```rust +use tauri_plugin_dialog::reqwest; + +tauri::Builder::default() + .plugin(tauri_plugin_http::init()) + .setup(|app| { + let response_data = tauri::async_runtime::block_on(async { + let response = reqwest::get( + "https://raw.githubusercontent.com/tauri-apps/tauri/dev/package.json", + ) + .await + .unwrap(); + response.text().await + })?; + Ok(()) + }) +``` + +HTTP 插件包装了 [reqwest](https://docs.rs/reqwest/latest/reqwest/) 所以您可以查看它们的开发文档以获得更多信息。 + + + + +### 迁移至 Notification 通知 插件 + +Rust 的 `tauri::api::notification` 与 JavaScript 的 `@tauri-apps/api/notification` API 已被移除。请用 `@tauri-apps/plugin-notification` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-notification = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_notification::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-notification": "^2.0.0" + } +} +``` + +```js +import { sendNotification } from '@tauri-apps/plugin-notification'; +sendNotification('Tauri 很nb!'); +``` + + + + +```rust +use tauri_plugin_notification::{NotificationExt, PermissionState}; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_notification::init()) + .setup(|app| { + if app.notification().permission_state()? == PermissionState::Unknown { + app.notification().request_permission()?; + } + if app.notification().permission_state()? == PermissionState::Granted { + app.notification() + .builder() + .body("Tauri 很nb!") + .show()?; + } + Ok(()) + }) +} +``` + + + + +### 迁移至 Menu 菜单 模块 + +Rust 的 `Menu` 菜单 API 已被移至 `tauri::menu` 模块并用 [muda crate](https://github.com/tauri-apps/muda) 箱 重构。 + +JavaScript 中 `@tauri-apps/api/window` 的 `onMenuClicked()` API 将在未来发行中迁移。 + +#### 使用 `tauri::menu::MenuBuilder` + +使用 `tauri::menu::MenuBuilder` 代替 `tauri::Menu`。请注意,它的构造函数采用 Manager 实例(`App`、`AppHandle`或`Window`之一)作为参数: + +```rust +use tauri::menu::MenuBuilder; + +tauri::Builder::default() + .setup(|app| { + let menu = MenuBuilder::new(app) + .copy() + .paste() + .separator() + .undo() + .redo() + .text("open-url", "打开 URL 链接") + .check("toggle", "切换") + .icon("show-app", "显示应用", app.default_window_icon().cloned().unwrap()) + .build()?; + Ok(()) + }) +``` + +#### 使用 `tauri::menu::PredefinedMenuItem` + +使用 `tauri::menu::PredefinedMenuItem` 代替 `tauri::MenuItem`: + +```rust +use tauri::menu::{MenuBuilder, PredefinedMenuItem}; + +tauri::Builder::default() + .setup(|app| { + let menu = MenuBuilder::new(app).item(&PredefinedMenuItem::copy(app)).build()?; + Ok(()) + }) +``` + +:::tip +菜单构建器有专用的方法来添加每个预定义的菜单项,所以您可以调用`.copy()`来代替`.item(&PredefinedMenuItem::copy(app, None))`。 +::: + +#### 使用 `tauri::menu::MenuItemBuilder` + +使用 `tauri::menu::MenuItemBuilder` 代替 `tauri::CustomMenuItem`: + +```rust +use tauri::menu::MenuItemBuilder; + +tauri::Builder::default() + .setup(|app| { + let toggle = MenuItemBuilder::new("切换").accelerator("Ctrl+Shift+T").build(app); + Ok(()) + }) +``` + +#### 使用 `tauri::menu::SubmenuBuilder` + +使用 `tauri::menu::SubmenuBuilder` 代替 `tauri::Submenu`: + +```rust +use tauri::menu::{MenuBuilder, SubmenuBuilder}; + +tauri::Builder::default() + .setup(|app| { + let submenu = SubmenuBuilder::new(app, "二级菜单") + .text("Tauri") + .separator() + .check("很nb") + .build()?; + let menu = MenuBuilder::new(app).item(&submenu).build()?; + Ok(()) + }) +``` + +`tauri::Builder::menu` now takes a closure because the menu needs a Manager instance to be built. See [the documentation](https://docs.rs/tauri/2.0.0-alpha/tauri/struct.Builder.html#method.menu) for more information. + +`tauri::Builder::menu` 现在接受一个闭包,因为菜单需要构建一个 Manager 实例。 有关更多信息,请参阅[文档](https://docs.rs/tauri/2.0.0-alpha/tauri/struct.Builder.html#method.menu)。 + +#### 菜单事件 + +Rust 的 `tauri::Builder::on_menu_event` API 已被移除。请用 `tauri::App::on_menu_event` 或 `tauri::AppHandle::on_menu_event` 代替。 + +```rust +use tauri::menu::{CheckMenuItemBuilder, MenuBuilder, MenuItemBuilder}; + +tauri::Builder::default() + .setup(|app| { + let toggle = MenuItemBuilder::with_id("toggle", "切换").build(app); + let check = CheckMenuItemBuilder::new("开关").build(app); + let menu = MenuBuilder::new(app).items(&[&toggle, &check]).build()?; + + app.set_menu(menu)?; + + app.on_menu_event(move |app, event| { + if event.id() == check.id() { + println!("`check` 已被触发,做点什么! 开关已被开启? {}", check.is_checked().unwrap()); + } else if event.id() == "toggle" { + println!("toggle 已被触发!"); + } + }); + Ok(()) + }) +``` + +请注意,有两种方法可以检查选择了哪个菜单项:将项目移至事件处理程序闭包并比较 ID,或者通过`with_id`构造函数为该项目定义自定义 ID 并使用该 ID 字符串进行比较。 + +:::tip +菜单项可以跨菜单共享,而且菜单事件是绑定到菜单项而并非菜单或窗口。 +如果您不希望在选择菜单项时触发所有侦听器,请不要共享菜单项并使用专用实例,您可以将其移至 `tauri::Window/WindowBuilder::on_menu_event` 闭包中。 +::: + +### 迁移至 OS 系统 插件 + +Rust 的 `tauri::api::os` 与 JavaScript 的 `@tauri-apps/api/os` API 已被移除。请用 `@tauri-apps/plugin-os` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-os = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_os::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-os": "^2.0.0" + } +} +``` + +```js +import { arch } from '@tauri-apps/plugin-os'; +const architecture = await arch(); +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_os::init()) + .setup(|app| { + let os_arch = tauri_plugin_os::arch(); + Ok(()) + }) +} +``` + + + + +### 迁移至 Process 进程 插件 + +Rust 的 `tauri::api::process` 与 JavaScript 的 `@tauri-apps/api/process` API 已被移除。请用 `@tauri-apps/plugin-process` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-process = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_process::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-process": "^2.0.0" + } +} +``` + +```js +import { exit, relaunch } from '@tauri-apps/plugin-process'; +await exit(0); +await relaunch(); +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_process::init()) + .setup(|app| { + // 带着状态代码退出应用 + app.handle().exit(1); + // 重启应用 + app.handle().restart(); + Ok(()) + }) +} +``` + + + + +### 迁移至 Shell 插件 + +Rust 的 `tauri::api::shell` 与 JavaScript 的 `@tauri-apps/api/shell` API 已被移除。请用 `@tauri-apps/plugin-shell` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-shell = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-shell": "^2.0.0" + } +} +``` + +```js +import { Command, open } from '@tauri-apps/plugin-shell'; +const output = await Command.create('echo', 'message').execute(); + +await open('https://github.com/tauri-apps/tauri'); +``` + + + + +- 打开 URL 链接 + +```rust +use tauri_plugin_shell::ShellExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + app.shell().open("https://github.com/tauri-apps/tauri", None)?; + Ok(()) + }) +} +``` + +- 生成子进程并获取状态代码 + +```rust +use tauri_plugin_shell::ShellExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + let status = tauri::async_runtime::block_on(async move { app.shell().command("which").args(["ls"]).status().await.unwrap() }); + println!("`which` 已结束代码 {:?} 结束。", status.code()); + Ok(()) + }) +} +``` + +- 生成子进程并获取其输出 + +```rust +use tauri_plugin_shell::ShellExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + let output = tauri::async_runtime::block_on(async move { app.shell().command("echo").args(["TAURI"]).output().await.unwrap() }); + assert!(output.status.success()); + assert_eq!(String::from_utf8(output.stdout).unwrap(), "TAURI"); + Ok(()) + }) +} +``` + +- 生成一个子进程并异步读取其事件: + +```rust +use tauri_plugin_shell::{ShellExt, process::CommandEvent}; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + let handle = app.handle().clone(); + tauri::async_runtime::spawn(async move { + let (mut rx, mut child) = handle.shell().command("cargo") + .args(["tauri", "dev"]) + .spawn() + .expect("cargo 生成失败"); + + let mut i = 0; + while let Some(event) = rx.recv().await { + if let CommandEvent::Stdout(line) = event { + println!("已获取: {}", String::from_utf8(line).unwrap()); + i += 1; + if i == 4 { + child.write("来自 Rust 的消息\n".as_bytes()).unwrap(); + i = 0; + } + } + } + }); + Ok(()) + }) +} +``` + + + + +### 迁移至 Tray Icon 任务栏托盘图标 模块 + +Rust 的 `SystemTray` API 为一致性已重命名为 `TrayIcon`。新的 API 现可在 Rust 中的 `tray` 模块找到。 + +#### 使用 `tauri::tray::TrayIconBuilder` + +使用 `tauri::tray::TrayIconBuilder` 代替 `tauri::SystemTray`: + +```rust +let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?; +``` + +更多信息请详阅 [TrayIconBuilder](https://docs.rs/tauri/2.0.0-alpha/tauri/tray/struct.TrayIconBuilder.html)。 + +#### 迁移至 Menu 菜单 + +使用 `tauri::menu::Menu` 代替 `tauri::SystemTrayMenu`, `tauri::menu::Submenu` 来代替 `tauri::SystemTraySubmenu` 还有 `tauri::menu::PredefinedMenuItem` 来代替 `tauri::SystemTrayMenuItem`。 [迁移](#migrate-to-menu) + +#### 任务栏托盘事件 + +`tauri::SystemTray::on_event` 已被分成 `tauri::tray::TrayIconBuilder::on_menu_event` a和nd `tauri::tray::TrayIconBuilder::on_tray_icon_event`: + +```rust +use tauri::{ + menu::{MenuBuilder, MenuItemBuilder}, + tray::{ClickType, TrayIconBuilder}, +}; + +tauri::Builder::default() + .setup(|app| { + let toggle = MenuItemBuilder::with_id("toggle", "切换").build(app); + let menu = MenuBuilder::new(app).items(&[&toggle]).build()?; + let tray = TrayIconBuilder::new() + .menu(&menu) + .on_menu_event(move |app, event| match event.id().as_ref() { + "toggle" => { + println!("切换按钮已被点击"); + } + _ => (), + }) + .on_tray_icon_event(|tray, event| { + if event.click_type == ClickType::Left { + let app = tray.app_handle(); + if let Some(window) = app.get_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + }) + .build(app)?; + + Ok(()) + }) +``` + +### 迁移至 Updater 升级器 插件 + +Rust 的 `tauri::updater` 与 JavaScript 的 `@tauri-apps/api-updater` API 已被移除。 要使用`@tauri-apps/plugin-updater`设置自定义更新程序目标: + +1. 往 cargo 依赖项中添加: + +```toml +[dependencies] +tauri-plugin-updater = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_updater::Builder::new().build()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-updater": "^2.0.0" + } +} +``` + +```js +import { check } from '@tauri-apps/plugin-updater'; +import { relaunch } from '@tauri-apps/plugin-process'; + +const update = await check(); +if (update.response.available) { + console.log( + `新版本 ${update.response.latestVersion} 现可用!日期:${update.response.date}` + ); + console.log(`发行日志:${update.response.body}`); + await update.downloadAndInstall(); + // 需要 `process` 插件 + await relaunch(); +} +``` + + + + +检查更新: + +```rust +use tauri_plugin_updater::UpdaterExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_updater::Builder::new().build()) + .setup(|app| { + let handle = app.handle(); + tauri::async_runtime::spawn(async move { + let response = handle.updater().check().await; + }); + Ok(()) + }) +} +``` + +设置自定义更新程序目标: + +```rust +fn main() { + let mut updater = tauri_plugin_updater::Builder::new(); + #[cfg(target_os = "macos")] + { + updater = updater.target("darwin-universal"); + } + tauri::Builder::default() + .plugin(updater.build()) +} +``` + + + + +### 迁移至 Window 窗体 插件 + +Rust 的 `tauri::window` 与 JavaScript 的 `@tauri-apps/api/window` API 已被移除。请用 `@tauri-apps/plugin-window` 插件代替: + +1. 往 cargo 依赖项中添加: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-window = "2" +``` + +2. 在 JavaScript 或 Rust 项目中使用: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_window::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-window": "^2.0.0" + } +} +``` + +```js +import { appWindow } from '@tauri-apps/plugin-window'; +await appWindow.setTitle('Tauri'); +``` + + + + +```rust +use tauri::Manager; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_window::init()) + .setup(|app| { + let window = app.get_window("main").unwrap(); + window.set_title("Tauri")?; + Ok(()) + }) +} +``` + + + + +### 迁移 Path 路径 至 Tauri Manager 管理器 + +Rust 的 `tauri::api::path` 模块函数和 `tauri::PathResolver` 已被移至 `tauri::Manager::path`: + +```rust +use tauri::{path::BaseDirectory, Manager}; + +tauri::Builder::default() + .setup(|app| { + let home_dir_path = app.path().home_dir().expect("无法获取主目录"); + + let path = app.path().resolve("张三/文件/的位置.txt", BaseDirectory::Config)?; + + Ok(()) + }) +``` From ff9e188459a26e22d2c48bd526ba29024c636617 Mon Sep 17 00:00:00 2001 From: Adam C <66894537+Wind-Explorer@users.noreply.github.com> Date: Tue, 24 Oct 2023 12:34:01 +0800 Subject: [PATCH 2/7] FIxed `#` links --- .../guides/upgrade-migrate/from-tauri-1.mdx | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx index 6662b9c429..27991a835d 100644 --- a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx +++ b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx @@ -61,17 +61,17 @@ Tauri v2 CLI 包含一个 `migrate` 命令,可以自动执行大部分过程 ### Rust Crate 箱 变更 - 删除了 `api`模块。 每个 API 模块都可以在 Tauri 插件中找到。 -- 删除了 `api::dialog` 模块。 请改用`tauri-plugin-dialog`。 [迁移](#migrate-to-dialog-plugin) +- 删除了 `api::dialog` 模块。 请改用`tauri-plugin-dialog`。 [迁移](#迁移至-dialog-对话框-插件) - 删除了 `api::file` 模块。 请改用 Rust 的 [`std::fs`](https://doc.rust-lang.org/std/fs/)。 -- 删除了 `api::http` 模块。 请改用 `tauri-plugin-http`。 [迁移](#migrate-to-http-plugin) +- 删除了 `api::http` 模块。 请改用 `tauri-plugin-http`。 [迁移](#迁移至-http-插件) - `api::ip` 模块重写并移至 `tauri::ipc`。 查看新的 API,特别是 `tauri::ipc::Channel`。 -- `api::path` 模块函数和 `tauri::PathResolved` 移至 `tauri::Manager::path`。 [迁移](#migrate-path-to-tauri-manager) -- 删除了 `api::process::Command`、`tauri::api::shell` 和 `tauri::Manager::shell_scope` API。 请改用 `tauri-plugin-shell`。 [迁移](#migrate-to-shell-plugin) +- `api::path` 模块函数和 `tauri::PathResolved` 移至 `tauri::Manager::path`。 [迁移](#迁移-path-路径-至-tauri-manager-管理器) +- 删除了 `api::process::Command`、`tauri::api::shell` 和 `tauri::Manager::shell_scope` API。 请改用 `tauri-plugin-shell`。 [迁移](#迁移至-shell-插件) - `api::process::current_binary` 和 `tauri::api::process::restart` 移至 `tauri::process`。 - `api::version` 模块已被删除。 请改用 [semver crate 箱](https://docs.rs/semver/latest/semver/)。 -- 删除了 `App::clipboard_manager`和`AppHandle::clipboard_manager`。 请改用 `tauri-plugin-clipboard`。 [迁移](#migrate-to-clipboard-plugin) -- 删除了 `App::get_cli_matches`。 请改用 `tauri-plugin-cli`。 [迁移](#migrate-to-cli-plugin) -- 删除了 `App::global_shortcut_manager`和`AppHandle::global_shortcut_manager`。 请改用`tauri-plugin-global-shortcut`。 [迁移](#migrate-to-global-shortcut-plugin) +- 删除了 `App::clipboard_manager`和`AppHandle::clipboard_manager`。 请改用 `tauri-plugin-clipboard`。 [迁移](#迁移至-clipboard-剪贴板-插件) +- 删除了 `App::get_cli_matches`。 请改用 `tauri-plugin-cli`。 [迁移](#迁移至-cli-命令行-插件) +- 删除了 `App::global_shortcut_manager`和`AppHandle::global_shortcut_manager`。 请改用`tauri-plugin-global-shortcut`。 [迁移](#迁移至-global-shortcut-全局快捷键-插件) - 删除了 `Manager::fs_scope`。 文件系统可以通过`tauri_plugin_fs::FsExt`访问。 - `Plugin::PluginApi` 现在接收插件配置作为第二个参数。 - 删除了 `Plugin::setup_with_config`。 请改用更新后的 `tauri::Plugin::PluginApi`。 @@ -79,34 +79,34 @@ Tauri v2 CLI 包含一个 `migrate` 命令,可以自动执行大部分过程 - `scope::IpcScope` 被删除,使用 `scope::ipc::Scope` 代替。 - `scope::IpcScope` 被删除,使用 `scope::ipc::Scope` 代替。 - 删除了 `scope::FsScope`、`scope::GlobPattern` 和 `scope::FsScopeEvent`,现请改用 `scope::fs::Scope`、`scope::fs::Pattern` 和 `scope::fs: : 事件`。 -- 删除了 `updater`模块。 请改用 `tauri-plugin-updater`。 [迁移](#migrate-to-updater-plugin) +- 删除了 `updater`模块。 请改用 `tauri-plugin-updater`。 [迁移](#迁移至-updater-升级器-插件) - `Env.args` 字段已被删除,请使用 `Env.args_os` 字段代替。 -- 删除了 `Menu`、`MenuEvent`、`CustomMenuItem`、`Submenu`、`WindowMenuEvent`、`MenuItem` 和 `Builder::on_menu_event` API。 [迁移](#migrate-to-menu) -- 删除了 `SystemTray`、`SystemTrayHandle`、`SystemTrayMenu`、`SystemTrayMenuItemHandle`、`SystemTraySubmenu`、`MenuEntry` 和 `SystemTrayMenuItem` API。 [迁移](#migrate-to-tray-icon-module) +- 删除了 `Menu`、`MenuEvent`、`CustomMenuItem`、`Submenu`、`WindowMenuEvent`、`MenuItem` 和 `Builder::on_menu_event` API。 [迁移](#迁移至-menu-菜单) +- 删除了 `SystemTray`、`SystemTrayHandle`、`SystemTrayMenu`、`SystemTrayMenuItemHandle`、`SystemTraySubmenu`、`MenuEntry` 和 `SystemTrayMenuItem` API。 [迁移](#迁移至-tray-icon-任务栏托盘图标-模块) ### JavaScript API 接口变更 `@tauri-apps/api` 包不再提供非核心模块,现仅提供`tauri`、`path`和`event`模块。所有其他内容均已移至插件。 -- 删除了`@tauri-apps/api/app`模块。 请改用`@tauri-apps/plugin-app`。 [迁移](#migrate-to-app-plugin) -- 删除了`@tauri-apps/api/cli`模块。 请改用`@tauri-apps/plugin-cli`。 [迁移](#migrate-to-cli-plugin) -- 删除了`@tauri-apps/api/clipboard`模块。 请改用`@tauri-apps/plugin-clipboard`。 [迁移](#migrate-to-clipboard-plugin) -- 删除了`@tauri-apps/api/dialog`模块。 请改用`@tauri-apps/plugin-dialog`。 [迁移](#migrate-to-dialog-plugin) -- 删除了`@tauri-apps/api/fs`模块。 请改用`@tauri-apps/plugin-fs`。 [迁移](#migrate-to-file-system-plugin) -- 删除了`@tauri-apps/api/global-shortcut`模块。 请改用`@tauri-apps/plugin-global-shortcut`。 [迁移](#migrate-to-global-shortcut-plugin) -- 删除了`@tauri-apps/api/http`模块。 请改用`@tauri-apps/plugin-http`。 [迁移](#migrate-to-http-plugin) -- 删除了`@tauri-apps/api/os`模块。 请改用`@tauri-apps/plugin-os`。 [迁移](#migrate-to-os-plugin) -- 删除了`@tauri-apps/api/notification`模块。 请改用`@tauri-apps/plugin-notification`。 [迁移](#migrate-to-notification-plugin) -- 删除了`@tauri-apps/api/process`模块。 请改用`@tauri-apps/plugin-process`。 [迁移](#migrate-to-process-plugin) -- 删除了`@tauri-apps/api/shell`模块。 请改用`@tauri-apps/plugin-shell`。 [迁移](#migrate-to-shell-plugin) -- 删除了`@tauri-apps/api/updater`模块。 使用 `@tauri-apps/plugin-updater` 代替。 [迁移](#migrate-to-updater-plugin) -- 删除了`@tauri-apps/api/window`模块。 使用 `@tauri-apps/plugin-window` 代替。 [迁移](#migrate-to-window-plugin) +- 删除了`@tauri-apps/api/app`模块。 请改用`@tauri-apps/plugin-app`。 [迁移](#迁移至-app-应用-插件) +- 删除了`@tauri-apps/api/cli`模块。 请改用`@tauri-apps/plugin-cli`。 [迁移](#迁移至-cli-命令行-插件) +- 删除了`@tauri-apps/api/clipboard`模块。 请改用`@tauri-apps/plugin-clipboard`。 [迁移](#迁移至-clipboard-剪贴板-插件) +- 删除了`@tauri-apps/api/dialog`模块。 请改用`@tauri-apps/plugin-dialog`。 [迁移](#迁移至-dialog-对话框-插件) +- 删除了`@tauri-apps/api/fs`模块。 请改用`@tauri-apps/plugin-fs`。 [迁移](#迁移至-file-system-文件系统-插件) +- 删除了`@tauri-apps/api/global-shortcut`模块。 请改用`@tauri-apps/plugin-global-shortcut`。 [迁移](#迁移至-global-shortcut-全局快捷键-插件) +- 删除了`@tauri-apps/api/http`模块。 请改用`@tauri-apps/plugin-http`。 [迁移](#迁移至-http-插件) +- 删除了`@tauri-apps/api/os`模块。 请改用`@tauri-apps/plugin-os`。 [迁移](#迁移至-os-系统-插件) +- 删除了`@tauri-apps/api/notification`模块。 请改用`@tauri-apps/plugin-notification`。 [迁移](#迁移至-notification-通知-插件) +- 删除了`@tauri-apps/api/process`模块。 请改用`@tauri-apps/plugin-process`。 [迁移](#迁移至-process-进程-插件) +- 删除了`@tauri-apps/api/shell`模块。 请改用`@tauri-apps/plugin-shell`。 [迁移](#迁移至-shell-插件) +- 删除了`@tauri-apps/api/updater`模块。 使用 `@tauri-apps/plugin-updater` 代替。 [迁移](#迁移至-updater-升级器-插件) +- 删除了`@tauri-apps/api/window`模块。 使用 `@tauri-apps/plugin-window` 代替。 [迁移](#迁移至-window-窗体-插件) ## 详细的迁移步骤 将 Tauri 1.0 应用程序迁移到 Tauri 2.0 时可能会遇到的常见场景。 -### 迁移至 App 应用插件 +### 迁移至 App 应用 插件 JavaScript `@tauri-apps/api/app` API 已被删除。 请改用 `@tauri-apps/plugin-app` 插件: @@ -222,7 +222,7 @@ fn main() { -### 迁移至 Clipboard 剪切板 插件 +### 迁移至 Clipboard 剪贴板 插件 Rust 的 `App::clipboard_manager` 和 `AppHandle::clipboard_manager` 与 JavaScript 的 `@tauri-apps/api/clipboard` API 已被移除。请用 `@tauri-apps/plugin-clipboard-manager` 插件代替: From d6ad728189e3655995f3a16f2cb3b8394043c9c6 Mon Sep 17 00:00:00 2001 From: Adam C <66894537+Wind-Explorer@users.noreply.github.com> Date: Tue, 24 Oct 2023 13:51:53 +0800 Subject: [PATCH 3/7] Fix `#` links pt.2 --- src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx index 27991a835d..15cc10097d 100644 --- a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx +++ b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx @@ -949,7 +949,7 @@ let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?; #### 迁移至 Menu 菜单 -使用 `tauri::menu::Menu` 代替 `tauri::SystemTrayMenu`, `tauri::menu::Submenu` 来代替 `tauri::SystemTraySubmenu` 还有 `tauri::menu::PredefinedMenuItem` 来代替 `tauri::SystemTrayMenuItem`。 [迁移](#migrate-to-menu) +使用 `tauri::menu::Menu` 代替 `tauri::SystemTrayMenu`, `tauri::menu::Submenu` 来代替 `tauri::SystemTraySubmenu` 还有 `tauri::menu::PredefinedMenuItem` 来代替 `tauri::SystemTrayMenuItem`。 [迁移](#迁移至-menu-菜单) #### 任务栏托盘事件 From 0b8bd4fd9206f66336c18f37cc57f28260d020d2 Mon Sep 17 00:00:00 2001 From: Adam C <66894537+Wind-Explorer@users.noreply.github.com> Date: Mon, 27 May 2024 15:26:07 +0800 Subject: [PATCH 4/7] Update src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx Co-authored-by: DK Liao --- src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx index 15cc10097d..d50ce91920 100644 --- a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx +++ b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx @@ -655,8 +655,6 @@ tauri::Builder::default() }) ``` -`tauri::Builder::menu` now takes a closure because the menu needs a Manager instance to be built. See [the documentation](https://docs.rs/tauri/2.0.0-alpha/tauri/struct.Builder.html#method.menu) for more information. - `tauri::Builder::menu` 现在接受一个闭包,因为菜单需要构建一个 Manager 实例。 有关更多信息,请参阅[文档](https://docs.rs/tauri/2.0.0-alpha/tauri/struct.Builder.html#method.menu)。 #### 菜单事件 From 8e25fa107c23874459c71a7d465a4b4bbfcf0e86 Mon Sep 17 00:00:00 2001 From: Wind-Explorer Date: Mon, 27 May 2024 17:06:15 +0800 Subject: [PATCH 5/7] More translation (see description) Addressed points brought up by @dklassic, polished some improvable translations and translated new content. --- .../guides/upgrade-migrate/from-tauri-1.mdx | 215 ++++++++++-------- 1 file changed, 123 insertions(+), 92 deletions(-) diff --git a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx index d50ce91920..0ac5aac85e 100644 --- a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx +++ b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx @@ -10,7 +10,7 @@ import CommandTabs from '@components/CommandTabs.astro'; ## 自动迁移 -Tauri v2 CLI 包含一个 `migrate` 命令,可以自动执行大部分过程并帮助您完成迁移: +Tauri v2 CLI 包含一个 `migrate` 命令行工具,可以自动执行大部分过程并帮助您完成迁移: -### 迁移至 Dialog 对话框 插件 +### 迁移至 Dialog(对话框)插件 Rust 的 `tauri::api::dialog` 与 JavaScript 的 `@tauri-apps/api/dialog` API 已被移除。请用 `@tauri-apps/plugin-dialog` 插件代替: @@ -330,10 +329,10 @@ tauri::Builder::default() .setup(|app| { app.dialog().file().pick_file(|file_path| { // 使用此处的可选文件路径执行某些操作 - // 如果用户关闭对话框,文件路径为 `None` + // 如果用户关闭对话框,文件路径则为 `None` }); - app.dialog().message("Tauri 很nb!").show(); + app.dialog().message("Tauri YYDS!").show(); Ok(()) }) ``` @@ -341,7 +340,7 @@ tauri::Builder::default() -### 迁移至 File System 文件系统 插件 +### 迁移至 File System(文件系统)插件 Rust 的 `App::get_cli_matches` 与 JavaScript 的 `@tauri-apps/api/fs` API 已被移除。请用 Rust 的 [`std::fs`](https://doc.rust-lang.org/std/fs/) 与 JavaScript 的 `@tauri-apps/plugin-fs` 插件代替: @@ -387,7 +386,7 @@ await createDir('db', { dir: BaseDirectory.AppLocalData }); -### 迁移至 Global Shortcut 全局快捷键 插件 +### 迁移至 Global Shortcut(全局快捷键)插件 Rust 的 `App::global_shortcut_manager` 和 `AppHandle::global_shortcut_manager` 与 JavaScript 的 `@tauri-apps/api/global-shortcut` API 已被移除。请用 `@tauri-apps/plugin-global-shortcut` 插件代替: @@ -505,12 +504,12 @@ tauri::Builder::default() }) ``` -HTTP 插件包装了 [reqwest](https://docs.rs/reqwest/latest/reqwest/) 所以您可以查看它们的开发文档以获得更多信息。 +HTTP 插件包装了 [reqwest](https://docs.rs/reqwest/latest/reqwest/),所以您可以查看其开发文档以获得更多信息。 -### 迁移至 Notification 通知 插件 +### 迁移至 Notification(通知)插件 Rust 的 `tauri::api::notification` 与 JavaScript 的 `@tauri-apps/api/notification` API 已被移除。请用 `@tauri-apps/plugin-notification` 插件代替: @@ -545,7 +544,7 @@ fn main() { ```js import { sendNotification } from '@tauri-apps/plugin-notification'; -sendNotification('Tauri 很nb!'); +sendNotification('Tauri YYDS!'); ``` @@ -564,7 +563,7 @@ fn main() { if app.notification().permission_state()? == PermissionState::Granted { app.notification() .builder() - .body("Tauri 很nb!") + .body("Tauri YYDS!") .show()?; } Ok(()) @@ -575,15 +574,15 @@ fn main() { -### 迁移至 Menu 菜单 模块 +### 迁移至 Menu(菜单)模块 -Rust 的 `Menu` 菜单 API 已被移至 `tauri::menu` 模块并用 [muda crate](https://github.com/tauri-apps/muda) 箱 重构。 +Rust 的 `Menu` 菜单 API 已被移至 `tauri::menu` 模块并用 [muda crate](https://github.com/tauri-apps/muda) 重构。 JavaScript 中 `@tauri-apps/api/window` 的 `onMenuClicked()` API 将在未来发行中迁移。 #### 使用 `tauri::menu::MenuBuilder` -使用 `tauri::menu::MenuBuilder` 代替 `tauri::Menu`。请注意,它的构造函数采用 Manager 实例(`App`、`AppHandle`或`Window`之一)作为参数: +使用 `tauri::menu::MenuBuilder` 代替 `tauri::Menu`。请注意,它的构造函数采用 Manager 实例(`App`、`AppHandle` 或`Window` 之一)作为参数: ```rust use tauri::menu::MenuBuilder; @@ -596,7 +595,7 @@ tauri::Builder::default() .separator() .undo() .redo() - .text("open-url", "打开 URL 链接") + .text("open-url", "打开链接") .check("toggle", "切换") .icon("show-app", "显示应用", app.default_window_icon().cloned().unwrap()) .build()?; @@ -619,7 +618,7 @@ tauri::Builder::default() ``` :::tip -菜单构建器有专用的方法来添加每个预定义的菜单项,所以您可以调用`.copy()`来代替`.item(&PredefinedMenuItem::copy(app, None))`。 +菜单构建器有专用的方法来添加每个预定义的菜单项,所以您可以调用 `.copy()` 来代替 `.item(&PredefinedMenuItem::copy(app, None))`。 ::: #### 使用 `tauri::menu::MenuItemBuilder` @@ -648,14 +647,14 @@ tauri::Builder::default() let submenu = SubmenuBuilder::new(app, "二级菜单") .text("Tauri") .separator() - .check("很nb") + .check("YYDS") .build()?; let menu = MenuBuilder::new(app).item(&submenu).build()?; Ok(()) }) ``` -`tauri::Builder::menu` 现在接受一个闭包,因为菜单需要构建一个 Manager 实例。 有关更多信息,请参阅[文档](https://docs.rs/tauri/2.0.0-alpha/tauri/struct.Builder.html#method.menu)。 +`tauri::Builder::menu` 现在接受一个闭包,因为菜单需要构建一个 Manager 实例。有关更多信息,请参阅[文档](https://docs.rs/tauri/2.0.0-alpha/tauri/struct.Builder.html#method.menu)。 #### 菜单事件 @@ -676,21 +675,21 @@ tauri::Builder::default() if event.id() == check.id() { println!("`check` 已被触发,做点什么! 开关已被开启? {}", check.is_checked().unwrap()); } else if event.id() == "toggle" { - println!("toggle 已被触发!"); + println!("toggle 已被触发!"); } }); Ok(()) }) ``` -请注意,有两种方法可以检查选择了哪个菜单项:将项目移至事件处理程序闭包并比较 ID,或者通过`with_id`构造函数为该项目定义自定义 ID 并使用该 ID 字符串进行比较。 +请注意,有两种方法可以检查选择了哪个菜单项:将项目移至事件处理程序闭包并比较 ID,或者通过 `with_id` 构造函数为该项目定义自定义 ID 并使用该 ID 字符串进行比较。 :::tip 菜单项可以跨菜单共享,而且菜单事件是绑定到菜单项而并非菜单或窗口。 如果您不希望在选择菜单项时触发所有侦听器,请不要共享菜单项并使用专用实例,您可以将其移至 `tauri::Window/WindowBuilder::on_menu_event` 闭包中。 ::: -### 迁移至 OS 系统 插件 +### 迁移至 OS(系统)插件 Rust 的 `tauri::api::os` 与 JavaScript 的 `@tauri-apps/api/os` API 已被移除。请用 `@tauri-apps/plugin-os` 插件代替: @@ -745,7 +744,7 @@ fn main() { -### 迁移至 Process 进程 插件 +### 迁移至 Process(进程)插件 Rust 的 `tauri::api::process` 与 JavaScript 的 `@tauri-apps/api/process` API 已被移除。请用 `@tauri-apps/plugin-process` 插件代替: @@ -847,7 +846,7 @@ await open('https://github.com/tauri-apps/tauri'); -- 打开 URL 链接 +- 打开链接 ```rust use tauri_plugin_shell::ShellExt; @@ -872,7 +871,7 @@ fn main() { .plugin(tauri_plugin_shell::init()) .setup(|app| { let status = tauri::async_runtime::block_on(async move { app.shell().command("which").args(["ls"]).status().await.unwrap() }); - println!("`which` 已结束代码 {:?} 结束。", status.code()); + println!("`which` 进程已与结束代码 {:?} 结束。", status.code()); Ok(()) }) } @@ -914,7 +913,7 @@ fn main() { let mut i = 0; while let Some(event) = rx.recv().await { if let CommandEvent::Stdout(line) = event { - println!("已获取: {}", String::from_utf8(line).unwrap()); + println!("已获取:{}", String::from_utf8(line).unwrap()); i += 1; if i == 4 { child.write("来自 Rust 的消息\n".as_bytes()).unwrap(); @@ -931,7 +930,7 @@ fn main() { -### 迁移至 Tray Icon 任务栏托盘图标 模块 +### 迁移至 Tray Icon(任务栏托盘图标)模块 Rust 的 `SystemTray` API 为一致性已重命名为 `TrayIcon`。新的 API 现可在 Rust 中的 `tray` 模块找到。 @@ -945,13 +944,13 @@ let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?; 更多信息请详阅 [TrayIconBuilder](https://docs.rs/tauri/2.0.0-alpha/tauri/tray/struct.TrayIconBuilder.html)。 -#### 迁移至 Menu 菜单 +#### 迁移至 Menu(菜单) -使用 `tauri::menu::Menu` 代替 `tauri::SystemTrayMenu`, `tauri::menu::Submenu` 来代替 `tauri::SystemTraySubmenu` 还有 `tauri::menu::PredefinedMenuItem` 来代替 `tauri::SystemTrayMenuItem`。 [迁移](#迁移至-menu-菜单) +使用 `tauri::menu::Menu` 代替 `tauri::SystemTrayMenu`, `tauri::menu::Submenu` 来代替 `tauri::SystemTraySubmenu` 还有 `tauri::menu::PredefinedMenuItem` 来代替 `tauri::SystemTrayMenuItem`。[迁移](#迁移至-menu(菜单)) #### 任务栏托盘事件 -`tauri::SystemTray::on_event` 已被分成 `tauri::tray::TrayIconBuilder::on_menu_event` a和nd `tauri::tray::TrayIconBuilder::on_tray_icon_event`: +`tauri::SystemTray::on_event` 已被分成 `tauri::tray::TrayIconBuilder::on_menu_event` 和 `tauri::tray::TrayIconBuilder::on_tray_icon_event`: ```rust use tauri::{ @@ -967,7 +966,7 @@ tauri::Builder::default() .menu(&menu) .on_menu_event(move |app, event| match event.id().as_ref() { "toggle" => { - println!("切换按钮已被点击"); + println!("开关按钮已被点击"); } _ => (), }) @@ -986,9 +985,9 @@ tauri::Builder::default() }) ``` -### 迁移至 Updater 升级器 插件 +### 迁移至 Updater(升级器)插件 -Rust 的 `tauri::updater` 与 JavaScript 的 `@tauri-apps/api-updater` API 已被移除。 要使用`@tauri-apps/plugin-updater`设置自定义更新程序目标: +Rust 的 `tauri::updater` 与 JavaScript 的 `@tauri-apps/api-updater` API 已被移除。请使用 `@tauri-apps/plugin-updater` 设置自定义更新程序目标: 1. 往 cargo 依赖项中添加: @@ -1055,7 +1054,7 @@ fn main() { } ``` -设置自定义更新程序目标: +设置自定义更新程序平台: ```rust fn main() { @@ -1072,7 +1071,7 @@ fn main() { -### 迁移至 Window 窗体 插件 +### 迁移至 Window(窗体)插件 Rust 的 `tauri::window` 与 JavaScript 的 `@tauri-apps/api/window` API 已被移除。请用 `@tauri-apps/plugin-window` 插件代替: @@ -1130,7 +1129,7 @@ fn main() { -### 迁移 Path 路径 至 Tauri Manager 管理器 +### 迁移 Path(路径)至 Tauri Manager(管理器) Rust 的 `tauri::api::path` 模块函数和 `tauri::PathResolver` 已被移至 `tauri::Manager::path`: @@ -1140,9 +1139,41 @@ use tauri::{path::BaseDirectory, Manager}; tauri::Builder::default() .setup(|app| { let home_dir_path = app.path().home_dir().expect("无法获取主目录"); - + let path = app.path().resolve("张三/文件/的位置.txt", BaseDirectory::Config)?; - + Ok(()) }) ``` + +### 迁移至新的 Window API + +在 Rust 方面,`Window` 已被重名为 `WebviewWindow`,并且其构建器 `WindowBuilder` 现被名为 `WebviewWindowBuilder`。 + +此外,`Manager::get_window` 函数已被重名为 `get_webview_window` 并且 +窗体的 `parent_window` API 已被重名为 `parent_raw`,以便支持高层的父窗体 API。 + +在 JavaScript 方面,`WebviewWindow` 类现从 `@tauri-apps/api/webviewWindow` 路径中导出。 + +`onMenuClicked` 函数已被移除,您可以在用 JavaScript 创建菜单时拦截菜单事件。 + +### 迁移 嵌入式外部二进制文件(Sidecar) + +在 Tauri v1 中,外部二进制文件及其参数在 allowlist(允许列表)中定义。在 v2 中,请使用新的权限系统。请阅读[迁移权限](#迁移-Permissions(权限配置)) 了解更多信息。 + +在 JavaScript 方面,请确保您已[迁移至 Shell 插件](#迁移至-Shell-插件)。 + +在 Rust 方面,`tauri::api::process` API 已被移除。请改用 `tauri_plugin_shell::ShellExt` 和 `tauri_plugin_shell::process::CommandEvent` API。参阅[嵌入外部二进制文件](/develop/sidecar/#running-it-from-rust) 指南了解如何操作。 + +Tauri v2 中,`process-command-api` feature flag(功能标识)已被移除。因此,运行外部二进制文件不再需要在 Tauri 配置中定义此功能。 + +### 迁移 Permissions(权限配置) + +Tauri v1 的权限配置系统已被完全重写,现已可适用于单个插件,并且对于多窗口和远程链接支持来说,更加容易配置。 +此新系统的运作逻辑与 ACL(访问控制列表)相似,您可以允许或拒绝命令、为一组特定的窗口和站域分配权限以及自定访问范围。 + +要为您的应用程序启用权限,您须在 `src-tauri/capability` 文件夹中创建 capability files(权限文件),Tauri 将为您自动完成配置。 + +`migrate` CLI(迁移命令行工具)会自动解析您现有的 v1 允许列表并生成相对的权限文件。 + +要了解有关权限的更多信息,请参阅[文档](/reference/acl/)。 \ No newline at end of file From e0ac14aa9b622cb141f3b4f6250d08757849f1b9 Mon Sep 17 00:00:00 2001 From: Wind-Explorer Date: Mon, 27 May 2024 21:49:13 +0800 Subject: [PATCH 6/7] Fix links (sacrificed special translation) --- .../guides/upgrade-migrate/from-tauri-1.mdx | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx index 0ac5aac85e..d138b4eb89 100644 --- a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx +++ b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx @@ -25,7 +25,7 @@ Tauri v2 CLI 包含一个 `migrate` 命令行工具,可以自动执行大部 {/* TODO: 2.0 */} -在[命令行界面参考](/2/reference/cli#migrate)中了解有关 `migrate` 命令行工具的更多信息 +在[命令行界面参考](/reference/cli#migrate)中了解有关 `migrate` 命令行工具的更多信息 ## 变化总结 @@ -40,7 +40,7 @@ Tauri v2 CLI 包含一个 `migrate` 命令行工具,可以自动执行大部 - `tauri > updater > endpoints` 已被移至 `plugins > updater`。 - `tauri > systemTray` 已被重命名为 `tauri > trayIcon`。 -[Tauri 2.0 配置 API 参考](/2/reference/config) +[Tauri 2.0 配置 API 参考](/reference/config) ### 新 Cargo 功能 @@ -60,17 +60,17 @@ Tauri v2 CLI 包含一个 `migrate` 命令行工具,可以自动执行大部 ### Rust Crate 变更 - 删除了 `api` 模块。每个 API 模块都可以在 Tauri 插件中找到。 -- 删除了 `api::dialog` 模块。请改用`tauri-plugin-dialog`。[迁移](#迁移至-dialog(对话框)插件) +- 删除了 `api::dialog` 模块。请改用`tauri-plugin-dialog`。[迁移](#迁移至-dialog-插件) - 删除了 `api::file` 模块。请改用 Rust 的 [`std::fs`](https://doc.rust-lang.org/std/fs/)。 - 删除了 `api::http` 模块。请改用 `tauri-plugin-http`。[迁移](#迁移至-http-插件) - `api::ip` 模块已重写并移至 `tauri::ipc`。请查看新的 API,特别是 `tauri::ipc::Channel`。 -- `api::path` 模块函数和 `tauri::PathResolved` 已移至 `tauri::Manager::path`。[迁移](#迁移-path(路径)至-tauri-manager(管理器)) +- `api::path` 模块函数和 `tauri::PathResolved` 已移至 `tauri::Manager::path`。[迁移](#迁移-path-至-tauri-manager) - 删除了 `api::process::Command`、`tauri::api::shell` 和 `tauri::Manager::shell_scope` API。请改用 `tauri-plugin-shell`。[迁移](#迁移至-shell-插件) - `api::process::current_binary` 和 `tauri::api::process::restart` 已移至 `tauri::process`。 - `api::version` 模块已被删除。请改用 [semver crate](https://docs.rs/semver/latest/semver/)。 -- 删除了 `App::clipboard_manager` 和 `AppHandle::clipboard_manager`。请改用 `tauri-plugin-clipboard`。[迁移](#迁移至-clipboard(剪贴板)插件) -- 删除了 `App::get_cli_matches`。请改用 `tauri-plugin-cli`。[迁移](#迁移至-cli(命令行)插件) -- 删除了 `App::global_shortcut_manager` 和 `AppHandle::global_shortcut_manager`。请改用`tauri-plugin-global-shortcut`。[迁移](#迁移至-global-shortcut(全局快捷键)插件) +- 删除了 `App::clipboard_manager` 和 `AppHandle::clipboard_manager`。请改用 `tauri-plugin-clipboard`。[迁移](#迁移至-clipboard-插件) +- 删除了 `App::get_cli_matches`。请改用 `tauri-plugin-cli`。[迁移](#迁移至-cli-插件) +- 删除了 `App::global_shortcut_manager` 和 `AppHandle::global_shortcut_manager`。请改用`tauri-plugin-global-shortcut`。[迁移](#迁移至-global-shortcut-插件) - 删除了 `Manager::fs_scope`。文件系统可以通过`tauri_plugin_fs::FsExt`访问。 - `Plugin::PluginApi` 现在接收插件配置作为第二个参数。 - 删除了 `Plugin::setup_with_config`。请改用更新后的 `tauri::Plugin::PluginApi`。 @@ -78,34 +78,34 @@ Tauri v2 CLI 包含一个 `migrate` 命令行工具,可以自动执行大部 - `scope::IpcScope` 被删除,请使用 `scope::ipc::Scope` 代替。 - `scope::IpcScope` 被删除,请使用 `scope::ipc::Scope` 代替。 - 删除了 `scope::FsScope`、`scope::GlobPattern` 和 `scope::FsScopeEvent`,现请改用 `scope::fs::Scope`、`scope::fs::Pattern` 和 `scope::fs::Event`。 -- 删除了 `updater` 模块。请改用 `tauri-plugin-updater`。[迁移](#迁移至-updater(升级器)插件) +- 删除了 `updater` 模块。请改用 `tauri-plugin-updater`。[迁移](#迁移至-updater-插件) - `Env.args` 字段已被删除,请使用 `Env.args_os` 字段代替。 -- 删除了 `Menu`、`MenuEvent`、`CustomMenuItem`、`Submenu`、`WindowMenuEvent`、`MenuItem` 和 `Builder::on_menu_event` API。[迁移](#迁移至-menu(菜单)) -- 删除了 `SystemTray`、`SystemTrayHandle`、`SystemTrayMenu`、`SystemTrayMenuItemHandle`、`SystemTraySubmenu`、`MenuEntry` 和 `SystemTrayMenuItem` API。[迁移](#迁移至-tray-icon(任务栏托盘图标)模块) +- 删除了 `Menu`、`MenuEvent`、`CustomMenuItem`、`Submenu`、`WindowMenuEvent`、`MenuItem` 和 `Builder::on_menu_event` API。[迁移](#迁移至-menu) +- 删除了 `SystemTray`、`SystemTrayHandle`、`SystemTrayMenu`、`SystemTrayMenuItemHandle`、`SystemTraySubmenu`、`MenuEntry` 和 `SystemTrayMenuItem` API。[迁移](#迁移至-tray-icon-模块) ### JavaScript API 接口变更 `@tauri-apps/api` 包不再提供非核心模块,现仅提供`tauri`、`path`和`event`模块。所有其他内容均已移至插件。 -- 删除了 `@tauri-apps/api/app` 模块。请改用 `@tauri-apps/plugin-app`。[迁移](#迁移至-app(应用)插件) -- 删除了 `@tauri-apps/api/cli` 模块。请改用 `@tauri-apps/plugin-cli`。[迁移](#迁移至-cli(命令行)插件) -- 删除了 `@tauri-apps/api/clipboard` 模块。请改用 `@tauri-apps/plugin-clipboard`。[迁移](#迁移至-clipboard(剪贴板)插件) -- 删除了 `@tauri-apps/api/dialog` 模块。请改用 `@tauri-apps/plugin-dialog`。[迁移](#迁移至-dialog(对话框)插件) -- 删除了 `@tauri-apps/api/fs` 模块。请改用 `@tauri-apps/plugin-fs`。[迁移](#迁移至-file-system(文件系统)插件) -- 删除了 `@tauri-apps/api/global-shortcut` 模块。请改用 `@tauri-apps/plugin-global-shortcut`。[迁移](#迁移至-global-shortcut(全局快捷键)插件) +- 删除了 `@tauri-apps/api/app` 模块。请改用 `@tauri-apps/plugin-app`。[迁移](#迁移至-app-插件) +- 删除了 `@tauri-apps/api/cli` 模块。请改用 `@tauri-apps/plugin-cli`。[迁移](#迁移至-cli-插件) +- 删除了 `@tauri-apps/api/clipboard` 模块。请改用 `@tauri-apps/plugin-clipboard`。[迁移](#迁移至-clipboard-插件) +- 删除了 `@tauri-apps/api/dialog` 模块。请改用 `@tauri-apps/plugin-dialog`。[迁移](#迁移至-dialog-插件) +- 删除了 `@tauri-apps/api/fs` 模块。请改用 `@tauri-apps/plugin-fs`。[迁移](#迁移至-file-system-插件) +- 删除了 `@tauri-apps/api/global-shortcut` 模块。请改用 `@tauri-apps/plugin-global-shortcut`。[迁移](#迁移至-global-shortcut-插件) - 删除了 `@tauri-apps/api/http` 模块。请改用 `@tauri-apps/plugin-http`。[迁移](#迁移至-http-插件) -- 删除了 `@tauri-apps/api/os` 模块。请改用 `@tauri-apps/plugin-os`。[迁移](#迁移至-os(系统)插件) -- 删除了 `@tauri-apps/api/notification` 模块。请改用`@tauri-apps/plugin-notification`。[迁移](#迁移至-notification(通知)插件) -- 删除了 `@tauri-apps/api/process` 模块。请改用`@tauri-apps/plugin-process`。[迁移](#迁移至-process(进程)插件) +- 删除了 `@tauri-apps/api/os` 模块。请改用 `@tauri-apps/plugin-os`。[迁移](#迁移至-os-插件) +- 删除了 `@tauri-apps/api/notification` 模块。请改用`@tauri-apps/plugin-notification`。[迁移](#迁移至-notification-插件) +- 删除了 `@tauri-apps/api/process` 模块。请改用`@tauri-apps/plugin-process`。[迁移](#迁移至-process-插件) - 删除了 `@tauri-apps/api/shell` 模块。请改用`@tauri-apps/plugin-shell`。[迁移](#迁移至-shell-插件) -- 删除了 `@tauri-apps/api/updater` 模块。使用 `@tauri-apps/plugin-updater` 代替。[迁移](#迁移至-updater(升级器)插件) -- 删除了 `@tauri-apps/api/window` 模块。使用 `@tauri-apps/plugin-window` 代替。[迁移](#迁移至-window(窗体)插件) +- 删除了 `@tauri-apps/api/updater` 模块。使用 `@tauri-apps/plugin-updater` 代替。[迁移](#迁移至-updater-插件) +- 删除了 `@tauri-apps/api/window` 模块。使用 `@tauri-apps/plugin-window` 代替。[迁移](#迁移至-window-插件) ## 详细的迁移步骤 将 Tauri 1.0 应用程序迁移到 Tauri 2.0 时可能会遇到的常见场景。 -### 迁移至 App(应用)插件 +### 迁移至 App 插件 JavaScript 的 `@tauri-apps/api/app` API 已被删除。请改用 `@tauri-apps/plugin-app` 插件: @@ -165,7 +165,7 @@ fn main() { -### 迁移至 CLI(命令行)插件 +### 迁移至 CLI 插件 Rus 的 `App::get_cli_matches` 与 JavaScript 的 `@tauri-apps/api/cli` API 已被移除。请用 `@tauri-apps/plugin-cli` 插件代替: @@ -221,7 +221,7 @@ fn main() { -### 迁移至 Clipboard(剪贴板)插件 +### 迁移至 Clipboard 插件 Rust 的 `App::clipboard_manager` 和 `AppHandle::clipboard_manager` 与 JavaScript 的 `@tauri-apps/api/clipboard` API 已被移除。请用 `@tauri-apps/plugin-clipboard-manager` 插件代替: @@ -274,7 +274,7 @@ tauri::Builder::default() -### 迁移至 Dialog(对话框)插件 +### 迁移至 Dialog 插件 Rust 的 `tauri::api::dialog` 与 JavaScript 的 `@tauri-apps/api/dialog` API 已被移除。请用 `@tauri-apps/plugin-dialog` 插件代替: @@ -340,7 +340,7 @@ tauri::Builder::default() -### 迁移至 File System(文件系统)插件 +### 迁移至 File System 插件 Rust 的 `App::get_cli_matches` 与 JavaScript 的 `@tauri-apps/api/fs` API 已被移除。请用 Rust 的 [`std::fs`](https://doc.rust-lang.org/std/fs/) 与 JavaScript 的 `@tauri-apps/plugin-fs` 插件代替: @@ -386,7 +386,7 @@ await createDir('db', { dir: BaseDirectory.AppLocalData }); -### 迁移至 Global Shortcut(全局快捷键)插件 +### 迁移至 Global Shortcut 插件 Rust 的 `App::global_shortcut_manager` 和 `AppHandle::global_shortcut_manager` 与 JavaScript 的 `@tauri-apps/api/global-shortcut` API 已被移除。请用 `@tauri-apps/plugin-global-shortcut` 插件代替: @@ -509,7 +509,7 @@ HTTP 插件包装了 [reqwest](https://docs.rs/reqwest/latest/reqwest/),所以 -### 迁移至 Notification(通知)插件 +### 迁移至 Notification 插件 Rust 的 `tauri::api::notification` 与 JavaScript 的 `@tauri-apps/api/notification` API 已被移除。请用 `@tauri-apps/plugin-notification` 插件代替: @@ -574,7 +574,7 @@ fn main() { -### 迁移至 Menu(菜单)模块 +### 迁移至 Menu 模块 Rust 的 `Menu` 菜单 API 已被移至 `tauri::menu` 模块并用 [muda crate](https://github.com/tauri-apps/muda) 重构。 @@ -689,7 +689,7 @@ tauri::Builder::default() 如果您不希望在选择菜单项时触发所有侦听器,请不要共享菜单项并使用专用实例,您可以将其移至 `tauri::Window/WindowBuilder::on_menu_event` 闭包中。 ::: -### 迁移至 OS(系统)插件 +### 迁移至 OS 插件 Rust 的 `tauri::api::os` 与 JavaScript 的 `@tauri-apps/api/os` API 已被移除。请用 `@tauri-apps/plugin-os` 插件代替: @@ -744,7 +744,7 @@ fn main() { -### 迁移至 Process(进程)插件 +### 迁移至 Process 插件 Rust 的 `tauri::api::process` 与 JavaScript 的 `@tauri-apps/api/process` API 已被移除。请用 `@tauri-apps/plugin-process` 插件代替: @@ -930,7 +930,7 @@ fn main() { -### 迁移至 Tray Icon(任务栏托盘图标)模块 +### 迁移至 Tray Icon 模块 Rust 的 `SystemTray` API 为一致性已重命名为 `TrayIcon`。新的 API 现可在 Rust 中的 `tray` 模块找到。 @@ -944,9 +944,9 @@ let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?; 更多信息请详阅 [TrayIconBuilder](https://docs.rs/tauri/2.0.0-alpha/tauri/tray/struct.TrayIconBuilder.html)。 -#### 迁移至 Menu(菜单) +#### 迁移至 Menu -使用 `tauri::menu::Menu` 代替 `tauri::SystemTrayMenu`, `tauri::menu::Submenu` 来代替 `tauri::SystemTraySubmenu` 还有 `tauri::menu::PredefinedMenuItem` 来代替 `tauri::SystemTrayMenuItem`。[迁移](#迁移至-menu(菜单)) +使用 `tauri::menu::Menu` 代替 `tauri::SystemTrayMenu`, `tauri::menu::Submenu` 来代替 `tauri::SystemTraySubmenu` 还有 `tauri::menu::PredefinedMenuItem` 来代替 `tauri::SystemTrayMenuItem`。[迁移](#迁移至-menu) #### 任务栏托盘事件 @@ -985,7 +985,7 @@ tauri::Builder::default() }) ``` -### 迁移至 Updater(升级器)插件 +### 迁移至 Updater 插件 Rust 的 `tauri::updater` 与 JavaScript 的 `@tauri-apps/api-updater` API 已被移除。请使用 `@tauri-apps/plugin-updater` 设置自定义更新程序目标: @@ -1071,7 +1071,7 @@ fn main() { -### 迁移至 Window(窗体)插件 +### 迁移至 Window 插件 Rust 的 `tauri::window` 与 JavaScript 的 `@tauri-apps/api/window` API 已被移除。请用 `@tauri-apps/plugin-window` 插件代替: @@ -1129,7 +1129,7 @@ fn main() { -### 迁移 Path(路径)至 Tauri Manager(管理器) +### 迁移 Path 至 Tauri Manager Rust 的 `tauri::api::path` 模块函数和 `tauri::PathResolver` 已被移至 `tauri::Manager::path`: @@ -1159,7 +1159,7 @@ tauri::Builder::default() ### 迁移 嵌入式外部二进制文件(Sidecar) -在 Tauri v1 中,外部二进制文件及其参数在 allowlist(允许列表)中定义。在 v2 中,请使用新的权限系统。请阅读[迁移权限](#迁移-Permissions(权限配置)) 了解更多信息。 +在 Tauri v1 中,外部二进制文件及其参数在 allowlist(允许列表)中定义。在 v2 中,请使用新的权限系统。请阅读[迁移权限](#迁移-Permissions) 了解更多信息。 在 JavaScript 方面,请确保您已[迁移至 Shell 插件](#迁移至-Shell-插件)。 @@ -1167,7 +1167,7 @@ tauri::Builder::default() Tauri v2 中,`process-command-api` feature flag(功能标识)已被移除。因此,运行外部二进制文件不再需要在 Tauri 配置中定义此功能。 -### 迁移 Permissions(权限配置) +### 迁移 Permissions Tauri v1 的权限配置系统已被完全重写,现已可适用于单个插件,并且对于多窗口和远程链接支持来说,更加容易配置。 此新系统的运作逻辑与 ACL(访问控制列表)相似,您可以允许或拒绝命令、为一组特定的窗口和站域分配权限以及自定访问范围。 From 6ff8331661fe27d16d4cb048014b1e35cfba6a0a Mon Sep 17 00:00:00 2001 From: Wind-Explorer Date: Mon, 27 May 2024 21:58:54 +0800 Subject: [PATCH 7/7] Fix links pt.2 --- .../docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx index d138b4eb89..3cd4198233 100644 --- a/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx +++ b/src/content/docs/zh-CN/guides/upgrade-migrate/from-tauri-1.mdx @@ -1159,9 +1159,9 @@ tauri::Builder::default() ### 迁移 嵌入式外部二进制文件(Sidecar) -在 Tauri v1 中,外部二进制文件及其参数在 allowlist(允许列表)中定义。在 v2 中,请使用新的权限系统。请阅读[迁移权限](#迁移-Permissions) 了解更多信息。 +在 Tauri v1 中,外部二进制文件及其参数在 allowlist(允许列表)中定义。在 v2 中,请使用新的权限系统。请阅读[迁移权限](#迁移-permissions) 了解更多信息。 -在 JavaScript 方面,请确保您已[迁移至 Shell 插件](#迁移至-Shell-插件)。 +在 JavaScript 方面,请确保您已[迁移至 Shell 插件](#迁移至-shell-插件)。 在 Rust 方面,`tauri::api::process` API 已被移除。请改用 `tauri_plugin_shell::ShellExt` 和 `tauri_plugin_shell::process::CommandEvent` API。参阅[嵌入外部二进制文件](/develop/sidecar/#running-it-from-rust) 指南了解如何操作。