Getting Started with Electron Updater
Copiar una solicitud de configuración con los pasos de instalación y la guía de Markdown completa para este plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/electron-updater`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/electron-updater/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Esta guía te guía a través de la configuración de @capgo/electron-updater en tu aplicación de Electron para habilitar actualizaciones en vivo de JavaScript/HTML/CSS.
Requisitos previos
Sección titulada “Requisitos previos”- Electron 20.0.0 o superior
- Node.js 18 o superior
- Una cuenta de Capgo (regístrate en <a href="Capgo.app">Capgo.app</a>) capgo.app)
Instalación
Sección titulada “Instalación”-
Instale el paquete:
Ventana de terminal bun add @capgo/electron-updater -
Obtén tu ID de aplicación desde la consola de Capgo. Si aún no has creado una aplicación, ejecuta: <a href="Capgo.app">Capgo.app</a>
Ventana de terminal npx @capgo/cli@latest init
Configuración
Sección titulada “Configuración”El actualizador de Electron requiere configuración en tres lugares: proceso principal, script de carga previa y proceso de renderizado.
Proceso Principal
Sección titulada “Proceso Principal”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(); }});Script de carga previa
Sección titulada “Script de carga previa”import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
// Expose the updater API to the renderer processexposeUpdaterAPI();Proceso del Renderizador
Sección titulada “Proceso del Renderizador”// 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());__CAPGO_KEEP_0__
Sección titulada “Verificando Actualizaciones”Con autoUpdate: true, el actualizador verifica automáticamente actualizaciones. También puedes desencadenar verificaciones manuales:
// 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 });}Escuchando Eventos
Sección titulada “Escuchando Eventos”Seguir el progreso y el estado de actualizaciones con eventos:
// 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);});Desplegando Actualizaciones
Sección titulada “Desplegando Actualizaciones”Utiliza los Capgo CLI para subir actualizaciones:
# Build your appnpm run build
# Upload to Capgonpx @capgo/cli@latest bundle upload --channel=productionSu aplicación de Electron detectará automáticamente y descargará el nuevo paquete en la próxima comprobación.
Menú de depuración
Sección titulada “Menú de depuración”Habilite el menú de depuración durante el desarrollo:
const updater = new ElectronUpdater({ appId: 'YOUR_CAPGO_APP_ID', debugMenu: true, // Enable debug menu});Presione Ctrl+Shift+D (o Cmd+Shift+D en Mac) para abrir el menú de depuración y:
- Ver información del paquete actual
- Cambiar entre los paquetes disponibles
- Resetear a la versión incorporada
- Ver información del dispositivo y canal
Opciones de configuración
Sección titulada “Opciones de configuración”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)});Pasos siguientes
Sección titulada “Pasos siguientes”- API Referencia - Explora todos los métodos disponibles
- Canales - Aprende sobre los canales de despliegue
- Reversiones - Entiende la protección de reversiones
Sigue adelante desde Getting Started with Electron Updater
Sección titulada “Sigue adelante desde Getting Started with Electron Updater”Si estás utilizando Getting Started with Electron Updater para planificar el trabajo de plugin nativo, conecta con Usando @capgo/electron-updater para la capacidad nativa en Usando @capgo/electron-updater, Capgo Directorio de Plugins para el flujo de trabajo del producto en Capgo Directorio de Plugins, Capacitor Plugins por Capgo para el detalle de implementación en Capacitor Plugins por Capgo, Agregar o Actualizar Plugins para los detalles de implementación en Agregar o Actualizar Plugins, y Alternativas de Plugins de Ionic Enterprise para el flujo de trabajo del producto en Alternativas de Plugins de Ionic Enterprise.