Electron Builder 主要用來作三件事:node
建立應用程序可執行文件(.app
)git
建立Squirrel更新包(.zip
)github
建立磁盤鏡像(.dmg
)npm
應用程序須要代碼簽名, 不然自動更新機制不能正常工做. 爲了演示這個過程, 咱們經過鑰匙串建立一個測試證書.json
進入「鑰匙串訪問」程序, 以下圖:c#
輸入證書名稱「Electron Auto Update」, 而且證書類型選擇「代碼簽名」, 而後點擊「建立」按鈕完成建立.windows
打包須要用到證書的名稱, 設置環境變量, 以在終端中使用這個證書api
export CSC_NAME="Electron Auto Update"
最後使用 electron-builder
是, 它會使用這個證書名字, 並用該證書對代碼進行簽名.服務器
Electron 使用 Squirrel.Mac 做爲底層的自動更新框架. 自動更新過程包含幾個步驟:session
客戶端請求服務器詢問是否有新的版本
服務器應答以個JSON文件返回更新信息
客戶端對比本地版本和最新版本, 若是有更新執行更新過程.
Electron 的主進程模塊須要包含 auto-updater
模塊.
const autoUpdater = require('auto-updater')
auto-updater
在開發模式下不可用
還能夠添加相關事件監聽器:
# 更新可用, 能夠經過通知系統告知用戶有更新可用 autoUpdater.addListener("update-available", function(event) { ... }); # 更新下載完成後, 可提示用戶重啓應用程序 autoUpdater.addListener("update-downloaded", function(event, releaseNotes, releaseName, releaseDate, updateURL) { ... }); # 更新錯誤 autoUpdater.addListener("error", function(error) { ... }); # 正在檢查更新 autoUpdater.addListener("checking-for-update", function(event) { ... }); # 沒有新版本 autoUpdater.addListener("update-not-available", function(event) { ... });
下一步, 給 Squirrel 配置更新服務器URL:
# 這裏設置更新服務器域名或IP地址 const = UPDATE_SERVER = ''; var updateFeed = `http://${UPDATE_SERVER}/updates/latest`; const appVersion = require('./package.json').version; const feedURL = updateFeed + '?v=' + appVersion; autoUpdater.setFeedURL(feedURL);
最後一切就緒, 執行檢查:
# 能夠在每次啓動應用程序時檢查一次, 而且固定間隔檢查一次(好比一週, 依據你的應用程序更新頻率) autoUpdater.checkForUpdates();
服務器應答:
200
有更新可用, 並返回JSON更新描述信息
204
無更新
關於更服務器, 有幾個現成的服務器實現, 也能夠本身寫一個.
electron-release-server 是最簡單最好用的一個
~/servers/electron-release-server$ npm start --prod > electron-release-server@1.4.3 start /home/www/servers/electron-release-server > node app.js Warning: connect.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process. Warning: connect.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process. .-..-. Sails <| .-..-. v0.12.13 |\ /|.\ / || \ ,' |' \ .-'.-==|/_--' `--'-------' __---___--___---___--___---___--___ ____---___--___---___--___---___--___-__ Server lifted in `/home/www/servers/electron-release-server` To see your app, visit http://localhost:5014 To shut down Sails, press <CTRL> + C at any time. ------------------------------------------------------- :: Mon May 01 2017 21:16:24 GMT+0800 (CST) Environment : production Port : 5014 ------------------------------------------------------- Destroyed version: { assets: [], channel: 'beta', name: '0.0.2', notes: '第一個升級包', createdAt: '2017-05-01T13:23:01.000Z', updatedAt: '2017-05-01T13:23:01.000Z' }
機制是同樣的, 配置過程有差別, 詳情參考官方文檔, 或Google.