|
| 1 | +--- |
| 2 | +title: 指定打开应用 |
| 3 | +description: 在外部应用中打开文件和URL。 |
| 4 | +plugin: opener |
| 5 | +--- |
| 6 | + |
| 7 | +import PluginLinks from '@components/PluginLinks.astro'; |
| 8 | +import Compatibility from '@components/plugins/Compatibility.astro'; |
| 9 | + |
| 10 | +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; |
| 11 | +import CommandTabs from '@components/CommandTabs.astro'; |
| 12 | +import PluginPermissions from '@components/PluginPermissions.astro'; |
| 13 | + |
| 14 | +<PluginLinks plugin={frontmatter.plugin} /> |
| 15 | + |
| 16 | +此插件允许你使用特定或者默认的应用程序打开文件或者 URL。它还可以在系统文件管理器中“显示”这些文件。 |
| 17 | + |
| 18 | +## 支持的平台 |
| 19 | + |
| 20 | +<Compatibility plugin={frontmatter.plugin} /> |
| 21 | + |
| 22 | +## 设置 |
| 23 | + |
| 24 | +首先安装“指定打开应用”插件。 |
| 25 | + |
| 26 | +<Tabs> |
| 27 | + <TabItem label="自动" > |
| 28 | + 使用项目的包管理器来添加依赖: |
| 29 | + { ' ' } |
| 30 | + |
| 31 | + <CommandTabs |
| 32 | + npm="npm run tauri add opener" |
| 33 | + yarn="yarn run tauri add opener" |
| 34 | + pnpm="pnpm tauri add opener" |
| 35 | + deno="deno task tauri add opener" |
| 36 | + bun="bun tauri add opener" |
| 37 | + cargo="cargo tauri add opener" |
| 38 | + /> |
| 39 | + </TabItem> |
| 40 | + <TabItem label = "手动"> |
| 41 | + <Steps> |
| 42 | + 1. 在 `src-tauri` 目录下,运行下面的命令。将此插件添加到项目的 `Cargo.toml` 文件的 `dependecnies` 字段中: |
| 43 | + |
| 44 | + ```sh frame=none |
| 45 | + cargo add tauri-plugin-opener |
| 46 | + ``` |
| 47 | + |
| 48 | + 2. 修改 `lib.rs` 文件,初始化此插件: |
| 49 | + |
| 50 | + ```rust title="src-tauri/src/lib.rs" ins={4} |
| 51 | + #[cfg_attr(mobile, tauri::mobile_entry_point)] |
| 52 | + pub fn run() { |
| 53 | + tauri::Builder::default() |
| 54 | + .plugin(tauri_plugin_opener::init()) |
| 55 | + .run(tauri::generate_context!()) |
| 56 | + .expect("error while running tauri application"); |
| 57 | + } |
| 58 | + ``` |
| 59 | + |
| 60 | + 3. 使用你喜欢的 JavaScript 包管理器来添加 JavaScript 端的插件绑定: |
| 61 | + |
| 62 | + <CommandTabs |
| 63 | + npm = "npm install @tauri-apps/plugin-opener" |
| 64 | + yarn = "yarn add @tauri-apps/plugin-opener" |
| 65 | + pnpm = "pnpm add @tauri-apps/plugin-opener" |
| 66 | + deno = "deno add npm:@tauri-apps/plugin-opener" |
| 67 | + bun = "bun add @tauri-apps/plugin-opener" |
| 68 | + /> |
| 69 | + </Steps> |
| 70 | + </TabItem> |
| 71 | + |
| 72 | +</Tabs> |
| 73 | + |
| 74 | +## 用法 |
| 75 | + |
| 76 | +此插件有 JavaScript 和 Rust 两种调用方式。 |
| 77 | + |
| 78 | +<Tabs syncKey="lang"> |
| 79 | + <TabItem label="JavaScript" > |
| 80 | + |
| 81 | +```javascript |
| 82 | +import { openPath } from '@tauri-apps/plugin-opener'; |
| 83 | +// 当配置为 `"withGlobalTauri": true` 时,你可以使用下面方式引入此插件 |
| 84 | +// const { openPath } = window.__TAURI__.opener; |
| 85 | + |
| 86 | +// 使用默认的应用来打开文件 |
| 87 | +await openPath('/path/to/file'); |
| 88 | +// 在 Windows 上使用 `vlc` 打开文件 |
| 89 | +await openPath('C:/path/to/file', 'vlc'); |
| 90 | +``` |
| 91 | + |
| 92 | + </TabItem> |
| 93 | + <TabItem label = "Rust" > |
| 94 | + |
| 95 | +下面代码中的 `app` 变量是 `App` 或者 [`AppHandle`](https://docs.rs/tauri/2.0.0/tauri/struct.AppHandle.html) 实例化后的结果。 |
| 96 | + |
| 97 | +```rust |
| 98 | +use tauri_plugin_opener::OpenerExt; |
| 99 | + |
| 100 | +// 使用默认的应用来打开文件: |
| 101 | +app.opener().open_path("/path/to/file", None::<&str>); |
| 102 | +// 在 Windows 上使用 `vlc` 打开文件: |
| 103 | +app.opener().open_path("C:/path/to/file", Some("vlc")); |
| 104 | +``` |
| 105 | + |
| 106 | + </TabItem> |
| 107 | + |
| 108 | +</Tabs> |
| 109 | + |
| 110 | +## 权限 |
| 111 | + |
| 112 | +默认情况下,所有插件命令都被阻止,无法访问。你必须修改 `tauri` 端的 `capabilities` 文件夹中的配置来启用它们。 |
| 113 | + |
| 114 | +参见[能力概览](/zh-cn/security/capabilities/)以获取更多信息,以及[调整权限分步导览](/zh-cn/learn/security/using-plugin-permissions/)来调整插件的权限。 |
| 115 | + |
| 116 | +```json title="src-tauri/capabilities/default.json" ins={6-15} |
| 117 | +{ |
| 118 | + "$schema": "../gen/schemas/desktop-schema.json", |
| 119 | + "identifier": "main-capability", |
| 120 | + "description": "Capability for the main window", |
| 121 | + "windows": ["main"], |
| 122 | + "permissions": [ |
| 123 | + { |
| 124 | + "identifier": "opener:allow-open-path", |
| 125 | + "allow": [ |
| 126 | + { |
| 127 | + "path": "/path/to/file" |
| 128 | + } |
| 129 | + ] |
| 130 | + } |
| 131 | + ] |
| 132 | +} |
| 133 | +``` |
| 134 | + |
| 135 | +<PluginPermissions plugin={frontmatter.plugin} /> |
0 commit comments