Saltare al contenuto principale
Torna 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

Tutoriale su Aggiornamento Electron

Utilizzando @capgo/aggiornamento-elettronico

@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 il preload e si 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 caricamento predefinito

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

  • Chiamare sempre notifyAppReady() in anticipo nel renderer affinché la protezione del rollback funzioni come previsto.
  • Mantieni stabile la strada di costruzione predefinita e lascia che l'aggiornatore decida se caricare il bundle spedito o uno scaricato.
  • Ripeti lo stesso canale e 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 Using @capgo/electron-updater per pianificare il lavoro del plugin nativo, connettilo con @capgo/electron-updater for the implementation detail in @capgo/electron-updater, Avvio rapido con l'aggiornatore di Electron per i dettagli di implementazione in Avvio rapido con l'aggiornatore di Electron, Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, and Aggiungere o aggiornare i plugin per i dettagli di implementazione in Aggiungere o aggiornare i plugin.