Panduan
Cara menggunakan Electron Updater di Electron
Menggunakan @capgo/electron-updater
@capgo/electron-updater memberikan model live-update Capgo yang sama dengan @capgo/capacitor-updater. Anda menginisialisasinya di main process, ekspos renderer bridge melalui preload, dan panggil notifyAppReady() pada setiap peluncuran agar rollback protection tahu bundle-nya sehat.
Instalasi
bun add @capgo/electron-updater
Setup main process
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());
});
Bridge preload
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 update
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()di awal renderer agar rollback protection berfungsi sebagaimana mestinya. - Jaga path bawaan tetap stabil dan biarkan updater menentukan apakah akan memuat bundle bawaan atau yang sudah di-download.
- Gunakan kembali channel Capgo dan model rollout yang sama yang sudah Anda pakai di mobile jika aplikasi Electron Anda berbagi release pipeline backend.
Lanjutkan dari Menggunakan @capgo/electron-updater
Jika Anda menggunakan Menggunakan @capgo/electron-updater untuk merencanakan pekerjaan plugin native, hubungkan dengan @capgo/electron-updater untuk detail implementasi di @capgo/electron-updater, Memulai dengan Electron Updater untuk detail implementasi di panduan Memulai dengan Electron Updater, Direktori Plugin Capgo untuk alur kerja produk di Direktori Plugin Capgo, Plugin Capacitor oleh Capgo untuk detail implementasi di Plugin Capacitor oleh Capgo, dan Menambahkan atau Memperbarui Plugin untuk detail implementasi di bagian Menambahkan atau Memperbarui Plugin.