Passer à la navigation principale
Retour aux plugins
@capgo/electron-updater
Tutoriel
@capgo/electron-updater

Electron Updater

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

Guide

Tutoriel sur l'actualisation de l'électron

Utilisez @capgo/electron-updater

@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updater. Vous l'initialisez dans le processus principal, exposez le pont de rendu à travers le préchargement, et appelez notifyAppReady() l'installation

Configuration du processus principal

bun add @capgo/electron-updater

Le pont de préchargement

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

la protection de rollback sait que le bundle est en bonne santé.

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

exposeUpdaterAPI();

Utilisation du rendu

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

Écoutez les événements de mise à jour

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

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

Déployez un nouveau bundle

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

Conseils pratiques

  • Appelez toujours notifyAppReady() tôt dans le rendu afin que la protection de rollback fonctionne comme prévu.
  • Conservez la voie de construction stable et laissez l'actualiseur décider s'il doit charger le bundle embarqué ou un téléchargé.
  • Réutilisez le même canal et le modèle de lancement Capgo que vous utilisez déjà sur mobile lorsque votre application Electron partage une pipeline de publication de backend.

Continuez à partir de l'utilisation de @capgo/electron-updater

Si vous utilisez l'utilisation de @capgo/electron-updater pour planifier le travail de plugin natif, connectez-l’avec @capgo/mise à jour de l'électron pour le détail d'implémentation dans @capgo/mise à jour de l'électron Prise en main de la mise à jour de l'électron pour le détail d'implémentation dans Prise en main de la mise à jour de l'électron Répertoire des plugins Capgo pour le flux de travail du produit dans le Répertoire des plugins Capgo, Plugins Capacitor par Capgo pour le détail d'implémentation dans les Plugins Capacitor par Capgo, et Ajouter ou mettre à jour les plugins pour le détail d'implémentation dans Ajouter ou mettre à jour les plugins.