Zum Inhalt springen

__CAPGO_KEEP_0__

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.

  • Elektron 20.0.0 oder höher
  • Node.js 18 oder höher
  • Ein Capgo-Konto (Registrieren Sie sich bei capgo.app)
  1. Installieren Sie das Paket:

    Terminalfenster
    bun add @capgo/electron-updater
  2. Holten Sie sich Ihre App-ID aus dem Capgo-Dashboard. Wenn Sie noch keinen App erstellt haben, führen Sie:

    Terminalfenster
    npx @capgo/cli@latest init

Der Electron-Updater erfordert eine Einrichtung in drei Orten: 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());

Aktualisierungen überprüfen

Überschrift: Aktualisierungen überprüfen

Mit autoUpdate: trueder Updater überprüft automatisch Aktualisierungen. 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 });
}

Verfolgen Sie den Fortschritt und den Status der Aktualisierung 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);
});

Verwenden Sie die Capgo CLI zum Hochladen von Aktualisierungen:

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

Ihr Electron-App wird automatisch den neuen Bundle auf der nächsten Überprüfung erkennen und herunterladen.

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 Bundles wechseln
  • Zurücksetzen auf die interne Version
  • Geräte- und Kanal-Info 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 - Erforsche alle verfügbaren Methoden
  • Kanäle - Erforsche die Informationen zu den Bereitstellungskanälen
  • Rückgängigmachungen - Verstehe die Schutzfunktionen für Rückgängigmachungen

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