Saltarse al contenido principal
Volver a plugins
@capgo/electron-updater
Tutoriales
@capgo/electron-updater

Actualizaciones de Electron

OTA live updates for Electron apps with the same API surface as capacitor-updater

Guía

Tutoriales sobre el actualizador de Electron

Usando @capgo/electron-updater

@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updater. Inicializas en el proceso principal, expone el puente del renderizador a través de preload, y llama notifyAppReady() Instalación

Usando @__CAPGO_KEEP_0__/electron-updater da a las aplicaciones de Electron el mismo modelo de actualización en vivo como .

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 a notifyAppReady() temprano en el renderizador para que la protección de rollback funcione como se espera.
  • Mantenga estable el camino construido y dé a la actualizadora la decisión de cargar el paquete embarcado o uno descargado.
  • Reutilice el mismo canal y modelo de lanzamiento Capgo que ya utiliza en móviles cuando su aplicación de Electron comparte una pila de liberación de backend.

Siga adelante desde Usando @capgo/electron-updater

Si está utilizando Usando @capgo/electron-updater para planificar el trabajo de plugin nativo, conectarlo con @capgo/electron-updater para los detalles de implementación en @capgo/electron-updater, Inicio con Actualizador de Electron para los detalles de implementación en Inicio con Actualizador de Electron, Directorio de Plugins de Capgo para el flujo de trabajo del producto en Directorio de Plugins de Capgo, Plugins de Capacitor por Capgo para los detalles de implementación en Plugins de Capacitor por Capgo, y Agregar o Actualizar Plugins para los detalles de implementación en Agregar o Actualizar Plugins.