Zum Inhalt springen

Einstieg in Electron Updater

GitHub

Diese Anleitung führt Sie durch die Einrichtung von @capgo/electron-updater in Ihrer Electron-Anwendung, um lebendige JavaScript/HTML/CSS-Updates zu ermöglichen.

  • Electron 20.0.0 oder höher
  • Node.js 18 oder höher
  • A Capgo Konto (Registrieren Sie sich bei capgo.app)

Sie können unsere AI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie den Capgo-Fähigkeiten Ihrem AI-Tool hinzu, indem Sie die folgende Kommandozeile verwenden:

Terminal-Fenster
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Dann verwenden Sie die folgende Anfrage:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/electron-updater` plugin in my project.

Wenn Sie die manuelle Einrichtung bevorzugen, installieren Sie das Plugin, indem Sie die folgenden Befehle ausführen und die darunter angegebenen plattform-spezifischen Anweisungen befolgen:

  1. Installieren Sie das Paket:

    Terminal-Fenster
    bun add @capgo/electron-updater
  2. Erhalten Sie Ihre App-ID aus der Capgo-Oberfläche. Wenn Sie noch keinen App erstellt haben, führen Sie:

    Terminalfenster
    npx @capgo/cli@latest init

Der Electron-Updater erfordert eine Einrichtung an drei Stellen: Hauptprozess, Vorladeprogramm und Renderer-Prozess.

main.ts
import { app, BrowserWindow } from 'electron';
import * as path from 'path';
import {
ElectronUpdater,
setupIPCHandlers,
setupEventForwarding,
} from '@capgo/electron-updater';
// Create updater instance with your Capgo App ID
const updater = new ElectronUpdater({
appId: 'YOUR_CAPGO_APP_ID', // e.g., 'com.example.myapp'
autoUpdate: true,
});
app.whenReady().then(async () => {
const mainWindow = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
contextIsolation: true,
},
});
// Initialize updater with window and builtin path
const builtinPath = path.join(__dirname, 'www/index.html');
await updater.initialize(mainWindow, builtinPath);
// Setup IPC communication between main and renderer
setupIPCHandlers(updater);
setupEventForwarding(updater, mainWindow);
// Load the current bundle (either builtin or downloaded update)
await mainWindow.loadFile(updater.getCurrentBundlePath());
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
preload.ts
import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
// Expose the updater API to the renderer process
exposeUpdaterAPI();
// renderer.ts (or in your app's entry point)
import { requireUpdater } from '@capgo/electron-updater/renderer';
const updater = requireUpdater();
// CRITICAL: Call this on every app launch!
// This confirms the bundle loaded successfully and prevents rollback
await updater.notifyAppReady();
console.log('App ready, current bundle:', await updater.current());

Mit der Aktualisierung überprüft der Updater automatisch nach Updates. Sie können auch manuelle Prüfungen auslösen: autoUpdate: trueZwischenablage kopieren

// Check for updates manually
const latest = await updater.getLatest();
if (latest.url && !latest.error) {
console.log('Update available:', latest.version);
// Download the update
const bundle = await updater.download({
url: latest.url,
version: latest.version,
checksum: latest.checksum,
});
console.log('Downloaded bundle:', bundle.id);
// Option 1: Queue for next restart
await updater.next({ id: bundle.id });
// Option 2: Apply immediately and reload
// await updater.set({ id: bundle.id });
}

Abschnitt mit dem Titel „Auf Ereignisse hören“

Aktualisierungsfortschritt und -status mit Ereignissen verfolgen:

Zwischenablage kopieren

// Download progress
updater.addListener('download', (event) => {
console.log(`Download progress: ${event.percent}%`);
});
// Update available
updater.addListener('updateAvailable', (event) => {
console.log('New version available:', event.bundle.version);
});
// Download completed
updater.addListener('downloadComplete', (event) => {
console.log('Download finished:', event.bundle.id);
});
// Update failed
updater.addListener('updateFailed', (event) => {
console.error('Update failed:', event.bundle.version);
});

Abschnitt mit dem Titel „Aktualisierungsbereitstellung“

Aktualisierungsfortschritt und -status mit Ereignissen verfolgen:

Benutzen Sie die Capgo CLI zum Hochladen von Updates:

Terminalfenster
# Build your app
npm run build
# Upload to Capgo
npx @capgo/cli@latest bundle upload --channel=production

Ihr Electron-App wird automatisch das neue Bundle erkennen und herunterladen, sobald der nächste Check durchgeführt wird.

Aktivieren Sie das Debug-Menü während der Entwicklung:

const updater = new ElectronUpdater({
appId: 'YOUR_CAPGO_APP_ID',
debugMenu: true, // Enable debug menu
});

Drücken Sie Ctrl+Shift+D (oder Cmd+Shift+D auf einem Mac) zum Öffnen des Debug-Menüs und:

  • Aktuelle Bundle-Informationen anzeigen
  • Zwischen verfügbaren Paketen wechseln
  • Zur internen Version zurücksetzen
  • Geräte- und Kanalinformationen anzeigen
const updater = new ElectronUpdater({
// Required
appId: 'com.example.app',
// Server URLs (defaults to Capgo Cloud)
updateUrl: 'https://plugin.capgo.app/updates',
channelUrl: 'https://plugin.capgo.app/channel_self',
statsUrl: 'https://plugin.capgo.app/stats',
// Behavior
autoUpdate: true, // Enable auto-updates
appReadyTimeout: 10000, // MS before rollback (default: 10s)
autoDeleteFailed: true, // Delete failed bundles
autoDeletePrevious: true, // Delete old bundles after successful update
// Channels
defaultChannel: 'production',
// Security
publicKey: '...', // For end-to-end encryption
// Debug
debugMenu: false, // Enable debug menu
disableJSLogging: false, // Disable console logs
// Periodic Updates
periodCheckDelay: 0, // Seconds between checks (0 = disabled, min 600)
});
  • API Referenz - Alle verfügbaren Methoden erkunden
  • Kanäle - Informationen zu Bereitstellungs-Kanälen erfahren
  • Rückgängigkeiten - Verstehe die Schutzfunktion für Rückgängigkeiten

Wenn Sie Using @__CAPGO_KEEP_0__/electron-updater verwenden Getting Started with Electron Updater um native Plugin-Arbeit zu planen, verbinden Sie es mit Using @capgo/electron-updater für die native Fähigkeit in Using @capgo/electron-updater Capgo Plugin-Verzeichnis für den Produktworkflow in Capgo Plugin-Verzeichnis Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins durch Capgo, Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Plugins hinzufügen oder aktualisieren, und Alternativen zu Ionic Enterprise Plugins für das Produktworkflow in Alternativen zu Ionic Enterprise Plugins.