コンテンツにスキップ
Tauri

Tauri 1.0 からのアップグレード

ここでは、Tauri 1.0 アプリケーションを Tauri 2.0 にアップグレードする手順を説明します。

モバイル向けの準備

Tauri のモバイル・インターフェイスは、そのプロジェクトが共有ライブラリを出力するようにしなければなりません。既存のアプリケーションをモバイル向けに変更する場合には、デスクトップ実行可能ファイルとともにそのようなライブラリ・ファイルを生成するようにクレートを変更する必要があります。

  1. ライブラリを生成するために Cargo マニフェストを変更します。以下のブロックを追加します:
src-tauri/Cargo.toml
[lib]
name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
  1. src-tauri/src/main.rs の部分を src-tauri/src/lib.rs に変更します。このファイルは、デスクトップ版とモバイル版の両方で共有されます。

  2. lib.rs にある main 関数ヘッダーの名前を次のように変更します:

src-tauri/src/lib.rs
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
// ここに、あなたのコードを書きます
}

tauri::mobile_entry_point マクロは、あなたが作成した関数をモバイルで実行できるように準備するものです。

  1. 共用実行関数を呼び出す main.rs ファイルを再作成します。
src-tauri/src/main.rs
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
app_lib::run();
}

自動移行

Tauri v2 CLI には、移行作業の大部分を自動化する migrate コマンドが含まれており、移行完了に役立ちます。

npm install @tauri-apps/cli@latest
npm run tauri migrate

migrate コマンドの詳細については、コマンドライン・インターフェース・リファレンス を参照してください。

変更の概要

Tauri 1.0 から Tauri 2.0 への変更内容の概要は以下のとおりです:

Tauri の設定

  • package > productNamepackage > version をトップレベル・オブジェクトへ移動。
  • バイナリ名が自動的には productName と一致するように変更されなくなったため、productName と一致するトップレベル・オブジェクトに mainBinaryName 文字列を追加する必要があります。
  • package を削除。
  • tauri key を app に改称。
  • tauri > allowlist を削除。許可の移行 を参照。
  • tauri > allowlist > protocol > assetScopeapp > security > assetProtocol > scope へ移動。
  • tauri > cliplugins > cli へ移動。
  • tauri > windows > fileDropEnabledapp > windows > dragDropEnabled に改称。
  • tauri > updater > active を削除。
  • tauri > updater > dialog を削除。
  • tauri > updaterplugins > updater へ移動。
  • bundle > createUpdaterArtifacts を追加。アプリ・アップデーターを使用する場合には設定する必要があります。
    • すでに配布されている v1 アプリをアップグレードする場合は、これを v1compatible に設定してください。詳しくは アップデーター・ガイド を参照してください。
  • tauri > systemTrayapp > trayIcon に改称。
  • tauri > patternapp > security > pattern へ移動。
  • tauri > bundle をトップレベルへ移動。
  • tauri > bundle > identifier をトップレベル・オブジェクトへ移動。
  • tauri > bundle > dmgbundle > macOS > dmg へ移動。
  • tauri > bundle > debbundle > linux > deb へ移動。
  • tauri > bundle > appimagebundle > linux > appimage へ移動。
  • tauri > bundle > macOS > license を削除。代わりに bundle > licenseFile を使用して下さい。
  • tauri > bundle > windows > wix > license を削除。代わりに bundle > licenseFile を使用して下さい。
  • tauri > bundle > windows > nsis > license を削除。代わりに bundle > licenseFile を使用して下さい。
  • tauri > bundle > windows > webviewFixedRuntimePath を削除。代わりに bundle > windows > webviewInstallMode を使用して下さい。
  • build > withGlobalTauriapp > withGlobalTauri へ移動。
  • build > distDirfrontendDist に改称。
  • build > devPathdevUrl に改称。

Tauri 2.0 設定 API レファレンス

