原文:https://github.com/electron/electron/blob/master/docs/api/auto-updater.md
譯者:Lin
使應用程序自己自動更新。
進程:主進程
autoUpdater模塊提供一個Squirrel框架的接口。
通過使用這些項目之一你可以快速啟動一個多平臺發(fā)布服務器來發(fā)布你的應用:
- nuts: 一個智能的發(fā)布你的應用的服務,使用GitHub作為后臺。使用Squirrel自動更新(Mac和Windows)
- electron-release-server: 一個全功能的自己托管的electron應用發(fā)布服務,兼容自動更新
- squirrel-updates-server: 一個基于使用GitHub的Squirrel.Mac和Squirrel.Windows發(fā)布的簡單的node.js的服務
- squirrel-release-server: 一個基于Squirrel.Windows的簡單的PHP應用,通過folder. Supports讀取更新信息進行更新
<h2 id="platform-notices">平臺的注意事項</h2>
雖然autoUpdater對不同平臺提供一個統(tǒng)一的借口,但是每一個平臺都有著細微的差別。
<h3 id="macOS">MacOS<h3>
MacOS中,autoUpdater模塊是基于Squirrel.Mac的,這意味著你不需要任何特殊的設置就能讓他工作。對于服務器端的要求,你可以閱讀Server Support。請注意,App Transport Security (ATS) 適用于將所有的請求都作為更新過程的一部分。應用如果需要禁用ATS可以將NSAllowsArbitraryLoads添加到他們應用的plist文件中。
注意:你的應用必須在MacOS上注冊自動更新。這是Squirrel.Mac的要求。
<h3 id="windows">Windows</h3>
Windows中,你需要在你使用autoUpdater之前安裝你的應用到用戶的機器上,所以建議你使用electron-winstaller,electron-builder或者grunt-electron-installer來打包生成一個Windows安裝包。
當使用electron-winstaller或者electron-builder時請確定你沒有在第一次運行時嘗試更新你的應用(可以查看這個問題的更多信息)。也同樣建議使用electron-squirrel-startup來獲取你應用程序的桌面快捷方式。
使用Squirrel生成安裝程序將會使用格式為com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE的Application User Model ID創(chuàng)建一個快捷圖標,例如com.squirrel.slack.Slack和com.squirrel.code.Code。你需要使用同樣的ID調用你應用的app.setAppUserModelId接口,否則Windows將不允許你的應用程序放置在任務欄中。
服務端的設置也是不同于MacOS。你可以閱讀Squirrel.Windows的文檔來獲取更多信息。
<h3 id="linux">Linux</h3>
Linux中沒有內置支持自動更新,所以建議使用發(fā)布包管理器來更新你的應用。
<h2 id="events">事件</h2>
autoUpdater對象分發(fā)下面的事件:
<h3 id="event-error">事件:'error'</h3>
返回值:
-
errorError類型
更新出錯時被分發(fā)。
<h3 id="event-checking-for-update">事件:'checking-for-update'</h3>
檢查更新是否啟動時被分發(fā)。
<h3 id="event-update-available">事件:'update-available'</h3>
當有可用的更新時被分發(fā)。這個更新將會被自動下載。
<h3 id="event-update-not-available">事件:'update-not-available'</h3>
當有沒有可用的更新時被分發(fā)。
<h3 id="event-update-downloaded">事件:'update-downloaded'</h3>
返回值:
-
eventEvent類型 -
releaseNotesString類型 -
releaseNameString類型 -
releaseDateDate類型 -
updateURLString類型
當一個更新下載完成時被分發(fā)。
Windows中只有releaseName是有效的。
<h2 id="methods">方法</h2>
autoUpdater對象有以下的方法:
<h3 id="autoUpdater-setFeedURL">autoUpdater.setFeedURL(url[, requestHeaders])</h3>
-
urlString類型 -
requestHeadersObject類型 MacOS可用 (可選參數(shù))- HTTP請求頭。
設置url和初始化自動更新。
<h3 id="autoUpdater-getFeedURL">autoUpdater.getFeedURL()</h3>
返回值為String類型 - 當前的提供更新的URL。
<h3 id="autoUpdater-checkForUpdates">autoUpdater.checkForUpdates()</h3>
詢問服務器是否有更新。你必須在使用這個接口之前setFeedURL。
<h3 id="autoUpdater-quitAndInstall">autoUpdater.quitAndInstall()</h3>
在下載完之后安裝更新并且重啟應用。這個接口需要在update-downloaded事件被分發(fā)之后調用。
注意:autoUpdater.quitAndInstall()將會首先關閉所有應用窗口,并且關閉之后只會分發(fā)app的before-quit事件。這里不同于一般的退出順序。