W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
有若干種方法可以自動更新您的 Electron 應用程序。 最簡單并且獲得官方支持的方法是利用內(nèi)置的 Squirrel 框架和Electron的?autoUpdater
?模塊。
Electron 團隊維護 update.electronjs.org,一個免費開源的網(wǎng)絡服務,可以讓 Electron 應用使用自動更新。 這個服務是設計給那些滿足以下標準的 Electron 應用:
使用這個服務最簡單的方法是安裝 update-electron-app,一個預配置好的 Node.js 模塊來使用 update.electronjs.org。
使用您選擇的 Node.js 包管理器安裝模塊:
npm | Yarn |
|
|
然后,從應用的主進程文件中調(diào)用更新模塊:
require('update-electron-app')()
默認情況下,這個模塊會在應用啟動的時候檢查更新,然后每隔十分鐘再檢查一次。 當發(fā)現(xiàn)了一個更新,它會自動在后臺下載。 當下載完成后,會顯示對話框允許用戶重啟應用。
如果您需要自定義配置,您可以將選項傳遞給 update-electron-app 或直接使用更新服務。
如果你開發(fā)的是一個私有的 Electron 應用程序,或者你沒有在 GitHub Releases 中公開發(fā)布,你可能需要運行自己的更新服務器。
根據(jù)你的需要,你可以從下方選擇:
部署更新服務器后,您可以檢測應用程序代碼以使用 Electron 的 autoUpdater 模塊接收和應用更新。
首先,在您的主流程代碼中導入所需的模塊。以下代碼可能因不同的服務器軟件而異,但它的工作方式與使用 Hazel 時描述的一樣。
注意檢查執(zhí)行環(huán)境!
請確保以下代碼僅在打包的應用程序執(zhí)行,而不是在開發(fā)環(huán)境中。 您可以使用 ?
app.isPackaged
? API 來檢查環(huán)境。
const { app, autoUpdater, dialog } = require('electron')
接下來,構建更新服務器的 URL 并通知 ?autoUpdater
?:
const server = 'https://your-deployment-url.com'
const url = `${server}/update/${process.platform}/${app.getVersion()}`
autoUpdater.setFeedURL({ url })
最后一步,檢查更新。 下面的示例將在每分鐘檢查一次:
setInterval(() => {
autoUpdater.checkForUpdates()
}, 60000)
應用程序被?packaged
?后, 它將接收你每次發(fā)布在 GitHub Release 上的的更新。
現(xiàn)在您已經(jīng)為應用程序配置了基本的更新機制, 您需要確保在更新時通知用戶. 這可以使用 autoUpdater API 事件實現(xiàn):
autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName) => {
const dialogOpts = {
type: 'info',
buttons: ['Restart', 'Later'],
title: 'Application Update',
message: process.platform === 'win32' ? releaseNotes : releaseName,
detail:
'A new version has been downloaded. Restart the application to apply the updates.',
}
dialog.showMessageBox(dialogOpts).then((returnValue) => {
if (returnValue.response === 0) autoUpdater.quitAndInstall()
})
})
另外,也請確認錯誤被處理。 下面是將錯誤日志輸出到stderr
的例子。
autoUpdater.on('error', (message) => {
console.error('There was a problem updating the application')
console.error(message)
})
手動處理更新
由于 autoUpdate 發(fā)出的請求不受您的直接控制,您可能會發(fā)現(xiàn)難以處理的情況(例如,如果更新服務器在身份驗證之后)。 url 字段支持 file:// 協(xié)議,這意味著通過一些努力,您可以通過從本地目錄加載更新來避開該過程的服務器通信方面。這是一個如何工作的例子。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: