Saltare al contenuto principale
Torna ai plugin
@capgo/electron-updater
Tutorial
@capgo/electron-updater

Icona del plugin di aggiornamento di Electron

Aggiornamenti in tempo reale OTA per le app di Electron con la stessa superficie come API aggiornatore capacitor

Guida

Tutorial sull'Aggiornatore di Electron

Utilizzando @capgo/electron-updater

@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updaterLo inizializzi nel processo principale, esponi il ponte del renderer attraverso preload e chiama notifyAppReady() su ogni avvio affinché la protezione del rollback sappia che il pacchetto è sano.

Installazione

bun add @capgo/electron-updater

Configurazione del processo principale

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());
});

Ponte di precaricamento

import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';

exposeUpdaterAPI();

Utilizzo del 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 });
}

Ascolta gli eventi di aggiornamento

updater.addListener('download', ({ percent }) => {
  console.log('Download progress', percent);
});

updater.addListener('updateFailed', ({ bundle }) => {
  console.error('Update failed', bundle.version);
});

Distribuisci un nuovo pacchetto

bun run build
bunx @capgo/cli@latest bundle upload --channel=production

Consigli pratici

  • Chiamare sempre notifyAppReady() all'inizio del renderer affinché la protezione del rollback funzioni come previsto.
  • Mantieni stabile la strada di costruzione integrata e lascia che l'aggiornatore decida se caricare il pacchetto spedito o uno scaricato.
  • Reuse the same Capgo channel and rollout model you already use on mobile when your Electron app shares a backend release pipeline.

Continua a lavorare con @capgo/electron-updater

Se stai utilizzando Utilizza @capgo/electron-updater per pianificare il lavoro di plugin nativo, connettilo con @capgo/electron-updater per i dettagli di implementazione in @capgo/electron-updater, Avvio rapido con Electron Updater per i dettagli di implementazione in Avvio rapido con Electron Updater, Directory dei plugin @Capgo per il flusso di lavoro del prodotto in Directory dei plugin @Capgo, Plugin @Capacitor di @Capgo per i dettagli di implementazione in Plugin @Capacitor di @Capgo, Aggiungere o Aggiornare Plugin per i dettagli di implementazione in Aggiungere o Aggiornare Plugin.