Getting Started with Electron Updater
Dieser Inhalt ist in Ihrer Sprache noch nicht verfügbar.
This guide walks you through setting up @capgo/electron-updater in your Electron application to enable live JavaScript/HTML/CSS updates.
Prerequisites
Section titled “Prerequisites”- Electron 20.0.0 or higher
- Node.js 18 or higher
- A Capgo account (sign up at capgo.app)
Installation
Section titled “Installation”-
Install the package:
Terminal window npm install @capgo/electron-updater -
Get your App ID from the Capgo dashboard. If you haven’t created an app yet, run:
Terminal window npx @capgo/cli@latest init
The Electron Updater requires setup in three places: main process, preload script, and renderer process.
Main Process
Section titled “Main Process”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 IDconst 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 Script
Section titled “Preload Script”import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
// Expose the updater API to the renderer processexposeUpdaterAPI();Renderer Process
Section titled “Renderer Process”// 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 rollbackawait updater.notifyAppReady();
console.log('App ready, current bundle:', await updater.current());Checking for Updates
Section titled “Checking for Updates”With autoUpdate: true, the updater automatically checks for updates. You can also trigger manual checks:
// Check for updates manuallyconst 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 });}Listening to Events
Section titled “Listening to Events”Track update progress and status with events:
// Download progressupdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`);});
// Update availableupdater.addListener('updateAvailable', (event) => { console.log('New version available:', event.bundle.version);});
// Download completedupdater.addListener('downloadComplete', (event) => { console.log('Download finished:', event.bundle.id);});
// Update failedupdater.addListener('updateFailed', (event) => { console.error('Update failed:', event.bundle.version);});Deploying Updates
Section titled “Deploying Updates”Use the Capgo CLI to upload updates:
# Build your appnpm run build
# Upload to Capgonpx @capgo/cli@latest bundle upload --channel=productionYour Electron app will automatically detect and download the new bundle on next check.
Debug Menu
Section titled “Debug Menu”Enable the debug menu during development:
const updater = new ElectronUpdater({ appId: 'YOUR_CAPGO_APP_ID', debugMenu: true, // Enable debug menu});Press Ctrl+Shift+D (or Cmd+Shift+D on Mac) to open the debug menu and:
- View current bundle information
- Switch between available bundles
- Reset to builtin version
- View device and channel info
Configuration Options
Section titled “Configuration Options”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)});Next Steps
Section titled “Next Steps”- API Reference - Explore all available methods
- Channels - Learn about deployment channels
- Rollbacks - Understand rollback protection