Cargo の新機能

  • linux-protocol-body: カスタム・プロトコル・リクエストのボディ部解析を有効化し、IPC(プロセス間通信)での利用を許可します。「webkit2gtk 2.40」が必要です。

削除された Cargo 機能

  • reqwest-client: 現時点で「reqwest」のみが有効なクライアントです。
  • reqwest-native-tls-vendored: 代わりに native-tls-vendored を使用して下さい。
  • process-command-api: 代わりに shell プラグインを使用して下さい(以下の項目で使用法を確認してください)。
  • shell-open-api: 代わりに shell プラグインを使用して下さい(以下の項目で使用法を確認してください)。
  • windows7-compat: notification プラグインへ移動。
  • updater: 「Updater(アップデーター)」は現在プラグインになっています。
  • linux-protocol-headers: 「webkit2gtk」最小化版をアップグレードし、デフォルトで有効化されるようになりました。
  • system-tray: tray-icon に改称。

Rust クレートの変更点

  • api モジュールは削除されました。各 API モジュールは、「Tauri プラグイン」にある移行先を参照してください。
  • api::dialog モジュールは削除されました。代わりに tauri-plugin-dialog を使用して下さい。 移行先
  • api::file モジュールは削除されました。代わりに、Rust の std::fs を使用して下さい。
  • api::http モジュールは削除されました。代わりに tauri-plugin-http を使用して下さい。 移行先
  • api::ip モジュールは書き直され、tauri::ipc に移動しました。新しい API群、特に tauri::ipc::Channel を確認してください。
  • api::path モジュール機能と tauri::PathResolvedtauri::Manager::path へ移動しました。 移行先
  • api::process::Commandtauri::api::shell および tauri::Manager::shell_scope の各 API は削除されました。代わりに tauri-plugin-shell を使用してください。 [移行先](#Shell プラグインの移行)
  • api::process::current_binary および tauri::api::process::restarttauri::process へ移動しました。
  • api::version モジュールは削除されました。代わりに semver crate を使用して下さい。
  • App::clipboard_manager および AppHandle::clipboard_manager は削除されました。代わりに tauri-plugin-clipboard を使用してください。 移行先
  • App::get_cli_matches は削除されました。代わりに tauri-plugin-cli を使用して下さい。 移行先
  • App::global_shortcut_manager および AppHandle::global_shortcut_manager は削除されました。代わりに tauri-plugin-global-shortcut を使用して下さい。 移行先
  • Manager::fs_scope は削除されました。「ファイル・システム・スコープ」は tauri_plugin_fs::FsExt 経由でアクセス可能です。
  • Plugin::PluginApi は、プラグイン設定を2番目の引数として受け取るようになりました。
  • 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::FsScopescope::GlobPattern および scope::FsScopeEvent は削除されました。それぞれ、scope::fs::Scopescope::fs::Pattern および scope::fs::Event を使用して下さい。
  • updater モジュールは削除されました。代わりに tauri-plugin-updater を使用して下さい。移行先
  • Env.args フィールドは削除されました。代わりに Env.args_os フィールドを使用して下さい。
  • MenuMenuEventCustomMenuItemSubmenuWindowMenuEventMenuItem および Builder::on_menu_event の各 API は削除されました。移行先
  • SystemTraySystemTrayHandleSystemTrayMenuSystemTrayMenuItemHandleSystemTraySubmenuMenuEntry および SystemTrayMenuItem の各 API は削除されました。移行先

JavaScript API の変更点

@tauri-apps/api パッケージは、コア以外のモジュールを提供しなくなりました。これまでの tauri (現行では core)、patheventwindow の各モジュールのみがエクスポートされます。その他はすべてプラグインに移動されました。

  • @tauri-apps/api/tauri モジュールは @tauri-apps/api/core に改称されました。移行先
  • @tauri-apps/api/cli モジュールは削除されました。代わりに @tauri-apps/plugin-cli を使用して下さい。移行先
  • @tauri-apps/api/clipboard モジュールは削除されました。代わりに @tauri-apps/plugin-clipboard を使用して下さい。移行先
  • @tauri-apps/api/dialog モジュールは削除されました。代わりに @tauri-apps/plugin-dialog を使用して下さい。移行先
  • @tauri-apps/api/fs モジュールは削除されました。代わりに @tauri-apps/plugin-fs を使用して下さい。移行先
  • @tauri-apps/api/global-shortcut モジュールは削除されました。代わりに @tauri-apps/plugin-global-shortcut を使用して下さい。移行先
  • @tauri-apps/api/http モジュールは削除されました。代わりに @tauri-apps/plugin-http を使用してください。移行先
  • @tauri-apps/api/os モジュールは削除されました。代わりに @tauri-apps/plugin-os を使用して下さい。移行先
  • @tauri-apps/api/notification モジュールは削除されました。代わりに @tauri-apps/plugin-notification を使用して下さい。移行先
  • @tauri-apps/api/process モジュールは削除されました。代わりに @tauri-apps/plugin-process を使用して下さい。移行先
  • @tauri-apps/api/shell モジュールは削除されました。代わりに @tauri-apps/plugin-shell を使用して下さい。移行先
  • @tauri-apps/api/updater モジュールは削除されました。代わりに @tauri-apps/plugin-updater を使用してください。移行先
  • @tauri-apps/api/window モジュールは @tauri-apps/api/webviewWindow に改称されました。移行先

バージョン 1 のプラグインは、@tauri-apps/plugin-<plugin-name> として公開されています。これは、以前には git から tauri-plugin-<plugin-name>-api として入手可能だったものです。

環境変数の変更点

Tauri CLI によって読み書きされる環境変数のほとんどは、整合性と間違い防止のために名称が変更されました:

  • TAURI_PRIVATE_KEY -> TAURI_SIGNING_PRIVATE_KEY
  • TAURI_KEY_PASSWORD -> TAURI_SIGNING_PRIVATE_KEY_PASSWORD
  • TAURI_SKIP_DEVSERVER_CHECK -> TAURI_CLI_NO_DEV_SERVER_WAIT
  • TAURI_DEV_SERVER_PORT -> TAURI_CLI_PORT
  • TAURI_PATH_DEPTH -> TAURI_CLI_CONFIG_DEPTH
  • TAURI_FIPS_COMPLIANT -> TAURI_BUNDLER_WIX_FIPS_COMPLIANT
  • TAURI_DEV_WATCHER_IGNORE_FILE -> TAURI_CLI_WATCHER_IGNORE_FILENAME
  • TAURI_TRAY -> TAURI_LINUX_AYATANA_APPINDICATOR
  • TAURI_APPLE_DEVELOPMENT_TEAM -> APPLE_DEVELOPMENT_TEAM
  • TAURI_PLATFORM -> TAURI_ENV_PLATFORM
  • TAURI_ARCH -> TAURI_ENV_ARCH
  • TAURI_FAMILY -> TAURI_ENV_FAMILY
  • TAURI_PLATFORM_VERSION -> TAURI_ENV_PLATFORM_VERSION
  • TAURI_PLATFORM_TYPE -> TAURI_ENV_PLATFORM_TYPE
  • TAURI_DEBUG -> TAURI_ENV_DEBUG

イベント・システム

「イベント・システム」は、より使いやすくなるように再設計されました。イベント・ソースにではなく、イベント・ターゲットに依拠する、より簡潔な実装になっています。

  • emit 機能は、すべてのイベント・リスナーにイベントを発するようになりました。
  • 特定のターゲットにイベントを発生させる、新しい emit_to 機能を追加しました。
  • emit_filter は、ウィンドウではなく、EventTarget に基づいてフィルタリングするようになりました。
  • listen_globallisten_any に改称。フィルターやターゲットに関係なく、すべてのイベントの応答を待機するようになりました。

マルチウェッブビューのサポート

Tauri バージョン 2 では、現在、unstable 機能フラグの下に置かれている「マルチウェッブビュー multiwebview」へのサポートが導入されました。 この機能を導入するため、Rust の Window 型を WebviewWindow へ、Manager の get_window 機能を get_webview_window へ、それぞれ改称しました。

WebviewWindow JS API タイプは、@tauri-apps/api/window ではなく、@tauri-apps/api/webviewWindow から再エクスポートされるようになりました。

Windows での新しい配信元 URL

Windows では、本番公開アプリのフロントエンド・ファイルは、https://tauri.localhost ではなく http://tauri.localhost でホストされるようになりました。このため、バージョン 1 で dangerousUseHttpScheme が使用されていない限り、「IndexedDB」、「LocalStorage」、および 「Cookies」はリセットされます。これを防ぐには、app > windows > useHttpsSchemetrue に設定するか、WebviewWindowBuilder::use_https_scheme を使用して https 方式を引き続き使用してください。

移行手順の詳細

Tauri 1.0 アプリを Tauri 2.0 に移行する場合に発生する可能性のある一般的な流れです。

コア・モジュールの移行

@tauri-apps/api/tauri モジュールは、 @tauri-apps/api/core に改称されています。 ここでの作業は、モジュール・インポート時の名称を変更するだけです:

import { invoke } from "@tauri-apps/api/tauri"
import { invoke } from "@tauri-apps/api/core"

CLI プラグインの移行

Rust の App::get_cli_matches および JavaScript の @tauri-apps/api/cli API削除されました。代わりにプラグインの @tauri-apps/plugin-cli を使用して下さい:

  1. Cargo に依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-cli = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_cli::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-cli": "^2.0.0"
}
}
import { getMatches } from '@tauri-apps/plugin-cli';
const matches = await getMatches();

