Skip to content

Referencia de Integración de Proyecto Electron Usando el Componente Oficial electron-updater

1. Introducción al Componente Oficial electron-updater

El componente oficial electron-updater proporcionado por Electron admite actualizaciones automáticas de aplicaciones a través de servidores de actualización o archivos estáticos, con características fundamentales que incluyen:

  • Verificación de versión compatible con el protocolo de actualización de Electron
  • Proceso de descarga e instalación de paquetes de instalación multiplataforma
  • Configuración flexible de estrategias de actualización

Recursos Fundamentales

Lógica General: Al llamar a la API de estrategia de actualización proporcionada por UpgradeLink, el componente electron-updater ejecuta el proceso de actualización específico, logrando una integración perfecta con el sistema de actualización oficial.

Diagrama de Flujo de Integración

2. Pasos Fundamentales de Integración

Dirección del proyecto de referencia electron-demo

1. Instalar Componente de Actualización Oficial

2. Leer Documentación Oficial del Servidor de Actualización Dinámica, Entender el Proceso de Integración. Dirección de Documentación

UpgradeLink proporciona una API de actualización que cumple completamente con los parámetros de solicitud y estructura de respuesta requeridos por la especificación oficial, permitiendo un reemplazo perfecto.

3. Agregar Archivo dev-update.yml para Configurar la Dirección de Descarga del Paquete de Actualización

yaml
provider: generic
updaterCacheDirName: electron-demo-updater # Directorio de descarga

4. Reemplazo de Código, Ajustar Método de Verificación de Actualización

Basado en el código oficial de verificación de actualización, solo necesitamos reemplazar la dirección de interfaz en el método oficial checkForUpdates con la dirección proporcionada por UpgradeLink.

javascript
// Imprimir parámetros relacionados
console.log(app.getVersion());
console.log(process.platform);
console.log(process.arch);

const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
    url: FeedURL,
    provider: 'generic',
});
autoUpdater.requestHeaders = {
    'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};

const result = await autoUpdater.checkForUpdates();
// Imprimir resultado de retorno
console.log("result: ", result);

if (!result || !result.updateInfo) {
    // Llamada a interfaz fallida
    return {
        error: "No se puede obtener información de actualización",
        currentVersion: app.getVersion()
    };
} else if (result.updateInfo.version === app.getVersion()) {
    // Si el número de versión devuelto coincide con el actual, indica que la versión actual es la más reciente
    return {
        updateAvailable: false,
        currentVersion: app.getVersion()
    };
} else if (result.updateInfo.version) {
    return {
        updateAvailable: true,
        currentVersion: app.getVersion(),
        newVersion: result.updateInfo.version
    };
}

return {
    updateAvailable: false,
    currentVersion: app.getVersion()
};

5. Reemplazo de Código, Ajustar Método de Descarga y Actualización, Ajustar Dirección de Descarga a la Dirección Devuelta por la Interfaz de Verificación de Actualización

javascript
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
    url: FeedURL,
    provider: 'generic',
});
autoUpdater.requestHeaders = {
    'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();

// Imprimir resultado de retorno de la interfaz de verificación de actualización
console.log(result);

autoUpdater.setFeedURL({
    url: result.updateInfo.path,
    provider: 'generic',
});
console.log('[Proceso] Descarga de actualización iniciada, URL:', result.updateInfo.path);
try {
    await autoUpdater.downloadUpdate();
    console.log('[Proceso] Descarga de actualización completada');
} catch (e) {
    console.error('[Proceso] Fallo en la descarga de actualización:', e);
    console.error('[DEBUG] Pila de error:', e.stack);
    throw e;
}

Los parámetros de solicitud del protocolo de actualización (como platform, arch) y la estructura de respuesta son completamente compatibles con la especificación oficial por parte de UpgradeLink, lo que permite un reemplazo directo.

La guía de integración anterior es básica. Si necesitas ajustar detalles de contenido o complementar descripciones de escenarios específicos, por favor informa los requisitos específicos.

toolsetlink@163.com