electron/nwjs如何加入开机启动项?auto-launch如何使用?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
关于开机启动的功能需求,苏南大叔准备写几篇electron
的文章。如果从单纯的实用性角度上来说的话,本篇文章还是挺简单的,就几行代码而已。但是如果从原理上分析的话,就可以写好几篇文章了。所以,苏南大叔准备从原理上深入分析“开机启动”。
本系列文章的实验标本是:node-auto-launch@5.0.5
。本文中是用electron
进行测试的,其实nwjs
也是适用的,原理上都是一致的。
安装node-auto-launch
node-auto-launch
的github
地址是:
这个库有些奇怪的地方是:在github
上面叫做node-auto-launch
,但是在npm
库里面却叫做auto-launch
。因为是个npm
库,所以,安装方式也就非常简单了。
npm i auto-launch --save
注意参数是--save
,而不是--save-dev
,不解释。
使用方式
auto-launch
的基本使用姿势很简单。可以从如下几个角度来分析:
基础定义
主进程main.js
:
var AutoLaunch = require('auto-launch');
var demo = new AutoLaunch({
name: 'demo',
//path: '/Applications/Minecraft.app',
});
这里就说一下这个path
,官方的范例里面写上了这个path
。不过经过苏南大叔的实验,个人建议大家不用写这个值。因为不写的话,是自动获取。写上的话,就是个固定的字符串。这个路径值很显然并不是固定的,这里的原因我也不多讲,大家都明白。所以,写个name
就好了,不要写path
,这个是苏南大叔说的。
不过有人说,这个path
不写的话,会报错...反正苏南大叔这边没报错...
在这个类初始化的阶段,其实还有很多其它参数,大家可以通过查看源码,就可以看到更多不同的参数。
加入开机启动项
demo.enable();
移除开机启动项
demo.disable();
检测开机启动项状态
demo.isEnabled().then(function(isEnabled){
if(isEnabled){
return;
}
//demo.enable();
})
.catch(function(err){
// handle error
});
总结
本文的测试环境是win10
,而且涉及到了写注册表的动作,所以测试过程中,会被某数字公司家的产品拦截,请注意点击放行注册表操作。
在mac
系统和linux
系统下,也是相同的用法,只不过在底层实现上是不一样的。那么,具体的底层实现上,有何区别呢?请看苏南大叔的后续auto-launch
系列文章。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
那么请问设置了开机自启动,如何检测某次启动为开机自启动呢?
您好,
环境:
windows 10
electron: 5.0.6
electron-builder: 19.8.0
开发环境下没问题,打包出来后process的env变成空了,而在AutoLaunchWindows -> winreg -> getRegExePath 方法中会用到path.join(process.env.windir, 'system32', 'reg.exe');
这时候会提示
"The "path" argument must be of type string. Received type undefined",就是path.join第一个参数不接受undefined。
您有碰到类似的问题吗?
没见过,env参数是你自己传递进去的吧,你确定打包之后的,你还传递参数了么?
不写path会报错哦
D:\project\nwjs\nwjs-sdk-v0.14.7-win-x64\app\node_modules\auto-launch\dist\index.js:33 Uncaught Error: You must give a path (this is only auto-detected for NW.js and Electron apps)