Panduan
Tutorial tentang Pembaruan Electron
Menggunakan @capgo/electron-updater
@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updater Anda inisialisasinya di proses utama, mengekspos jembatan renderer melalui preload, dan memanggil notifyAppReady() pada setiap peluncuran agar proteksi rollback tahu bundel sehat.
Instalasi
bun add @capgo/electron-updater
Pengaturan 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());
});
Jembatan 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 });
}
Dengar untuk peristiwa pembaruan
updater.addListener('download', ({ percent }) => {
console.log('Download progress', percent);
});
updater.addListener('updateFailed', ({ bundle }) => {
console.error('Update failed', bundle.version);
});
Tinggalkan bundle baru
bun run build
bunx @capgo/cli@latest bundle upload --channel=production
Saran praktis
- Selalu panggil
notifyAppReady()dini dalam renderer agar perlindungan rollback bekerja sebagaimana yang diharapkan. - Tetapkan jalur yang dibangun stabil dan biarkan pembaruan memutuskan apakah harus memuat bundle yang dikirim atau satu yang diunduh.
- Gunakan kembali saluran Capgo yang sama dan model peluncuran 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 @capgo/pengaturan- electron untuk detail implementasi di @capgo/pengaturan- electron, Mulai Menggunakan Pengaturan Electron untuk detail implementasi di Mulai Menggunakan Pengaturan Electron, Capgo Direktori Plugin untuk alur produk di Capgo Direktori Plugin, Capacitor Plugin oleh Capgo untuk detail implementasi di Capacitor Plugin oleh Capgo, dan Menambahkan atau Mengupdate Plugin untuk detail implementasi di Menambahkan atau Mengupdate Plugin.