electron限制只能启动一个应用

4,099 阅读1分钟
import { 
  app, 
  BrowserWindow,
  Tray,
  Menu
} from 'electron'

if (process.env.NODE_ENV !== 'development') {
  global.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
}

let mainWindow
const winURL = process.env.NODE_ENV === 'development'
  ? `http://localhost:9080`
  : `file://${__dirname}/index.html`

function createWindow () {
  mainWindow = new BrowserWindow({
    height: 600,
    width: 1000,
    center: true, // 是否出现在屏幕居中的位置
    useContentSize: true
  })

  mainWindow.loadURL(winURL)
  // mainWindow.webContents.openDevTools();//打包后可打开调试窗口

  mainWindow.on('closed', () => {
    mainWindow = null
  })
}

app.on('ready', createWindow)
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})
app.on('activate', () => {
  if (mainWindow === null) {
    createWindow()
  }
})

//关键代码限制只能开启一个应用(4.0以下版本)
const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => {
  if (mainWindow) {
    if (mainWindow.isMinimized()) mainWindow.restore()
    mainWindow.focus()
    mainWindow.show()
  }
});
if (shouldQuit) {
  app.quit()
};

//限制只能开启一个应用(4.0以上版本)
//const gotTheLock = app.requestSingleInstanceLock()
//if (!gotTheLock) {
//  app.quit()
//} else {
//  app.on('second-instance', (event, commandLine, workingDirectory) => {
//    // 当运行第二个实例时,将会聚焦到mainWindow这个窗口
//    if (mainWindow) {
//      if (mainWindow.isMinimized()) mainWindow.restore()
//      mainWindow.focus()
//      mainWindow.show()
//    }
//  })
//}