node-webkit設置程序開機啓動

上一篇寫了打包腳本中設置安裝時開機啓動,這一篇寫由node.js來控制程序是否隨windows系統開機啓動.node

 首頁在項目package.json中加入對windows-shortcuts的引用(手動下載地址https://github.com/j201/windows-shortcuts)git

 "dependencies": {github

    "windows-shortcuts":"*"npm

  }json

npm install windows-shortcuts,加入快捷方式的第三方包.再判斷系統,根據系統生成啓動目錄地址,最後用window-shortcuts生成快捷方式,在啓動目錄建立成功後就能開機啓動了.windows

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 傳入參數,寫註冊表也行.ui

在寫這個過程當中,找了些資料,開始用的node.js的自帶模塊fs,的fs.symlink軟連接來生成快捷方式,發現只有把連接命名爲exe後綴的纔會顯示圖標,其它的能用,但圖片是空的.並且這個只能在win7,win8這些系統中用,在xp下會報錯,錯誤代碼:ENOSYS,由於XP不支持fs.symlink.spa

相關文章
相關標籤/搜索