Clipboard プラグインの移行

Rust の App::clipboard_managerAppHandle::clipboard_manager、および JavaScript の @tauri-apps/api/clipboard API は削除されました。代わりに @tauri-apps/plugin-clipboard-manager プラグインを使用して下さい:

[dependencies]
tauri-plugin-clipboard-manager = "2"
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_clipboard_manager::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-clipboard-manager": "^2.0.0"
}
}
import { writeText, readText } from '@tauri-apps/plugin-clipboard-manager';
await writeText('Tauri is awesome!');
assert(await readText(), 'Tauri is awesome!');

Dialog プラグインの移行

Rust の tauri::api::dialog および JavaScript の @tauri-apps/api/dialog API は削除されました。代わりに @tauri-apps/plugin-dialog プラグインを使用してください:

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-dialog = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-dialog": "^2.0.0"
}
}
import { save } from '@tauri-apps/plugin-dialog';
const filePath = await save({
filters: [
{
name: 'Image',
extensions: ['png', 'jpeg'],
},
],
});

File System プラグインの移行

Rust の App::get_cli_matches および @tauri-apps/api/fs API は削除されました。代わりに、Rust には std::fs を、JavaScript には @tauri-apps/plugin-fs プラグインを使用してください:

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-fs = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_fs::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-fs": "^2.0.0"
}
}
import { mkdir, BaseDirectory } from '@tauri-apps/plugin-fs';
await mkdir('db', { baseDir: BaseDirectory.AppLocalData });

