版权声明:本文为CSDN博主「偏振万花筒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
https://blog.csdn.net/weixin_44325637/article/details/100729131
参考文档:
https://newsn.net/say/electron-auto-launch.html
方法来源于官方API:
https://electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows
这是官方的内容app.setLoginItemSettings(settings) macOS Windows
settings Object
openAtLogin Boolean
(可选) – true在登录时启动应用,false 移除应用作为登录启动项 。默认为 false.openAsHidden Boolean
(可选) macOS – true 表示以隐藏的方式启动应用。 默认为false。 用户可以从系统首选项中编辑此设置, 以便在打开应用程序时检查 app.getLoginItemSettings().wasOpenedAsHidden 以了解当前值。 该配置在 MAS 构建 时不可用。path
String (可选) Windows – 在登录时启动的可执行文件。默认为 process.execPath.args
String Windows – 要传递给可执行文件的命令行参数。默认为空数组。注意用引号将路径换行。
设置应用程序的登录项设置。
如果需要在使用Squirrel的 Windows 上使用 Electron 的 autoUpdater ,你需要将启动路径设置为 Update.exe,并传递指定应用程序名称的参数。 例如:
const appFolder = path.dirname(process.execPath)
const updateExe = path.resolve(appFolder, '..', 'Update.exe')
const exeName = path.basename(process.execPath)</p>
app.setLoginItemSettings({
openAtLogin: true,
path: updateExe,
args: [
'--processStart',
"${exeName}"
,
'--process-start-args',
]})
这是自己的代码:
划重点:openAtLogin参数的true、false不能通过传参来解决,只能写两个方法(当然也不知道是不是自己电脑的BUG,待各位验证)
主进程
import ipcMain from ‘electron’;
const appFolder = path.dirname(process.execPath);
const updateExe = path.resolve(appFolder, ‘test.exe’);
ipcMain.on(‘changeAutoStart-open’,()=>{
app.setLoginItemSettings({
openAtLogin: true,
path: updateExe,
args: []
});
});
ipcMain.on(‘changeAutoStart-closed’,()=>{
app.setLoginItemSettings({
openAtLogin: false,
path: updateExe,
args: []
});
})
渲染进程
// 对自动启动场景,进行处理
if(‘autoStart’ == name){
if(checked){
ipcRenderer.send(‘changeAutoStart-open’);
} else {
ipcRenderer.send(‘changeAutoStart-closed’);
}
};