Guía
Cómo usar Electron Updater en Electron
Usando @capgo/electron-updater
@capgo/electron-updater dará a las aplicaciones de Electron el mismo modelo de actualización en vivo Capgo @capgo/capacitor-updater. Lo inicializas en el proceso principal, expone el puente del renderizador a través de preload y llama notifyAppReady() en cada arranque para que la protección de rollback sepa que el paquete 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 carga previa
import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
exposeUpdaterAPI();
Uso del renderizador
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 paquete
bun run build
bunx @capgo/cli@latest bundle upload --channel=production
Consejos prácticos
- Llamar siempre
notifyAppReady()temprano en el renderizador para que la protección de rollback funcione como se espera. - Mantener el camino de construcción estable y dejar que el actualizador decida si cargar el paquete embarcado o uno descargado.
- Reutilizar el mismo canal y modelo de lanzamiento Capgo que ya usas en móviles cuando tu aplicación de Electron comparte una pila de liberación de backend.
Sigue adelante desde Usando @capgo/electron-updater
If estás utilizando Usando @capgo/electron-updater para planificar el trabajo de plugin nativo, conectalo con @capgo/actualizador de electron para el detalle de implementación en @capgo/electron-updater, Inicio con Actualizador de Electron para el detalle de implementación en Inicio con Actualizador de Electron, Directorio de Plugin de Capgo para el flujo de trabajo del producto en Directorio de Plugin de Capgo, Plugins de Capacitor por Capgo para el detalle de implementación en Plugins de Capacitor por Capgo, y Agregar o Actualizar Plugins para los detalles de implementación en la adición o actualización de plugins.