いくつかの関数と型が改称または削除されています:

  • Dir enum エイリアス(列挙型・別名)は削除されました。 BaseDirectory を使用して下さい。
  • FileEntryFsBinaryFileOptionFsDirOptionsFsOptionsFsTextFileOption、および BinaryFileContents のインターフェースと型エイリアスは削除され、各関数に適した新しいインターフェースに置き換えられました。
  • createDirmkdir に改称されました。
  • readBinaryFilereadFile に改称されました。
  • removeDir は削除され、remove に置き換えられました。
  • removeFile は削除され、remove に置き換えられました。
  • renameFile は削除され、rename に置き換えられました。
  • writeBinaryFilewriteFile に改称されました。

Global Shortcut プラグインの移行

Rust の App::global_shortcut_managerAppHandle::global_shortcut_manager および JavaScript の @tauri-apps/api/global-shortcut API は削除されました。代わりに @tauri-apps/plugin-global-shortcut プラグインを使用して下さい:

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies]
tauri-plugin-global-shortcut = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_global_shortcut::Builder::default().build())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-global-shortcut": "^2.0.0"
}
}
import { register } from '@tauri-apps/plugin-global-shortcut';
await register('CommandOrControl+Shift+C', () => {
console.log('Shortcut triggered');
});

HTTP プラグインの移行

Rust の tauri::api::http および JavaScript の @tauri-apps/api/http API は削除されました。代わりに @tauri-apps/plugin-http プラグイン を使用して下さい。

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-http = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_http::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-http": "^2.0.0"
}
}
import { fetch } from '@tauri-apps/plugin-http';
const response = await fetch(
'https://raw.githubusercontent.com/tauri-apps/tauri/dev/package.json'
);

Notification プラグインの移行

Rust の tauri::api::notification および JavaScript の @tauri-apps/api/notification API は削除されました。代わりに @tauri-apps/plugin-notification プラグインを使用して下さい:

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-notification = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_notification::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-notification": "^2.0.0"
}
}
import { sendNotification } from '@tauri-apps/plugin-notification';
sendNotification('Tauri is awesome!');

Rust の Menu API は tauri::menu モジュールに移動され、muda クレート を使用するようにリファクタリング(最適化)されました。

tauri::menu::MenuBuilder の使用

tauri::Menu ではなく、tauri::menu::MenuBuilder を使用して下さい。このコンストラクターは、引数として Manager インスタンス(AppAppHandleWebviewWindow のいずれか)を受け取ることに注意してください。

use tauri::menu::MenuBuilder;
tauri::Builder::default()
.setup(|app| {
let menu = MenuBuilder::new(app)
.copy()
.paste()
.separator()
.undo()
.redo()
.text("open-url", "Open URL")
.check("toggle", "Toggle")
.icon("show-app", "Show App", app.default_window_icon().cloned().unwrap())
.build()?;
Ok(())
})

tauri::menu::PredefinedMenuItem の使用

tauri::MenuItem ではなく、tauri::menu::PredefinedMenuItem を使用して下さい。

use tauri::menu::{MenuBuilder, PredefinedMenuItem};
tauri::Builder::default()
.setup(|app| {
let menu = MenuBuilder::new(app).item(&PredefinedMenuItem::copy(app)?).build()?;
Ok(())
})

tauri::menu::MenuItemBuilder の使用

tauri::CustomMenuItem の代わりに tauri::menu::MenuItemBuilder を使用します:

use tauri::menu::MenuItemBuilder;
tauri::Builder::default()
.setup(|app| {
let toggle = MenuItemBuilder::new("Toggle").accelerator("Ctrl+Shift+T").build(app)?;
Ok(())
})

tauri::menu::SubmenuBuilder の使用

tauri::Submenu の代わりに tauri::menu::SubmenuBuilder を使用します:

use tauri::menu::{MenuBuilder, SubmenuBuilder};
tauri::Builder::default()
.setup(|app| {
let submenu = SubmenuBuilder::new(app, "Sub")
.text("Tauri")
.separator()
.check("Is Awesome")
.build()?;
let menu = MenuBuilder::new(app).item(&submenu).build()?;
Ok(())
})

tauri::Builder::menu は、メニューを構築するために Manager インスタンスが必要であるため、クロージャを受け取るようになりました。詳しくは、ドキュメント(関連文書) を参照して下さい。

Rust の tauri::Builder::on_menu_event API は削除されました。代わりに tauri::App::on_menu_event または tauri::AppHandle::on_menu_event を使用して下さい:

