上一篇写了打包脚本中设置安装时开机启动,这一篇写由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.
时间: 2024-10-20 07:23:38