给 Electron 编写的应用增加开机自启动
最近在使用 electron 写一个桌面端日历的软件,需要做一个开机自启动的功能,发现 electron 官方文档上直接提供了对应的 API
app.setLoginItemSettings(options)
- 具体的使用方式可以看文档,文档地址:https://www.electronjs.org/zh/docs/latest/api/app#appsetloginitemsettingssettings-macos-windows,
因为只需要实现开启自启动,所以直接贴代码,如下:
app.setLoginItemSettings({
openAtLogin: true
})
然后使用 electron-builder
进行项目打包,在打包的配置当中,把存储日历的一些图片目录添加到了打包后到文件当中了,通过 process.cwd()
的方式就可以取到打包之后的目录中的资源文件
开机自启动找不到资源目录
打包构建,安装到自己的电脑上,开机自启动后,发现控制台直接报错,找不到资源文件夹的目录,经过一番搜索,发现原来开机自启动,process.cwd()
获取到的路径并不是软件安装的目录,知道 bug 产生的原因就可以解决了,在 electron 的 API 目录当中,有对应的获取软件安装位置的 API,直接拿来用即可。
在主进程中监听渲染进行获取 APP 安装目录的事件,代码如下:
ipcMain.handle('get-path', () => {
return dirname(app.getPath('exe'))
})
在渲染进程当中直接调用来获取软件的安装目录,代码如下,注意 ipcRenderer.invoke
返回的是一个 Pormise
, 为了方便处理,我这里直接使用 await
进行了处理:
const BASE_DIR = await ipcRenderer.invoke('get-path')