公式 electron-updater コンポーネントを使用した Electron プロジェクト統合リファレンス
1. 公式 electron-updater コンポーネントの紹介
Electron が提供する公式の electron-updater コンポーネントは、更新サーバーまたは静的ファイルを通じてアプリケーションの自動更新をサポートしており、主な機能は以下のとおりです:
- Electron 更新プロトコルと互換性のあるバージョンチェック
- クロスプラットフォームのインストールパッケージのダウンロードとインストールプロセス
- 柔軟な更新戦略の設定
コアリソース
全体のロジック:UpgradeLink が提供するアップグレード戦略 API を呼び出すことで、electron-updater コンポーネントが具体的な更新プロセスを実行し、公式の更新システムとのシームレスな統合を実現します。
統合フローチャート
2. 統合のコアステップ
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 による更新プロトコルのリクエストパラメータ(platform、arch など)とレスポンス構造は公式仕様と完全に互換性があるため、直接置換することができます。
以上が統合ガイドです。コンテンツの詳細を調整したり、特定のシナリオの説明を補充したりする必要がある場合は、具体的な要件をお知らせください。