Démarrage avec Electron Updater
Copier un prompt de configuration avec les étapes d'installation et le guide Markdown complet pour ce plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/electron-updater`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/electron-updater/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Ce guide vous guide à travers la configuration de @capgo/electron-updater dans votre application Electron pour activer les mises à jour JavaScript/HTML/CSS en temps réel.
Prérequis
Section intitulée « Prérequis »- Electron 20.0.0 ou supérieur
- Node.js 18 ou supérieur
- Un compte Capgo (inscrivez-vous sur capgo.app)
Installation
Section intitulée « Installation »-
Installez le package :
Fenêtre de terminal bun add @capgo/electron-updater -
Obtenez votre ID d'application depuis le tableau de bord Capgo. Si vous n'avez pas encore créé d'application, exécutez :
Fenêtre de terminal npx @capgo/cli@latest init
Configuration
Section intitulée « Configuration »L'actualiseur Electron nécessite une configuration dans trois endroits : processus principal, script de préchargement et processus de rendu.
Processus Principal
Section intitulée « Processus Principal »import { app, BrowserWindow } from 'electron';import * as path from 'path';import { ElectronUpdater, setupIPCHandlers, setupEventForwarding,} from '@capgo/electron-updater';
// Create updater instance with your Capgo App IDconst updater = new ElectronUpdater({ appId: 'YOUR_CAPGO_APP_ID', // e.g., 'com.example.myapp' autoUpdate: true,});
app.whenReady().then(async () => { const mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { preload: path.join(__dirname, 'preload.js'), contextIsolation: true, }, });
// Initialize updater with window and builtin path const builtinPath = path.join(__dirname, 'www/index.html'); await updater.initialize(mainWindow, builtinPath);
// Setup IPC communication between main and renderer setupIPCHandlers(updater); setupEventForwarding(updater, mainWindow);
// Load the current bundle (either builtin or downloaded update) await mainWindow.loadFile(updater.getCurrentBundlePath());});
app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); }});Script de Préchargement
Section intitulée « Script de Préchargement »import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
// Expose the updater API to the renderer processexposeUpdaterAPI();Processus de Rendu
Section intitulée “Processus de Rendu”// renderer.ts (or in your app's entry point)import { requireUpdater } from '@capgo/electron-updater/renderer';
const updater = requireUpdater();
// CRITICAL: Call this on every app launch!// This confirms the bundle loaded successfully and prevents rollbackawait updater.notifyAppReady();
console.log('App ready, current bundle:', await updater.current());Section intitulée “Vérification des Mises à Jour”
Si ce n'est pas fait, le correcteur suppose que la mise à jour a échoué et revient à la version précédente.Avec autoUpdate: true, l'actualiseur vérifie automatiquement les mises à jour. Vous pouvez également déclencher des vérifications manuelles :
// Check for updates manuallyconst latest = await updater.getLatest();
if (latest.url && !latest.error) { console.log('Update available:', latest.version);
// Download the update const bundle = await updater.download({ url: latest.url, version: latest.version, checksum: latest.checksum, });
console.log('Downloaded bundle:', bundle.id);
// Option 1: Queue for next restart await updater.next({ id: bundle.id });
// Option 2: Apply immediately and reload // await updater.set({ id: bundle.id });}Écouter les événements
Section intitulée “Écouter les événements”Suivez la progression et l'état des mises à jour avec les événements :
// Download progressupdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`);});
// Update availableupdater.addListener('updateAvailable', (event) => { console.log('New version available:', event.bundle.version);});
// Download completedupdater.addListener('downloadComplete', (event) => { console.log('Download finished:', event.bundle.id);});
// Update failedupdater.addListener('updateFailed', (event) => { console.error('Update failed:', event.bundle.version);});Déployer les Mises à jour
Section intitulée “Déployer les Mises à jour”Utilisez les Capgo CLI pour télécharger les mises à jour :
# Build your appnpm run build
# Upload to Capgonpx @capgo/cli@latest bundle upload --channel=productionVotre application Electron détectera automatiquement et téléchargera le nouveau bundle lors du prochain contrôle.
Menu de débogage
Section intitulée “Menu de débogage”Activer le menu de débogage pendant le développement :
const updater = new ElectronUpdater({ appId: 'YOUR_CAPGO_APP_ID', debugMenu: true, // Enable debug menu});Appuyez Ctrl+Shift+D (ou Cmd+Shift+D sur Mac) pour ouvrir le menu de débogage et :
- Afficher les informations sur le bundle actuel
- Passer entre les différents bundles disponibles
- Réinitialiser vers la version intégrée
- Afficher les informations sur le dispositif et le canal
Options de configuration
Section intitulée « Options de configuration »const updater = new ElectronUpdater({ // Required appId: 'com.example.app',
// Server URLs (defaults to Capgo Cloud) updateUrl: 'https://plugin.capgo.app/updates', channelUrl: 'https://plugin.capgo.app/channel_self', statsUrl: 'https://plugin.capgo.app/stats',
// Behavior autoUpdate: true, // Enable auto-updates appReadyTimeout: 10000, // MS before rollback (default: 10s) autoDeleteFailed: true, // Delete failed bundles autoDeletePrevious: true, // Delete old bundles after successful update
// Channels defaultChannel: 'production',
// Security publicKey: '...', // For end-to-end encryption
// Debug debugMenu: false, // Enable debug menu disableJSLogging: false, // Disable console logs
// Periodic Updates periodCheckDelay: 0, // Seconds between checks (0 = disabled, min 600)});Étapes suivantes
Section intitulée « Étapes suivantes »- API Référence - Explorez toutes les méthodes disponibles
- Canaux - En savoir plus sur les canaux de déploiement
- Rollbacks - Comprenez la protection de rollback