原生
electron原生自啓動app.setLoginItemSettings
html
app.setLoginItemSettings({ openAtLogin: true, // Boolean 在登陸時啓動應用 openAsHidden: true, // Boolean (可選) mac 表示以隱藏的方式啓動應用。~~~~ // path: '', String (可選) Windows - 在登陸時啓動的可執行文件。默認爲 process.execPath. // args: [] String Windows - 要傳遞給可執行文件的命令行參數。默認爲空數組。注意用引號將路徑換行。 })
自實現
經過修改註冊表來實現開機自啓和經過連接調起應用(相似百度網盤點擊鏈接打開應用程序)node
node-regedit yarn add regedit
git
將下方例子中的electronApp替換爲本身的應用別名(能夠不爲exe名稱)github
開機自啓
const regedit = require('regedit'); const { app } = require('electron'); const path = require('path'); // 開機自啓動 // 查看開機自啓註冊表是否已經註冊electronApp regedit.list('HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run', (err, data) => { if (err) { console.log(err) } if (!data['HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'].values.electronApp || data['HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'].values.electronApp !== app.getPath('exe')) { // 未註冊或註冊地址與現地址不一致則 進行註冊 regedit.putValue({ 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run': { 'electronApp': { value: app.getPath('exe'), type: 'REG_SZ' } } }, (error) => { if (error) console.log(error) }) } });
經過連接調起應用
const regedit = require('regedit'); const { app } = require('electron'); /** * 下文中的`electronAPP`替換爲本身須要的喚起名 * 使用時直接在html中使用<a href='electronAPP://'>喚起app</a> */ let url = app.getPath('exe'); // 獲取可運行exe存放目錄 function setPath (url) { regedit.putValue({ 'HKLM\\SOFTWARE\\Classes\\electronAPP': { // 設置註冊表url調用electronApp 'defaule': { value: 'electronAPP', // 設置點擊url的彈出框名字(表現很差) type: 'REG_DEFAULT' }, 'URL Protocol': { value: '', type: 'REG_SZ' }, 'path': { value: `${url}`, type: 'REG_SZ' } }, 'HKLM\\SOFTWARE\\Classes\\electronAPP\\shell\\open\\command': { 'defaule': { value: `"${url}" "$1"`, // 須要喚起的應用程序路勁 type: 'REG_DEFAULT' } } }, (putErr) => { console.log(putErr) }) } if (url) { // 判斷啓動url是否正確(用戶從新安裝,並將安裝目錄修改) regedit.list('HKLM\\SOFTWARE\\Classes\\electronAPP', (listErr, docData) => { if (listErr) { regedit.createKey(['HKLM\\SOFTWARE\\Classes\\electronAPP\\shell\\open\\command'], (createErr) => { if (!createErr) { setPath(url) } }) } else { if (docData['HKLM\\SOFTWARE\\Classes\\electronAPP'].values.path.value !== url) { setPath(url) } } }) }