メインコンテンツへ飛ぶ

アプリケーションの更新

Electron アプリケーションの自動更新を行うには、いくつかの方法があります。 The easiest and officially supported one is taking advantage of the built-in Squirrel framework and Electron's autoUpdater module.

クラウドオブジェクトストレージ (サーバーレス) の使用

シンプルなサーバーレス更新フローの場合、Electron の autoUpdater モジュールは、最新リリースのメタデータを格納する静的ストレージの URL を指定すれば更新が利用可能かどうかを確認できます。

新しいリリースを利用可能にしたら、このメタデータをリリース本体と一緒にクラウドストレージに公開する必要があります。 メタデータの形式は macOS と Windows で異なります。

リリースのメタデータの公開

Electron Forge を使用する場合、macUpdateManifestBaseUrl を使用すれば ZIP Maker (macOS) から、remoteReleases を使用すれば Squirrel.Windows Maker (Windows) からメタデータのアーティファクトを公開することで、静的ファイルストレージの更新を設定できます。

エンドツーエンドの例については、Forge の S3 からの自動更新 のガイドを参照してください。

手動公開

macOS では、Squirrel.Mac は以下の JSON 形式の releases.json ファイルを読み取ることで更新を受信できます。

releases.json
{
"currentRelease": "1.2.3",
"releases": [
{
"version": "1.2.1",
"updateTo": {
"version": "1.2.1",
"pub_date": "2023-09-18T12:29:53+01:00",
"notes": "These are some release notes innit",
"name": "1.2.1",
"url": "https://mycompany.example.com/myapp/releases/myrelease"
}
},
{
"version": "1.2.3",
"updateTo": {
"version": "1.2.3",
"pub_date": "2024-09-18T12:29:53+01:00",
"notes": "These are some more release notes innit",
"name": "1.2.3",
"url": "https://mycompany.example.com/myapp/releases/myrelease3"
}
}
]
}

Windows では、Squirrel.Windows はビルドの過程で生成された RELEASES ファイルを読み取ることで更新を受信できます。 このファイルには、更新する .nupkg 差分パッケージの詳細が記載されています。

RELEASES
B0892F3C7AC91D72A6271FF36905FEF8FE993520 electron-fiddle-0.36.3-full.nupkg 103298365

これらのファイルは、アプリのプラットフォームとアーキテクチャを考慮したフォルダー構造の配下の、リリースと同じディレクトリに配置する必要があります。

以下がその例です。

my-app-updates/
├─ darwin/
│ ├─ x64/
│ │ ├─ my-app-1.0.0-darwin-x64.zip
│ │ ├─ my-app-1.1.0-darwin-x64.zip
│ │ ├─ RELEASES.json
│ ├─ arm64/
│ │ ├─ my-app-1.0.0-darwin-arm64.zip
│ │ ├─ my-app-1.1.0-darwin-arm64.zip
│ │ ├─ RELEASES.json
├─ win32/
│ ├─ x64/
│ │ ├─ my-app-1.0.0-win32-x64.exe
│ │ ├─ my-app-1.0.0-win32-x64.nupkg
│ │ ├─ my-app-1.1.0-win32-x64.exe
│ │ ├─ my-app-1.1.0-win32-x64.nupkg
│ │ ├─ RELEASES

リリースのメタデータの読み取り

最も簡単なメタデータの利用方法は、autoUpdater を設定し、ドロップインの Node.js モジュールである update-electron-app をインストールすることです。これはネイティブのダイアログでユーザーにプロンプ​​トを表示します。

静的ストレージの更新の場合は、updateSource.baseUrl 引数にリリースのメタデータファイルを格納するディレクトリを指定します。

main.js
const { updateElectronApp, UpdateSourceType } = require('update-electron-app')

updateElectronApp({
updateSource: {
type: UpdateSourceType.StaticStorage,
baseUrl: `https://my-bucket.s3.amazonaws.com/my-app-updates/${process.platform}/${process.arch}`
}
})

update.electronjs.org の利用

Electron チームは update.electronjs.org をメンテナンスしています。これは、Electron を自己更新するためのオープンソースウェブサービスです。 このサービスは次の条件を満すElectronアプリ用に設計されています。

  • macOSまたはWindowsで動作するアプリである。
  • アプリはGitHubのパブリックなリポジトリである。
  • ビルドが GitHub の Releases で公開されている
  • ビルドが コード署名 されている (macOS のみ)

このサービスを使う最も簡単な方法はupdate-electron-appをインストールすることで、update.electronjs.orgをつかって、事前調整されたNode.js モジュールを使う方法です。

Node.js パッケージマネージャを使用して、このモジュールをインストールします。

npm install update-electron-app

そして、アプリのメインプロセスファイルから以下のようにアップデータを呼び出します。

main.js
require('update-electron-app')()

デフォルト設定で、このモジュールはアプリの起動時に更新をチェックします。または10分毎にチェックします。 アップデートがみつかったとき、自動的にバックグラウンドでダウンロードします。 そのダウンロードが完了したときに、ダイアログを表示してユーザにアプリの再起動許可を取ります。

設定をカスタマイズしたい場合、update-electron-app にオプションを渡す か、アップデートサービスを直接使用 できます。

他の更新サービスを利用する