autoUpdater
アプリケーションが自動的に自身をアップデートできるようにします。
プロセス: メイン
参照: アプリケーションでアップデートを実装する方法に関する詳細ガイド。
autoUpdater
は EventEmitter です。
プラットフォームに関する注意事項
現在、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.Slack
やcom.squirrel.code.Code
があります。app.setAppUserModelId
APIでアプリケーションに同じIDを使用する必要があります。そうしないと、Windowsはタスクバーにアプリケーションを適切にピン留めできません。
イベント
autoUpdater
オブジェクトは、次のイベントを発生させます。
イベント: 'error'
戻り値
error
Error
アップデート中にエラーが発生した場合に発生します。
イベント: 'checking-for-update'
アップデートのチェックが開始されたときに発生します。
イベント: 'update-available'
利用可能なアップデートがある場合に発生します。アップデートは自動的にダウンロードされます。
イベント: 'update-not-available'
利用可能なアップデートがない場合に発生します。
イベント: 'update-downloaded'
戻り値
event
イベントreleaseNotes
stringreleaseName
stringreleaseDate
DateupdateURL
string
アップデートがダウンロードされたときに発生します。
WindowsでのみreleaseName
が利用可能です。
注: このイベントを処理することは必須ではありません。正常にダウンロードされたアップデートは、アプリケーションが次回起動したときに適用されます。
イベント: 'before-quit-for-update'
このイベントは、ユーザーがquitAndInstall()
を呼び出した後に発生します。
このAPIが呼び出されると、すべてのウィンドウが閉じられる前にbefore-quit
イベントは発生しません。その結果、プロセスが終了している間にウィンドウが閉じられる前にアクションを実行する場合は、before-quit
をリッスンするだけでなく、このイベントをリッスンする必要があります。
メソッド
autoUpdater
オブジェクトには次のメソッドがあります。
autoUpdater.setFeedURL(options)
url
を設定し、自動アップデートを初期化します。
autoUpdater.getFeedURL()
戻り値 string
- 現在のアップデートフィードURL。
autoUpdater.checkForUpdates()
サーバーにアップデートがあるかどうかを尋ねます。このAPIを使用する前にsetFeedURL
を呼び出す必要があります。
注: アップデートが利用可能な場合、自動的にダウンロードされます。autoUpdater.checkForUpdates()
を2回呼び出すと、アップデートが2回ダウンロードされます。
autoUpdater.quitAndInstall()
ダウンロードが完了した後にアプリケーションを再起動し、アップデートをインストールします。update-downloaded
が発行された後にのみ呼び出す必要があります。
内部的には、autoUpdater.quitAndInstall()
を呼び出すと、最初にすべてのアプリケーションウィンドウが閉じられ、すべてのウィンドウが閉じられた後に自動的にapp.quit()
が呼び出されます。
注: アップデートを適用するためにこの関数を呼び出すことは必須ではありません。正常にダウンロードされたアップデートは、アプリケーションが次回起動したときに必ず適用されます。