electron开发遇到的问题

electron应用禁止多开

使用electron框架开发客户端应用时,遇到禁用多开需求,报读发现很多回答太老了,翻了下官方文档,在主进程模块APP中找到了新的API实现。

官网例子

const { app } = require('electron')
let myWindow = null

if (!gotTheLock) {
  app.quit()
} else {
  app.on('second-instance', () => {
    // 有人试图运行第二个实例,我们应该关注我们的窗口
    if (myWindow) {
      if (myWindow.isMinimized()) myWindow.restore()
      myWindow.focus()
    }
  })

  // 创建 myWindow, 加载应用的其余部分, etc...
  app.whenReady().then(() => {
    myWindow = createWindow()
  })
}

实际使用

hide时打开可显示

//禁止多开 点击打开原来应用
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
  app.quit()
}
else {
  app.on('second-instance', () => {
    // 有人试图运行第二个实例,我们应该关注我们的窗口
    if (win) {
      if (win.isMinimized()) win.restore()
      if (!win.isVisible()) win.show()
      win.focus()
    }
  })
}

自动更新功能

win端 mac端
一些设置

autoUpdater.autoDownload = false;
autoUpdater.autoInstallOnAppQuit = false;

在这里插入图片描述

electron-builder 打包相关参数

https://blog.csdn.net/qq_43706089/article/details/122632503
https://www.php.cn/div-tutorial-411690.html
https://blog.csdn.net/qq_38830593/article/details/89843722
https://blog.csdn.net/sllailcp/article/details/103233903
代码签名


防止子页面重复打开

按钮点击关于触发关于页重复创建

let settingWin = null;
//关于页创建函数
function settingPage(){
  settingWin = new BrowserWindow({
    frame:false,
    ... ...
    resizable:false,
    webPreferences: {
      // devTools: true,
      nodeIntegration: true,
      allowRunningInsecureContent: (serve) ? true : false,
      contextIsolation: false,
    },
  });
  ... ...
};
//关于页打开处理
if (settingWin  === null ){
settingPage();
}
else {
  settingWin.show()
}
//关于页关闭
settingWin.close();
settingWin = null;

写注册表

环境变量所在注册表位置如下:

用户变量所在位置:HKEY_CURRENT_USER\Environment
系统变量所在位置:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment

!macro customInstall
  DeleteRegKey HKCR "vue-cli-electron"
  WriteRegStr HKCR "vue-cli-electron" "" "URL:vue-cli-electron"
  WriteRegStr HKCR "vue-cli-electron" "URL Protocol" ""
  WriteRegStr HKCR "vue-cli-electron\shell" "" ""
  WriteRegStr HKCR "vue-cli-electron\shell\Open" "" ""
  WriteRegStr HKCR "vue-cli-electron\shell\Open\command" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME} %1"
!macroend

!macro customUnInstall
  DeleteRegKey HKCR "vue-cli-electron"
!macroend

参见https://segmentfault.com/a/1190000040281334?sort=votes
https://www.electron.build/configuration/nsis#custom-nsis-script
https://zhuanlan.zhihu.com/p/349455443


版权声明:本文为baidu_37336262原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。