Skip to content

公式 electron-updater コンポーネントを使用した Electron プロジェクト統合リファレンス

1. 公式 electron-updater コンポーネントの紹介

Electron が提供する公式の electron-updater コンポーネントは、更新サーバーまたは静的ファイルを通じてアプリケーションの自動更新をサポートしており、主な機能は以下のとおりです:

  • Electron 更新プロトコルと互換性のあるバージョンチェック
  • クロスプラットフォームのインストールパッケージのダウンロードとインストールプロセス
  • 柔軟な更新戦略の設定

コアリソース

全体のロジック:UpgradeLink が提供するアップグレード戦略 API を呼び出すことで、electron-updater コンポーネントが具体的な更新プロセスを実行し、公式の更新システムとのシームレスな統合を実現します。

統合フローチャート

2. 統合のコアステップ

参考 electron-demo プロジェクトアドレス

1. 公式更新コンポーネントのインストール

2. 公式動的更新サーバーのドキュメントを読み、統合プロセスを理解する。ドキュメントアドレス

UpgradeLink は、公式仕様で要求されるリクエストパラメータとレスポンス構造に完全に準拠した更新 API を提供しているため、シームレスな置換が可能です。

3. 更新パッケージのダウンロードアドレスを設定するために dev-update.yml ファイルを追加

yaml
provider: generic
updaterCacheDirName: electron-demo-updater # ダウンロードディレクトリ

4. コードの置換、更新チェック方法の調整

公式の更新チェックコードに基づいて、公式の checkForUpdates メソッドのインターフェースアドレスを UpgradeLink が提供するアドレスに置き換えるだけで済みます。

javascript
// 関連パラメータを出力
console.log(app.getVersion());
console.log(process.platform);
console.log(process.arch);

const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
    url: FeedURL,
    provider: 'generic',
});
autoUpdater.requestHeaders = {
    'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};

const result = await autoUpdater.checkForUpdates();
// 戻り結果を出力
console.log("result: ", result);

if (!result || !result.updateInfo) {
    // インターフェース呼び出しに失敗
    return {
        error: "更新情報を取得できません",
        currentVersion: app.getVersion()
    };
} else if (result.updateInfo.version === app.getVersion()) {
    // 返されたバージョン番号が現在のものと一致する場合、現在のバージョンが最新であることを示します
    return {
        updateAvailable: false,
        currentVersion: app.getVersion()
    };
} else if (result.updateInfo.version) {
    return {
        updateAvailable: true,
        currentVersion: app.getVersion(),
        newVersion: result.updateInfo.version
    };
}

return {
    updateAvailable: false,
    currentVersion: app.getVersion()
};

5. コードの置換、ダウンロードと更新方法の調整、ダウンロードアドレスを更新チェックインターフェースが返すアドレスに調整

javascript
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
    url: FeedURL,
    provider: 'generic',
});
autoUpdater.requestHeaders = {
    'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();

// 更新チェックインターフェースの戻り結果を出力
console.log(result);

autoUpdater.setFeedURL({
    url: result.updateInfo.path,
    provider: 'generic',
});
console.log('[Process] 更新のダウンロードを開始、URL:', result.updateInfo.path);
try {
    await autoUpdater.downloadUpdate();
    console.log('[Process] 更新のダウンロードが完了');
} catch (e) {
    console.error('[Process] 更新のダウンロードに失敗:', e);
    console.error('[DEBUG] エラースタック:', e.stack);
    throw e;
}

UpgradeLink による更新プロトコルのリクエストパラメータ(platformarch など)とレスポンス構造は公式仕様と完全に互換性があるため、直接置換することができます。

以上が統合ガイドです。コンテンツの詳細を調整したり、特定のシナリオの説明を補充したりする必要がある場合は、具体的な要件をお知らせください。

toolsetlink@163.com