Guía
Cómo usar Electron Updater en Electron
Uso de @capgo/electron-updater
@capgo/electron-updater brinda a las apps de Electron el mismo modelo de Capgo Live Update que @capgo/capacitor-updater. Lo inicializas en el proceso principal, expones el bridge del renderer mediante preload y llamas a notifyAppReady() en cada inicio para que la protección de rollback sepa que el bundle está sano.
Instalación
bun add @capgo/electron-updater
Configuración del proceso 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());
});
Puente de preload
import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
exposeUpdaterAPI();
Uso en el 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 });
}
Escuchar eventos de actualización
updater.addListener('download', ({ percent }) => {
console.log('Download progress', percent);
});
updater.addListener('updateFailed', ({ bundle }) => {
console.error('Update failed', bundle.version);
});
Desplegar un nuevo bundle
bun run build
bunx @capgo/cli@latest bundle upload --channel=production
Consejos prácticos
- Llamar siempre a
notifyAppReady()al principio del renderer para que la protección contra rollback funcione correctamente. - Mantén estable la ruta integrada y deja que el updater decida si cargar el bundle incluido o uno descargado.
- Reutiliza el mismo canal Capgo y el modelo de rollout que ya usas en móvil si tu app de Electron comparte el pipeline de release del backend.
Continúa desde Usando @capgo/electron-updater
Si estás usando Uso de @capgo/electron-updater para planificar el trabajo con plugins nativos, conéctalo con @capgo/electron-updater para los detalles de implementación en @capgo/electron-updater, Primeros pasos con Electron Updater para los detalles de implementación en Primeros pasos con Electron Updater, Directorio de plugins de Capgo para el flujo de trabajo del producto en Capgo Plugin Directory, Plugins de Capacitor por Capgo para los detalles de implementación en Capacitor Plugins de Capgo, y Añadir o actualizar plugins para los detalles de implementación al añadir o actualizar plugins.