From b5df09cfd20b00777c3e5695f5f3aec0bc393f40 Mon Sep 17 00:00:00 2001 From: MoeSnowyFox Date: Wed, 27 Aug 2025 20:29:39 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=9D=E8=AF=81=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=8D=95=E4=BE=8B=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/dist-electron/main.js | 17 +++++++++++++++-- frontend/dist-electron/preload.js | 2 +- frontend/electron/main.ts | 17 ++++++++++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/frontend/dist-electron/main.js b/frontend/dist-electron/main.js index e24a5de..64ce4ae 100644 --- a/frontend/dist-electron/main.js +++ b/frontend/dist-electron/main.js @@ -70,10 +70,10 @@ function restartAsAdmin() { // 使用PowerShell以管理员权限启动 (0, child_process_1.spawn)('powershell', [ '-Command', - `Start-Process -FilePath "${exePath}" -ArgumentList "${args.join(' ')}" -Verb RunAs` + `Start-Process -FilePath "${exePath}" -ArgumentList "${args.join(' ')}" -Verb RunAs`, ], { detached: true, - stdio: 'ignore' + stdio: 'ignore', }); electron_1.app.quit(); } @@ -262,6 +262,19 @@ electron_1.ipcMain.handle('restart-as-admin', () => { restartAsAdmin(); }); // 应用生命周期 +// 保证应用单例运行 +const gotTheLock = electron_1.app.requestSingleInstanceLock(); +if (!gotTheLock) { + electron_1.app.quit(); + process.exit(0); +} +electron_1.app.on('second-instance', () => { + if (mainWindow) { + if (mainWindow.isMinimized()) + mainWindow.restore(); + mainWindow.focus(); + } +}); electron_1.app.whenReady().then(() => { // 检查管理员权限 if (!isRunningAsAdmin()) { diff --git a/frontend/dist-electron/preload.js b/frontend/dist-electron/preload.js index a6ff6f1..2b84432 100644 --- a/frontend/dist-electron/preload.js +++ b/frontend/dist-electron/preload.js @@ -34,5 +34,5 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', { }, removeDownloadProgressListener: () => { electron_1.ipcRenderer.removeAllListeners('download-progress'); - } + }, }); diff --git a/frontend/electron/main.ts b/frontend/electron/main.ts index 9b1e8c1..6252a69 100644 --- a/frontend/electron/main.ts +++ b/frontend/electron/main.ts @@ -271,6 +271,21 @@ ipcMain.handle('restart-as-admin', () => { }) // 应用生命周期 +// 保证应用单例运行 +const gotTheLock = app.requestSingleInstanceLock(); + +if (!gotTheLock) { + app.quit(); + process.exit(0); +} + +app.on('second-instance', () => { + if (mainWindow) { + if (mainWindow.isMinimized()) mainWindow.restore(); + mainWindow.focus(); + } +}); + app.whenReady().then(() => { // 检查管理员权限 if (!isRunningAsAdmin()) { @@ -279,7 +294,7 @@ app.whenReady().then(() => { // 这里先创建窗口,让用户选择是否重新启动 } createWindow() -}) +}); app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit()