見出し画像

Electronアプリのアップデート実装はカンタンだった話

Electronアプリのアップデートを実装する典型的な方法は、ElectronのautoUpdaterモジュールを使用することです。これは、アプリケーションを自動的にアップデートするためのAPIを提供しています。以下に、基本的な手順を示します。

electron-builderパッケージをインストール: electron-builderは、Electronアプリをビルドし、配布するためのツールです。これをインストールするには、プロジェクトディレクトリで次のコマンドを実行します。

npm install electron-builder --save-dev

electron-updaterをインストール: electron-updaterは、autoUpdaterモジュールを使いやすくするラッパーライブラリです。これをインストールするには、プロジェクトディレクトリで次のコマンドを実行します。

npm install electron-updater --save

メインプロセスのコードにautoUpdaterを実装: アプリのメインプロセスファイル(通常はmain.jsまたはindex.js)に、次のようなコードを追加してautoUpdaterを設定します。

const { app, BrowserWindow, ipcMain } = require('electron');
const { autoUpdater } = require('electron-updater');

let mainWindow;

function createWindow() {
  mainWindow = new BrowserWindow({ ... });
  mainWindow.loadURL('file://' + __dirname + '/index.html');
  mainWindow.on('closed', () => { mainWindow = null; });
}

app.on('ready', () => {
  createWindow();
  autoUpdater.checkForUpdatesAndNotify();
});

autoUpdater.on('update-available', () => {
  mainWindow.webContents.send('update_available');
});

autoUpdater.on('update-downloaded', () => {
  mainWindow.webContents.send('update_downloaded');
});

ipcMain.on('restart_app', () => {
  autoUpdater.quitAndInstall();
});

更新をチェックするためのリリースサーバーを設定: アプリの更新をホストするリリースサーバーを設定し、package.jsonに以下のような設定を追加します。

"build": {
  "publish": [
    {
      "provider": "generic",
      "url": "https://your-release-server.com/path-to-updates/"
    }
  ]
}

アプリをビルドしてリリース: アプリをビルドし、生成されたインストーラとアップデートファイルをリリースサーバーにアップロードします。ビルドコマンドは以下の通りです。

npm run build

リリースサーバーには、アプリケーションのビルド済みバイナリ、アップデートファイル、および更新情報を提供するためのメタデータファイル(latest.yml(Windowsの場合)またはlatest-mac.yml(macOSの場合))を配置する必要があります。

以下のファイルをリリースサーバーに配置します:

  1. アプリケーションのインストーラーファイル:

    • Windows: .exeファイル(例:your-app-name-1.0.0.exe)

    • macOS: .dmgファイル(例:your-app-name-1.0.0.dmg)

    • Linux: .AppImageファイル(例:your-app-name-1.0.0.AppImage)

  2. アップデートファイル:

    • Windows: -full.nupkgファイル(例:your-app-name-1.0.0-full.nupkg)および.exe.blockmapファイル(例:your-app-name-1.0.0.exe.blockmap)

    • macOS: -mac.zipファイル(例:your-app-name-1.0.0-mac.zip)

  3. 更新情報のメタデータファイル:

    • Windows: latest.ymlファイル

    • macOS: latest-mac.ymlファイル

これらのファイルは、electron-builderによってアプリケーションのビルド時に生成されます。生成されたファイルは、通常distディレクトリに格納されます。これらのファイルをリリースサーバーにアップロードし、package.jsonで指定されたURLにアクセスできるようにします。

リリースサーバーには、静的ファイルホスティングサービス(例:Amazon S3、GitHub Releases、Google Cloud Storage、Microsoft Azure Storageなど)や、独自のWebサーバー(例:Nginx、Apache)を使用することができます。重要なのは、アプリケーションが更新ファイルにアクセスできるように、リリースサーバーのURLを正しく設定することです。


この記事が気に入ったらサポートをしてみませんか?