|
@@ -11,11 +11,30 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
const __dirname = dirname(__filename);
|
|
const __dirname = dirname(__filename);
|
|
|
const execAsync = promisify(exec);
|
|
const execAsync = promisify(exec);
|
|
|
|
|
|
|
|
|
|
+let win=null;
|
|
|
|
|
+
|
|
|
|
|
+// -------------- 单实例检查 ------------
|
|
|
|
|
+// 1. 请求单实例锁
|
|
|
|
|
+const gotTheLock = app.requestSingleInstanceLock();
|
|
|
|
|
+if (!gotTheLock) {
|
|
|
|
|
+ // 抢锁失败 -> 立即退出
|
|
|
|
|
+ app.quit();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 2. 抢锁成功 -> 监听后续启动事件
|
|
|
|
|
+app.on('second-instance', (ev, cmd, cwd, additionalData) => {
|
|
|
|
|
+ // 把已存在的窗口提到最前
|
|
|
|
|
+ if (win) {
|
|
|
|
|
+ if (win.isMinimized()) win.restore();
|
|
|
|
|
+ win.focus();
|
|
|
|
|
+ }
|
|
|
|
|
+ // todo 也可以在这里解析 cmd 中的参数,做打开文件等操作
|
|
|
|
|
+});
|
|
|
// -------------- 创建窗口 --------------
|
|
// -------------- 创建窗口 --------------
|
|
|
function createWindow() {
|
|
function createWindow() {
|
|
|
const isMac = process.platform === 'darwin';
|
|
const isMac = process.platform === 'darwin';
|
|
|
|
|
|
|
|
- const win = new BrowserWindow({
|
|
|
|
|
|
|
+ win = new BrowserWindow({
|
|
|
show: false,
|
|
show: false,
|
|
|
frame: false,
|
|
frame: false,
|
|
|
titleBarStyle: 'hidden',
|
|
titleBarStyle: 'hidden',
|