SuperAPI AI 工具集

tauri-app-single-instance

编程与开发

查看项目

更新于 10-16 07:54

技能介绍

用途

该技能用于在 Tauri v2 应用中实现单实例(single-instance)行为,防止同一应用同时运行多个实例。当用户再次启动应用时,已运行的实例会被激活,而不是打开新的进程。

主要能力

  • 阻止多个应用实例同时运行。
  • 处理第二次启动时传入的命令行参数。
  • 在重新启动时聚焦已存在的窗口。
  • 可与深链接(deep-linking)配合,将 myapp:// 形式的 URL 从第二个实例路由到已有窗口。
  • 可与 CLI 插件配合,将解析后的参数转发给正在运行的应用。

使用方式

安装单实例插件:

cargo add tauri-plugin-single-instance

在 Tauri builder 中注册插件并传入回调:

tauri::Builder::default()
    .plugin(tauri_plugin_single_instance::init(|app, args, _cwd| {
        // Focus the main window when a second instance is launched
        if let Some(window) = app.get_webview_window("main") {
            window.set_focus().unwrap();
        }
        // Forward args to the running instance
        println!("Second launch args: {:?}", args);
    }))

回调接收三个参数:应用句柄(app handle)、命令行参数(args)以及第二次启动时的工作目录(cwd)。回调执行完成后,第二个实例会自动退出。

适用场景

  • 用户提到需要防止多个应用实例运行。
  • 需要处理第二次启动的参数或深链接。
  • 需要在重新启动时聚焦已有窗口。
  • 触发短语包括:"single instance"、"prevent duplicate"、"second launch"、"one instance only"。

限制

资料中未提供关于平台兼容性、性能影响或额外配置要求的说明。