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
- Documentación Oficial Dirección: Documentación
- Dirección de API de UpgradeLink: Documentación
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
provider: generic
updaterCacheDirName: electron-demo-updater # Directorio de descarga4. 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.
// 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
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.