__CAPGO_KEEP_0__ home
Indietro ai plugin
@capgo/electron-updater
Istruzioni
@capgo/electron-updater

Aggiornamento di Electron

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

Guida

Tutorial su Electron Updater

Utilizzando @capgo/electron-updater

@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updater. Si inizializza nel processo principale, si espongono i ponti del renderer attraverso preload e si chiama notifyAppReady() Aggiornamento

Configurazione del processo principale

bun add @capgo/electron-updater

Ponte di preload

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

Installa il plugin Electron Updater per avere gli stessi vantaggi di aggiornamento live come Capacitor.

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 bundle

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

Consigli pratici

  • Chiamalo sempre notifyAppReady() all'inizio del renderer affinché la protezione del rollback funzioni come previsto.
  • Mantieni stabile la cartella costruita e lascia che l'aggiornatore decida se caricare il bundle spedito o uno scaricato.
  • Reinserisci lo stesso canale e il modello di rilascio Capgo che già utilizzi su mobile quando la tua app Electron condivide una pipeline di rilascio backend.

Continua da Utilizzo di @capgo/electron-updater

Se stai utilizzando Utilizzo di @capgo/electron-updater per pianificare il lavoro di plugin nativi, connettilo con @capgo/aggiornatore_electron per i dettagli di implementazione in @capgo/aggiornatore_electron Avvio rapido con Aggiornatore Electron per i dettagli di implementazione in Avvio rapido con Aggiornatore Electron Directory Plugin di Capgo per il flusso di lavoro del prodotto in Directory Plugin di Capgo Plugin di Capacitor per Capgo per i dettagli di implementazione in Plugin di Capacitor per Capgo, e Aggiunta o Aggiornamento di Plugin per i dettagli di implementazione in Aggiunta o Aggiornamento di Plugin.