メインコンテンツへ飛ぶ

autoUpdater

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

プロセス: メイン

あなたのアプリケーションにどうやってアプリケーションの更新を実装するかの詳細なガイド もご覧ください。

autoUpdaterEventEmitter です。

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

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

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

macOS

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

[!重要!]macOS で自動更新を有効にするには、アプリケーションに署名が必要です。 これは Squirrel.Mac の動作要件です。

Windows

Windows では、 autoUpdater を使用する前に、ユーザーの機械にアプリをインストールしなければなりません。なので、electron-winstallerElectron Forge の Squirrel.Windows メーカー を使用して、Windows インストーラーを作成することをお勧めします。

Squirrel.Windows によって構築されたアプリは、適切なセットアップとアンインストールのため、カスタム起動イベント をトリガーします。Electron アプリケーションはこれを処理しなければなりません。

Squirrel.Windows アプリは、インストール後 --squirrel-firstrun 引数で自動的に起動されます。 この間、Squirrel.Windows はアプリのファイルをロックし、autoUpdater はロックが解除されるまでリクエストに失敗します。 実際、これにより初回起動から数秒間においてアップデートを確認できません。 これには、process.argv の中に --squirrel-firstrun フラグが含まれている場合にアップデートを確認しないようにしたり、アップデートの確認に 10 秒の猶予を設けたりすることで対処できます。(詳細は electron/electron#7155 を参照してください。)

Squirrelで作成されたインストーラは、例えば、com.squirrel.slack.Slackcom.squirrel.code.Code といったcom.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE という形式による アプリケーションユーザーモデル ID を持つショートカットアイコンを作成します。 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() を呼び出します。

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