Zum Inhalt springen

Einführung zum Electron-Updater

GitHub

Diese Anleitung führt Sie durch die Einrichtung @capgo/electron-updater zur Aktivierung von Live-Updates für JavaScript/HTML/CSS in Ihrer Electron-Anwendung.

  • Elektron 20.0.0 oder höher
  • Node.js 18 oder höher
  • Ein Capgo-Konto (Registrieren Sie sich unter) capgo.App)

Sie können unsere AI-gestützte Einrichtung verwenden, um den Plugin zu installieren. Fügen Sie den Capgo-Fähigkeiten zu Ihrem AI-Tool hinzu, indem Sie folgenden Befehl ausführen:

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

Dann verwenden Sie die folgende Anweisung:

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 plattform-spezifischen Anweisungen unten befolgen:

  1. Installieren Sie das Paket:

    Terminalfenster
    bun add @capgo/electron-updater
  2. Ermitteln Sie Ihre App-ID im Capgo-Dashboard. Wenn Sie noch keine App erstellt haben, führen Sie:

    Terminalfenster
    npx @capgo/cli@latest init

Die Electron-Updater-Erweiterung erfordert eine Einrichtung in drei Bereichen: Hauptprozess, Vorladeprozedur 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());

Abschnitt: Aktualisierungen überprüfen

Section titled “Checking for Updates”

With autoUpdate: trueDer Updater überprüft automatisch nach Updates. Sie können auch manuelle Überprüfungen auslösen:

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

Folge dem Update-Progress und -Status mit Ereignissen:

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

Verwende die Capgo CLI zum Hochladen von Updates:

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

Ihre Electron-Anwendung wird automatisch das neue Bundle erkennen und herunterladen, sobald sie das nächste Mal überprüft wird.

Entsperren 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:

  • Zur Anzeige der aktuellen Paketinformationen
  • Zwischen den verfügbaren Paketen wechseln
  • Zurücksetzen auf die integrierte Version
  • Zur Anzeige der Geräte- und Kanalinformationen
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 - Über die Bereitstellungskanäle erfahren
  • Rückgänge - Die Rückgabeschutzfunktion verstehen

Weitermachen von Getting Started with Electron Updater

Abschnitt mit dem Titel "Weitermachen von Getting Started with Electron Updater"

Wenn Sie Capgo verwenden Einführung in Electron Updater um native Plugin-Arbeit zu planen, verbinden Sie es mit Mit @capgo/electron-updater zur Verwendung der native Fähigkeit in Mit @capgo/electron-updater, Capgo Plugin-Verzeichnis zur Produktarbeit in Capgo Plugin-Verzeichnis, Capacitor Plugins von Capgo zur Implementierungsdetail in Capacitor Plugins von Capgo, Hinzufügen oder Aktualisieren von Plugins zur Implementierungsdetail in Hinzufügen oder Aktualisieren von Plugins, und Ionische Enterprise-Plugin-Alternativen für das Produktworkflow in Ionic Enterprise Plugin Alternativen.