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) 指南了解如何操作。