electron/docs-translations/zh-TW/tutorial/updates.md
2017-10-09 12:13:00 -05:00

3.3 KiB
Raw Blame History

更新應用程式

有很多種方式能夠更新 Electron 應用程式,其中最簡單也最正式的一種是使用 Squirrel 框架,以及 Electron's 自動更新模組。

部署更新伺服器

首先,您需要部署一個伺服器讓自動更新模組能夠下載更新檔案。

您可以選擇以下幾種服務:

如果您的應用程式是使用 electron-builder 打包,您可以使用 electron-updater 模組,它不需要部署伺服器且允許從靜態網址下載,例如 S3 或 GitHub 。

在您的應用程式中實作更新

當您部署好更新伺服器後,在您的程式碼中引用必要的模組,以下的程式碼將以 Hazel 服務為範例。

重要: 請確認以下的程式碼只會在您打包後的應用程式內執行,且不在開發環境中,您可以使用 electron-is-dev 來確認當前環境。

const {app, autoUpdater, dialog} = require('electron')

接下來,構造更新伺服器網址並傳入 autoUpdater

const server = 'https://your-deployment-url.com'
const feed = `${server}/update/${process.platform}/${app.getVersion()}`

autoUpdater.setFeedURL(feed)

最後,檢查更新,以下的範例將會每分鐘檢查一次。

setInterval(() => {
  autoUpdater.checkForUpdates()
}, 60000)

當你打包您的應用程式後,應用程式將會收到每次您在 GitHub Release 的更新檔案。

應用更新

現在您已為應用程式部署了一個基礎的更新機制,為了要確保所有的用戶都會收到更新通知,您可以使用 autoUpdater API events 來實作:

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, (response) => {
    if (response === 0) autoUpdater.quitAndInstall()
  })
})

同時確認所有的錯誤都有被處理,以下將以記錄錯誤至 stderr 為範例:

autoUpdater.on('error', message => {
  console.error('There was a problem updating the application')
  console.error(message)
})