メインコンテンツにスキップ

autoUpdater

アプリケーションが自動的に自身をアップデートできるようにします。

プロセス: メイン

参照: アプリケーションでアップデートを実装する方法に関する詳細ガイド

autoUpdaterEventEmitter です。

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

現在、macOSとWindowsのみがサポートされています。Linuxでは自動アップデートの組み込みサポートがないため、アプリケーションのアップデートにはディストリビューションのパッケージマネージャーを使用することをお勧めします。

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

macOS

macOSでは、autoUpdaterモジュールは Squirrel.Mac を基に構築されており、動作させるための特別な設定は必要ありません。サーバー側の要件については、Server Support を参照してください。App Transport Security (ATS) は、アップデートプロセスの一部として行われるすべてのリクエストに適用されることに注意してください。ATSを無効にする必要があるアプリケーションは、アプリケーションのplistにNSAllowsArbitraryLoadsキーを追加できます。

注: macOSでの自動アップデートには、アプリケーションが署名されている必要があります。これはSquirrel.Macの要件です。

Windows

Windowsでは、autoUpdaterを使用する前に、アプリケーションをユーザーのマシンにインストールする必要があるため、Windowsインストーラーを生成するには、electron-winstaller または Electron ForgeのSquirrel.Windowsメーカーを使用することをお勧めします。

Squirrel.Windowsで構築されたアプリケーションは、適切な設定と破棄を保証するために、Electronアプリケーションで処理する必要がある カスタム起動イベント をトリガーします。

Squirrel.Windowsアプリケーションは、インストール直後に--squirrel-firstrun引数を付けて起動します。この間、Squirrel.Windowsはアプリケーションのファイルロックを取得し、ロックが解除されるまでautoUpdaterリクエストは失敗します。実際には、最初の起動後数秒間はアップデートを確認できないことを意味します。process.argv--squirrel-firstrunフラグが含まれている場合はアップデートをチェックしないか、アップデートチェックに10秒のタイムアウトを設定することで回避できます(詳細についてはelectron/electron#7155を参照してください)。

Squirrel.Windowsで生成されたインストーラーは、com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXEの形式でアプリケーションユーザーモデルIDを持つショートカットアイコンを作成します。例としては、com.squirrel.slack.Slackcom.squirrel.code.Codeがあります。app.setAppUserModelId APIでアプリケーションに同じIDを使用する必要があります。そうしないと、Windowsはタスクバーにアプリケーションを適切にピン留めできません。

イベント

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

イベント: 'error'

戻り値

  • error Error

アップデート中にエラーが発生した場合に発生します。

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

アップデートのチェックが開始されたときに発生します。

イベント: 'update-available'

利用可能なアップデートがある場合に発生します。アップデートは自動的にダウンロードされます。

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

利用可能なアップデートがない場合に発生します。

イベント: 'update-downloaded'

戻り値

  • 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 - jsonまたはdefaultを指定できます。詳細については、Squirrel.MacのREADMEを参照してください。

urlを設定し、自動アップデートを初期化します。

autoUpdater.getFeedURL()

戻り値 string - 現在のアップデートフィードURL。

autoUpdater.checkForUpdates()

サーバーにアップデートがあるかどうかを尋ねます。このAPIを使用する前にsetFeedURLを呼び出す必要があります。

注: アップデートが利用可能な場合、自動的にダウンロードされます。autoUpdater.checkForUpdates()を2回呼び出すと、アップデートが2回ダウンロードされます。

autoUpdater.quitAndInstall()

ダウンロードが完了した後にアプリケーションを再起動し、アップデートをインストールします。update-downloadedが発行された後にのみ呼び出す必要があります。

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

注: アップデートを適用するためにこの関数を呼び出すことは必須ではありません。正常にダウンロードされたアップデートは、アプリケーションが次回起動したときに必ず適用されます。