接入桌面壳单实例唤醒

Tauri 桌面壳启用 single-instance 插件

重复启动只唤醒并聚焦已有主窗口

禁止把第二实例参数透传给 H5

补充单实例检查测试和架构文档
This commit is contained in:
2026-06-18 08:07:50 +08:00
parent 88e363586e
commit 94046153c6
6 changed files with 61 additions and 0 deletions

View File

@@ -134,6 +134,8 @@ const requiredPermissions = [
];
const requiredBuildCommands = ['host_bridge_request'];
const requiredMainSnippets = [
'tauri_plugin_single_instance::init',
'resolve_desktop_single_instance_action',
'tauri_plugin_clipboard_manager::init()',
'TrayIconBuilder::with_id',
'register_desktop_tray(app)',
@@ -216,6 +218,21 @@ if (!cargoManifest.includes('features = ["tray-icon"]')) {
throw new Error('desktop shell must enable the Tauri tray-icon feature');
}
if (!cargoManifest.includes('tauri-plugin-single-instance = "2.4.2"')) {
throw new Error('desktop shell must depend on tauri-plugin-single-instance');
}
if (
main.indexOf('tauri_plugin_single_instance::init') >
main.indexOf('tauri_plugin_clipboard_manager::init()')
) {
throw new Error('desktop shell must register the single-instance plugin first');
}
if (main.includes('single-instance",') || main.includes('"single-instance"')) {
throw new Error('desktop shell must not emit secondary-instance argv to H5');
}
const icon = fs.readFileSync(iconPath);
if (icon.length < 10000) {
throw new Error('desktop shell icon must use a real brand asset');