首页 > 代码库 > node-webkit设置程序开机启动

node-webkit设置程序开机启动

上一篇写了打包脚本中设置安装时开机启动,这一篇写由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.

node-webkit设置程序开机启动