单实例锁
单实例锁保证同一份用户数据只跑一个应用进程。用户再次双击图标时,新进程立刻退出,旧进程收到通知并把自己的窗口带到前面。
const gotLock = app.requestSingleInstanceLock();
if (!gotLock) {
app.quit();
} else {
app.on('second-instance', () => {
const win = BrowserWindow.getAllWindows()[0];
if (win) {
if (win.isMinimized()) win.restore();
win.show();
}
});
}
requestSingleInstanceLock 在 ready 之前调用。锁的范围和 userData 目录绑定。给测试版设置另一份 userData 后,它可以和正式版同时运行。
Windows 上,第二次启动的命令行参数会交给 second-instance,深度链接就放在这些参数里。macOS 的协议唤起走 open-url,不走这个参数列表。