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版权协议,转载请附上原文出处链接和本声明。