Guide
Comment utiliser Electron Updater dans Electron
Utiliser @capgo/electron-updater
@capgo/electron-updater offre aux apps Electron le même modèle de live update Capgo que @capgo/capacitor-updater. Vous l'initialisez dans le processus principal, exposez le bridge du renderer via le preload, et appelez notifyAppReady() à chaque lancement pour que la protection rollback sache que le bundle est sain.
Installation
bun add @capgo/electron-updater
Configuration du processus principal
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());
});
Pont de preload
import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
exposeUpdaterAPI();
Utilisation dans le 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 });
}
Écouter les événements de mise à jour
updater.addListener('download', ({ percent }) => {
console.log('Download progress', percent);
});
updater.addListener('updateFailed', ({ bundle }) => {
console.error('Update failed', bundle.version);
});
Déployer un nouveau bundle
bun run build
bunx @capgo/cli@latest bundle upload --channel=production
Conseils pratiques
- Appelez toujours
notifyAppReady()tôt dans le renderer pour que la protection rollback fonctionne comme prévu. - Gardez le chemin intégré stable et laissez l'updater décider s'il doit charger le bundle fourni ou un bundle téléchargé.
- Réutilisez le même canal Capgo et le même modèle de déploiement progressif que sur mobile lorsque votre application Electron partage un pipeline de release backend.
Continuer avec l'utilisation de @capgo/electron-updater
Si vous utilisez Utiliser @capgo/electron-updater pour planifier le travail sur les plugins natifs, connectez-l’à @capgo/electron-updater pour les détails d'implémentation dans @capgo/electron-updater, Démarrer avec Electron Updater pour les détails d'implémentation dans Démarrer avec Electron Updater, Capgo Répertoire des plugins pour le workflow produit dans Capgo Plugin Directory, Plugins Capacitor par Capgo pour les détails d'implémentation dans les plugins Capacitor par Capgo, et Ajouter ou mettre à jour des plugins pour les détails d'implémentation dans Adding or Updating Plugins.