Petunjuk
Tutorial tentang Pembaruan Electron
Menggunakan @capgo/electron-updater
@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updaterAnda menginisialisasinya di proses utama, mengekspos jembatan renderer melalui preload, dan memanggil notifyAppReady() On setiap peluncuran untuk melindungi rollback tahu bahwa bundle sehat.
Pemasangan
bun add @capgo/electron-updater
Konfigurasi proses utama
import { app, BrowserWindow } from 'electron';
import path from 'node:path';
import { ElectronUpdater, setupEventForwarding, setupIPCHandlers } from '@capgo/electron-updater';
const updater = new ElectronUpdater({
appId: 'com.example.desktop',
autoUpdate: true,
});
app.whenReady().then(async () => {
const window = new BrowserWindow({
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
contextIsolation: true,
},
});
const builtinPath = path.join(__dirname, 'www/index.html');
await updater.initialize(window, builtinPath);
setupIPCHandlers(updater);
setupEventForwarding(updater, window);
await window.loadFile(updater.getCurrentBundlePath());
});
Penghubung pra-muat
import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
exposeUpdaterAPI();
Penggunaan Renderer
import { requireUpdater } from '@capgo/electron-updater/renderer';
const updater = requireUpdater();
await updater.notifyAppReady();
const latest = await updater.getLatest();
if (latest.url && !latest.error) {
const bundle = await updater.download({
url: latest.url,
version: latest.version,
checksum: latest.checksum,
});
await updater.next({ id: bundle.id });
}
Dengarkan event pembaruan
updater.addListener('download', ({ percent }) => {
console.log('Download progress', percent);
});
updater.addListener('updateFailed', ({ bundle }) => {
console.error('Update failed', bundle.version);
});
Deploy bundle baru
bun run build
bunx @capgo/cli@latest bundle upload --channel=production
Saran praktis
- Selalu panggil
notifyAppReady()Dini dalam renderer agar proteksi rollback berfungsi sebagaimana mestinya. - Tetapkan jalur yang dibangun stabil dan biarkan pembaruan memutuskan apakah memuat bundle yang dikirim atau yang diunduh.
- Gunakan kembali saluran dan model peluncuran yang sama Capgo yang sudah Anda gunakan di mobile ketika aplikasi Electron Anda berbagi jalur pipa rilis backend.
Teruskan dari Menggunakan @capgo/electron-updater
Jika Anda menggunakan Menggunakan @capgo/electron-updater untuk merencanakan pekerjaan plugin native, hubungkannya dengan @capgo/electron-updater untuk detail implementasi di @capgo/electron-updater, Mengawali Pemula dengan Electron Updater untuk detail implementasi di Mengawali Pemula dengan Electron Updater, Capgo Direktori Plugin untuk alur kerja produk di Capgo Direktori Plugin, Capacitor Plugin oleh Capgo untuk detail implementasi di Capacitor Plugins by Capgo, dan Mengambah atau Mengupdate Plugin untuk detail implementasi di Mengambah atau Mengupdate Plugin.