Guida
Tutoriale su Aggiornamento Electron
Utilizzando @capgo/aggiornamento-elettronico
@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updater. Si inizializza nel processo principale, si espongono i ponti del renderer attraverso il preload e si chiama notifyAppReady() su ogni avvio affinché la protezione del rollback sappia che il pacchetto è sano.
Installazione
bun add @capgo/electron-updater
Configurazione del processo principale
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());
});
Ponte di caricamento predefinito
import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
exposeUpdaterAPI();
Utilizzo del 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 });
}
Ascolta gli eventi di aggiornamento
updater.addListener('download', ({ percent }) => {
console.log('Download progress', percent);
});
updater.addListener('updateFailed', ({ bundle }) => {
console.error('Update failed', bundle.version);
});
Distribuisci un nuovo bundle
bun run build
bunx @capgo/cli@latest bundle upload --channel=production
Consigli pratici
- Chiamare sempre
notifyAppReady()in anticipo nel renderer affinché la protezione del rollback funzioni come previsto. - Mantieni stabile la strada di costruzione predefinita e lascia che l'aggiornatore decida se caricare il bundle spedito o uno scaricato.
- Ripeti lo stesso canale e modello di rilascio Capgo che già utilizzi su mobile quando la tua app Electron condivide una pipeline di rilascio backend.
Continua da Utilizzo di @capgo/electron-updater
Se stai utilizzando Using @capgo/electron-updater per pianificare il lavoro del plugin nativo, connettilo con @capgo/electron-updater for the implementation detail in @capgo/electron-updater, Avvio rapido con l'aggiornatore di Electron per i dettagli di implementazione in Avvio rapido con l'aggiornatore di Electron, Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, and Aggiungere o aggiornare i plugin per i dettagli di implementazione in Aggiungere o aggiornare i plugin.