Saltar al contenido principal
Volver a plugins
@capgo/electron-updater
Tutoriales
por github.com/Cap-go

Actualizador de Electron

Actualizaciones en vivo OTA para aplicaciones de Electron con la misma API superficie que capacitor-updater

Guía

Tutoriales sobre Actualizador de Electron

Usando @capgo/electron-updater

@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updater Inicialízalo en el proceso principal, expón el puente del renderizador a través de preload y llama notifyAppReady() en cada lanzamiento para que la protección de rollback sepa que el paquete es saludable.

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

  • Siempre llamar 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 Using @capgo/electron-updater

Si estás utilizando Using @capgo/electron-updater para planificar el trabajo de plugin nativo, conecta con @capgo/electron-updater para obtener detalles de implementación en @capgo/electron-updater, Getting Started with Electron Updater para obtener detalles de implementación en Getting Started with Electron Updater, Capgo Directorio de Plugins para el flujo de trabajo del producto en Capgo Directorio de Plugins, Capacitor Plugins por Capgo para obtener detalles de implementación en Capacitor Plugins por Capgo, y Actualizando o Agregando Plugins para el detalle de implementación en Actualizando o Agregando Plugins.