原文:https://github.com/electron/electron/blob/master/docs/api/auto-updater.md
譯者:Lin
使應(yīng)用程序自己自動更新。
進(jìn)程:主進(jìn)程
autoUpdater
模塊提供一個Squirrel框架的接口脚乡。
通過使用這些項目之一你可以快速啟動一個多平臺發(fā)布服務(wù)器來發(fā)布你的應(yīng)用:
- nuts: 一個智能的發(fā)布你的應(yīng)用的服務(wù)蜒滩,使用GitHub作為后臺。使用Squirrel自動更新(Mac和Windows)
- electron-release-server: 一個全功能的自己托管的electron應(yīng)用發(fā)布服務(wù)奶稠,兼容自動更新
- squirrel-updates-server: 一個基于使用GitHub的Squirrel.Mac和Squirrel.Windows發(fā)布的簡單的node.js的服務(wù)
- squirrel-release-server: 一個基于Squirrel.Windows的簡單的PHP應(yīng)用俯艰,通過folder. Supports讀取更新信息進(jìn)行更新
<h2 id="platform-notices">平臺的注意事項</h2>
雖然autoUpdater
對不同平臺提供一個統(tǒng)一的借口,但是每一個平臺都有著細(xì)微的差別锌订。
<h3 id="macOS">MacOS<h3>
MacOS中竹握,autoUpdater
模塊是基于Squirrel.Mac的,這意味著你不需要任何特殊的設(shè)置就能讓他工作辆飘。對于服務(wù)器端的要求啦辐,你可以閱讀Server Support。請注意劈猪,App Transport Security (ATS) 適用于將所有的請求都作為更新過程的一部分昧甘。應(yīng)用如果需要禁用ATS可以將NSAllowsArbitraryLoads
添加到他們應(yīng)用的plist文件中。
注意:你的應(yīng)用必須在MacOS上注冊自動更新战得。這是Squirrel.Mac
的要求充边。
<h3 id="windows">Windows</h3>
Windows中,你需要在你使用autoUpdater
之前安裝你的應(yīng)用到用戶的機器上,所以建議你使用electron-winstaller浇冰,electron-builder或者grunt-electron-installer來打包生成一個Windows安裝包贬媒。
當(dāng)使用electron-winstaller或者electron-builder時請確定你沒有在第一次運行時嘗試更新你的應(yīng)用(可以查看這個問題的更多信息)。也同樣建議使用electron-squirrel-startup來獲取你應(yīng)用程序的桌面快捷方式肘习。
使用Squirrel生成安裝程序?qū)褂酶袷綖?code>com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE的Application User Model ID創(chuàng)建一個快捷圖標(biāo)际乘,例如com.squirrel.slack.Slack
和com.squirrel.code.Code
。你需要使用同樣的ID調(diào)用你應(yīng)用的app.setAppUserModelId
接口漂佩,否則Windows將不允許你的應(yīng)用程序放置在任務(wù)欄中脖含。
服務(wù)端的設(shè)置也是不同于MacOS。你可以閱讀Squirrel.Windows的文檔來獲取更多信息投蝉。
<h3 id="linux">Linux</h3>
Linux中沒有內(nèi)置支持自動更新养葵,所以建議使用發(fā)布包管理器來更新你的應(yīng)用。
<h2 id="events">事件</h2>
autoUpdater
對象分發(fā)下面的事件:
<h3 id="event-error">事件:'error'</h3>
返回值:
-
error
Error類型
更新出錯時被分發(fā)瘩缆。
<h3 id="event-checking-for-update">事件:'checking-for-update'</h3>
檢查更新是否啟動時被分發(fā)关拒。
<h3 id="event-update-available">事件:'update-available'</h3>
當(dāng)有可用的更新時被分發(fā)。這個更新將會被自動下載庸娱。
<h3 id="event-update-not-available">事件:'update-not-available'</h3>
當(dāng)有沒有可用的更新時被分發(fā)着绊。
<h3 id="event-update-downloaded">事件:'update-downloaded'</h3>
返回值:
-
event
Event類型 -
releaseNotes
String類型 -
releaseName
String類型 -
releaseDate
Date類型 -
updateURL
String類型
當(dāng)一個更新下載完成時被分發(fā)。
Windows中只有releaseName
是有效的熟尉。
<h2 id="methods">方法</h2>
autoUpdater
對象有以下的方法:
<h3 id="autoUpdater-setFeedURL">autoUpdater.setFeedURL(url[, requestHeaders])</h3>
-
url
String類型 -
requestHeaders
Object類型 MacOS可用 (可選參數(shù))- HTTP請求頭归露。
設(shè)置url
和初始化自動更新。
<h3 id="autoUpdater-getFeedURL">autoUpdater.getFeedURL()</h3>
返回值為String
類型 - 當(dāng)前的提供更新的URL臣樱。
<h3 id="autoUpdater-checkForUpdates">autoUpdater.checkForUpdates()</h3>
詢問服務(wù)器是否有更新靶擦。你必須在使用這個接口之前setFeedURL
。
<h3 id="autoUpdater-quitAndInstall">autoUpdater.quitAndInstall()</h3>
在下載完之后安裝更新并且重啟應(yīng)用雇毫。這個接口需要在update-downloaded
事件被分發(fā)之后調(diào)用玄捕。
注意:autoUpdater.quitAndInstall()
將會首先關(guān)閉所有應(yīng)用窗口,并且關(guān)閉之后只會分發(fā)app
的before-quit
事件棚放。這里不同于一般的退出順序枚粘。