上一篇寫了打包腳本中設置安裝時開機啓動,這一篇寫由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