Guide
Tutoriel sur les mises à jour Electron
En utilisant @capgo/electron-updater
@capgo/electron-updater donne aux applications Electron le même modèle de mise à jour en temps réel Capgo @capgo/capacitor-updaterVous l'initialisez dans le processus principal, exposez le pont de rendu à travers preload, et appelez notifyAppReady() à chaque lancement afin que la protection de 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());
});
Préchargement de la passerelle
import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
exposeUpdaterAPI();
Utilisation du rendu
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 });
}
Écoutez 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éployez un nouveau bundle
bun run build
bunx @capgo/cli@latest bundle upload --channel=production
Conseils pratiques
- Appelez toujours
notifyAppReady()tôt dans le rendu afin que la protection de rollback fonctionne comme prévu. - Conservez la voie de construction intégrée stable et laissez l'actualiseur décider si charger le bundle embarqué ou un téléchargé.
- Réutilisez le même canal et le modèle de déploiement Capgo que vous utilisez déjà sur mobile lorsque votre application Electron partage une pipeline de publication de backend.
Continuez à partir de l'utilisation de @capgo/electron-updater
Si vous utilisez L'utilisation de @capgo/electron-updater pour planifier le travail de plugin natif, connectez-le à @capgo/electron-updater pour les détails d'implémentation dans @capgo/electron-updater, Prise en main de Electron Updater pour les détails d'implémentation dans Prise en main de Electron Updater, Répertoire de plugin Capgo pour le flux de travail du produit dans Répertoire de plugin Capgo, Plugins Capacitor par Capgo pour les détails d'implémentation dans Plugins Capacitor par Capgo, et Ajouter ou Mettre à Jour les Plugins pour les détails d'implémentation dans Ajouter ou Mettre à Jour les Plugins.