use tauri::menu::{CheckMenuItemBuilder, MenuBuilder, MenuItemBuilder};
tauri::Builder::default()
.setup(|app| {
let toggle = MenuItemBuilder::with_id("toggle", "Toggle").build(app)?;
let check = CheckMenuItemBuilder::new("Mark").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` triggered, do something! is checked? {}", check.is_checked().unwrap());
} else if event.id() == "toggle" {
println!("toggle triggered!");
}
});
Ok(())
})

注意: どのメニュー項目が選択されたのかを確認する方法には二通りあります。ひとつは「項目」をイベント・ハンドラー・クロージャーに移動して ID を比較するやりかた、もうひとつは「項目」を with_id コンストラクターを通してカスタム ID を定義し、その ID 文字列を用いて比較するやりかたです。ご注意下さい。

OS プラグインの移行

Rust の tauri::api::os および JavaScript の @tauri-apps/api/os API は削除されました。代わりに @tauri-apps/plugin-os プラグインを使用して下さい:

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-os = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_os::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-os": "^2.0.0"
}
}
import { arch } from '@tauri-apps/plugin-os';
const architecture = await arch();

Process プラグインの移行

Rust の tauri::api::process および JavaScript の @tauri-apps/api/process API は削除されました。代わりに @tauri-apps/plugin-process プラグイン を使用して下さい:

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-process = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_process::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-process": "^2.0.0"
}
}
import { exit, relaunch } from '@tauri-apps/plugin-process';
await exit(0);
await relaunch();

Shell プラグインの移行

Rust の tauri::api::shell および JavaScript の @tauri-apps/api/shell API は削除されました。代わりに @tauri-apps/plugin-shell プラグインを使用して下さい:

  1. Cargo へ依存関係を追加します:
Cargo.toml
[dependencies]
tauri-plugin-shell = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_shell::init())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-shell": "^2.0.0"
}
}
import { Command, open } from '@tauri-apps/plugin-shell';
const output = await Command.create('echo', 'message').execute();
await open('https://github.com/tauri-apps/tauri');

Tray Icon モジュールの移行

Rust の SystemTray API は表記の一貫性確保のために TrayIcon に改称されています。新しい API は、Rust の「tray モジュール」で参照できます。

tauri::tray::TrayIconBuilder の使用

tauri::SystemTray の代わりに tauri::tray::TrayIconBuilder を使用して下さい。

let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?;

詳しくは TrayIconBuilder の項を参照して下さい。

tauri::SystemTrayMenu ではなく tauri::menu::Menu を、tauri::SystemTraySubmenu ではなく tauri::menu::Submenu を、そして tauri::SystemTrayMenuItem の代わりには tauri::menu::PredefinedMenuItem を使用して下さい。

Tray Events(トレイ・イベント)

tauri::SystemTray::on_eventtauri::tray::TrayIconBuilder::on_menu_eventtauri::tray::TrayIconBuilder::on_tray_icon_event とに分割されました:

use tauri::{
menu::{MenuBuilder, MenuItemBuilder},
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
};
tauri::Builder::default()
.setup(|app| {
let toggle = MenuItemBuilder::with_id("toggle", "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!("toggle clicked");
}
_ => (),
})
.on_tray_icon_event(|tray, event| {
if let TrayIconEvent::Click {
button: MouseButton::Left,
button_state: MouseButtonState::Up,
..
} = event
{
let app = tray.app_handle();
if let Some(webview_window) = app.get_webview_window("main") {
let _ = webview_window.show();
let _ = webview_window.set_focus();
}
}
})
.build(app)?;
Ok(())
})

Updater プラグインの移行

自動更新チェック機能を備えた組み込みダイアログは削除されました。代わりに、Rust および JavaScript API を使用し、更新のチェックおよびインストールを行なってください。

Rust の tauri::updater および JavaScript の @tauri-apps/api-updater API は削除されました。@tauri-apps/plugin-updater を使用してカスタム・アップデーター・ターゲットを設定するには:

  1. Cargo へ依存関係を追加します:
[dependencies]
tauri-plugin-updater = "2"
  1. JavaScript または Rust のプロジェクトで使用します:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_updater::Builder::new().build())
}
package.json
{
"dependencies": {
"@tauri-apps/plugin-updater": "^2.0.0"
}
}
import { check } from '@tauri-apps/plugin-updater';
import { relaunch } from '@tauri-apps/plugin-process';
const update = await check();
if (update?.available) {
console.log(`Update to ${update.version} available! Date: ${update.date}`);
console.log(`Release notes: ${update.body}`);
await update.downloadAndInstall();
// requires the `process` plugin
await relaunch();
}

Path to Tauri Manager の移行

Rust の tauri::api::path モジュール機能および tauri::PathResolvertauri::Manager::path に移動されました:

use tauri::{path::BaseDirectory, Manager};
tauri::Builder::default()
.setup(|app| {
let home_dir_path = app.path().home_dir().expect("failed to get home dir");
let path = app.path().resolve("path/to/something", BaseDirectory::Config)?;
Ok(())
})

新しい Window API への移行

Rust 関連では、Window の名称が WebviewWindow に、そのビルダー名 WindowBuilderWebviewWindowBuilder に、WindowUrl の名称が WebviewUrl に変更されました。

さらには、上位の「ウィンドウ 親 API」をサポートするために、Manager::get_window 関数は get_webview_windowに、ウィンドウズの parent_window API が parent_raw に改称されています。

JavaScript 関連では、WebviewWindow クラスが @tauri-apps/api/webviewWindow パスにエクスポートされるようになりました。

onMenuClicked 関数は削除されましたが、代わりに JavaScript でメニューを作成するとメニュー・イベントを捕捉できます。

埋め込み追加ファイルの移行(リソース)

JavaScript 関連では、File System プラグインの移行 を実行することを忘れないでください。 さらに、許可の移行 の項で、「バージョン 1」許可リストに加えられた変更の内容にも注意してください。

Rust 関連では、Path to Tauri Manger の移行 の説明内容を必ず実行してください。

埋め込み外部バイナリの移行(サイドカー・コンテナ)

Tauri バージョン 1(v1)では、外部バイナリとその引数は許可リストで定義されていました。バージョン 2(v2)では、新しい許可システムを使用します。詳細については、許可の移行 を参照してください。

JavaScript 関連では、Shell プラグインの移行 の内容を必ず実行して下さい。

Rust 関連では、tauri::api::process API が削除されています。代わりに tauri_plugin_shell::ShellExt および tauri_plugin_shell::process::CommandEvent API を使用してください。使用法については、外部バイナリの埋め込み ガイドを参照して下さい。

「process-command-api」機能フラグは バージョン 2(v2)で削除されました。そのため、外部バイナリの実行に、この機能を Tauri 構成で定義する必要がなくなりました。

許可の移行

バージョン 1 の許可リスト(「v1 許可リスト」)は、全く新しい許可システムに書き直されました。これにより、個々のプラグインで機能し、「マルチウィンドウ」と「リモート URL サポート」で、より柔軟な設定が可能になりました。 この新しい許可システムはアクセス制御リスト (ACL) のように機能し、コマンドの許可/拒否、特定のウィンドウとドメインのセットへの許可割り当て、アクセス範囲の定義などを行なえます。

アプリへの許可を設定するには、src-tauri/capabilities フォルダ内に「機能ファイル(capability file)」を作成します。そうすると、Tauri があなたに代わって他のすべてを自動的に設定します。

migrate CLI コマンドは、v1 許可リストを自動的に解析し、関連する機能ファイルを生成します。

許可と機能の詳細については、セキュリティ関連文書を参照してください。

【※ この日本語版は、「Nov 13, 2024 英語版」に基づいています】


Doc-JP 2.00.00


© 2025 Tauri Contributors. CC-BY / MIT