メインコンテンツへ飛ぶ

autoUpdater

アプリを自動的に更新することができます。

Process: Main

See also: A detailed guide about how to implement updates in your application.

autoUpdater is an EventEmitter.

プラットフォームに関する注意事項

現在、macOS と Windows にのみ対応しています。 Linux では、自動更新の組み込みサポートがないので、アプリ更新にはディストリビューションのパッケージマネージャーの使用を推奨しています。

さらに、各プラットフォームではいくつかの微妙な違いがあります。

macOS

macOSでは、autoUpdater モジュールは Squirrel.Mac で構築されているので、動作させるのに特別なセットアップ作業をする必要はありません。 サーバー側の要件については、サーバーサポート をお読みください。 注意として、App Transport Security (ATS) はアップデート処理の過程で行われたすべてのリクエストに適用されます。 アプリのplistに NSAllowsArbitraryLoads キーを追加することで、ATSを無効にすることができます。

注: macOS で自動更新を有効にするには、アプリ署名が必要です。 これは Squirrel.Mac の動作要件です。

Windows

On Windows, you have to install your app into a user's machine before you can use the autoUpdater, so it is recommended that you use electron-winstaller or Electron Forge's Squirrel.Windows maker to generate a Windows installer.

Apps built with Squirrel.Windows will trigger custom launch events that must be handled by your Electron application to ensure proper setup and teardown.

Squirrel.Windows apps will launch with the --squirrel-firstrun argument immediately after installation. During this time, Squirrel.Windows will obtain a file lock on your app, and autoUpdater requests will fail until the lock is released. In practice, this means that you won't be able to check for updates on first launch for the first few seconds. You can work around this by not checking for updates when process.argv contains the --squirrel-firstrun flag or by setting a 10-second timeout on your update checks (see electron/electron#7155 for more information).

The installer generated with Squirrel.Windows will create a shortcut icon with an Application User Model ID in the format of com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE, examples are com.squirrel.slack.Slack and com.squirrel.code.Code. app.setAppUserModelId APIでアプリに対して同じIDを使うようにしてください。そうでないと、Windowsはタスクバーにアプリを正しくピン留めすることができません。

イベント

autoUpdater オブジェクトは以下のイベントを発生させます。

イベント: 'error'

戻り値:

  • error Error

更新中にエラーがあるときに出力されます。

イベント: 'checking-for-update'

更新が始まったかどうかをチェックするときに放出されます。

イベント: 'update-available'

利用可能な更新がある場合に発生します。 更新は自動ダウンロードされます。

イベント: 'update-not-available'

利用可能な更新がない場合に出力されます。

イベント: 'update-downloaded'

戻り値:

  • event Event
  • releaseNotes string
  • releaseName string
  • releaseDate Date
  • updateURL string

更新プログラムがダウンロードされたときに発生します。

Windowsでは releaseName のみ利用可能です。

注: 必ずこのイベントを処理する必要はありません。 ダウンロードに成功した更新は、次回のアプリケーション起動時でも適用されます。

イベント: 'before-quit-for-update'

このイベントは、ユーザが呼び出した quitAndInstall() の後に発火されます。

この API が呼ばれた時、すべてのウィンドウが閉じられる前に before-quit イベントは発火されません。 結果として、プロセス終了時にウィンドウが閉じられる前にアクションを実行するために、before-quit をリッスンする場合は、このイベントも同様にリッスンする必要があります。

メソッド

autoUpdater オブジェクトには以下のメソッドがあります

autoUpdater.setFeedURL(options)

  • options Object
    • url string
    • headers Record<string, string> (任意) macOS - HTTP リクエストのヘッダ。
    • serverType string (任意) macOS - jsondefault のいずれかです。詳細は Squirrel.Mac README を参照してください。

url を設定して自動更新を初期化します。

autoUpdater.getFeedURL()

戻り値 string - 現在の更新フィード URL。

autoUpdater.checkForUpdates()

更新があるかどうかサーバーに問い合わせます。 この API を使用する前に setFeedURL を呼び出す必要があります。

注意: アップデート可能であれは、自動でダウンロードされます。 autoUpdater.checkForUpdates() を 2 回呼び出すと、更新データを 2 回ダウンロードすることになります。

autoUpdater.quitAndInstall()

ダウンロード後にアプリを再起動し、更新をインストールします。 update-downloaded が発生した後でしか呼び出さないでください。

autoUpdater.quitAndInstall() を呼ぶと、この中では最初にすべてのアプリケーションウィンドウを閉じ、すべてのウィンドウが閉じられた後に自動的に app.quit() を呼び出します。

注意: アップデートを適用するために必ずこの関数を呼ぶ必要はなく、ダウンロードに成功したアップデートは次回のアプリケーション起動時に必ず適用されます。