上一篇写了打包脚本中设置安装时开机启动,这一篇写由node.js来控制程序是否随windows系统开机启动.
首页在项目package.json中加入对windows-shortcuts的引用(手动下载地址https://github.com/j201/windows-shortcuts)
"dependencies": {
"windows-shortcuts":"*"
}
在npm install windows-shortcuts,加入快捷方式的第三方包.再判断系统,根据系统生成启动目录地址,最后用window-shortcuts生成快捷方式,在启动目录创建成功后就能开机启动了.
var shortcut = require('windows-shortcuts');
var fs=require("fs");
//windows下的开机启动
if(process.platform.match(/^win/)){
//开机启动目录
var startupMenu="";
//APPDATA目录中有Roming的是win7,win8等同类系统开机目录
if(/Roaming/.test(process.env.APPDATA)){
startupMenu=process.env.APPDATA+"\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\";
}else{
//winXp等同类系统开机目录
startupMenu=process.env.USERPROFILE+"\\「开始」菜单\\程序\\启动\\";
}
//在目录下生成的快捷方式名称
var startupTarget=startupMenu+"程序名.lnk";
//要复制快捷方式过去的源程序
var sourcePrograme=__dirname+"\\nw.exe";
//存在就删除,不存在就创建
if(fs.existsSync(startupTarget)){
fs.unlink(startupTarget,function(err){
if(err){
console.error("取消开机启动出错",err);
}
})
}else{
shortcut.create(startupTarget,sourcePrograme,function(err){
if(err){
console.error("设置开机启动出错",err);
}
})
}
}
还有一种方式,调用regedit 传入参数,写注册表也行.
在写这个过程中,找了些资料,开始用的node.js的自带模块fs,的fs.symlink软链接来生成快捷方式,发现只有把链接命名为exe后缀的才会显示图标,其它的能用,但图片是空的.而且这个只能在win7,win8这些系统中用,在xp下会报错,错误代码:ENOSYS,因为XP不支持fs.symlink.
来源:oschina
链接:https://my.oschina.net/u/265765/blog/332010