Aller au contenu

Référence Electron Updater API

GitHub

Cette page documente toutes les méthodes, événements et options de configuration disponibles pour Electron Updater.

À appeler à chaque lancement de l’application. Confirme que le bundle a été chargé avec succès et empêche le rollback automatique.

await updater.notifyAppReady();

Télécharger un bundle depuis une URL.

const bundle = await updater.download({
url: 'https://example.com/bundle.zip',
version: '1.0.1',
checksum: 'sha256-hash', // Optional but recommended
sessionKey: '...', // For encrypted bundles
});

Paramètres :

OptionTypeRequisDescription
urlstringOuiURL de téléchargement du bundle
versionstringOuiIdentifiant de version du bundle
checksumstringNonChecksum SHA256 pour vérification
sessionKeystringNonClé de session pour les bundles chiffrés

Retourne : BundleInfo objet avec id, version, status

Queue a bundle to be loaded on next app restart.

await updater.next({ id: 'bundle-id' });

Paramètres :

OptionTypeRequisDescription
idstringOuiBundle ID à mettre en file d'attente

Bascule immédiatement vers un bundle et recharge l'app.

await updater.set({ id: 'bundle-id' });

Paramètres :

OptionTypeRequisDescription
idstringOuiBundle ID à activer

Recharge manuellement l'app avec le bundle actuel.

await updater.reload();

Supprime un bundle du stockage.

await updater.delete({ id: 'bundle-id' });

Paramètres :

OptionTypeRequisDescription
idstringOuiID du bundle à supprimer

Réinitialiser vers la version intégrée ou le dernier bundle réussi.

// Reset to builtin
await updater.reset({ toLastSuccessful: false });
// Reset to last successful bundle
await updater.reset({ toLastSuccessful: true });

Paramètres :

OptionTypeRequisDescription
toLastSuccessfulbooléenNonSi true, réinitialise vers le dernier bundle réussi au lieu du bundle intégré

Obtenez des informations sur le bundle actuel et la version native.

const info = await updater.current();
// { bundle: { id, version, status }, native: '1.0.0' }

Listez tous les bundles téléchargés.

const bundles = await updater.list();
// [{ id, version, status, downloaded, checksum }, ...]

Get the bundle queued for next restart.

const next = await updater.getNextBundle();
// { id, version, status } or null

Récupère des informations sur la dernière mise à jour échouée (utile pour déboguer les rollbacks).

const failed = await updater.getFailedUpdate();
// { id, version, reason } or null

Récupère la version livrée avec le binaire de l’application.

const version = await updater.getBuiltinVersion();
// '1.0.0'

Vérifiez sur le serveur la dernière version disponible.

const latest = await updater.getLatest();
if (latest.url && !latest.error) {
// Update available
console.log('New version:', latest.version);
console.log('Download URL:', latest.url);
} else if (latest.error) {
console.error('Error checking updates:', latest.error);
}

Retourne :

PropriétéTypeDescription
urlstringDownload URL (empty if no update)
versionstringVersion disponible
checksumstringChecksum SHA256
sessionKeystringClé de session de chiffrement
errorstringMessage d’erreur si la vérification a échoué
messagestringMessage du serveur

Affecter l’appareil à un canal spécifique.

await updater.setChannel({ channel: 'beta' });

Supprime l’attribution de canal et utilise le canal par défaut.

await updater.unsetChannel();

Récupère l’attribution de canal actuelle.

const channel = await updater.getChannel();
// { channel: 'production', status: 'set' }

Liste tous les canaux disponibles pour cette application.

const channels = await updater.listChannels();
// ['production', 'beta', 'staging']

Contrôlez quand les mises à jour téléchargées sont appliquées.

Définissez les conditions qui doivent être remplies avant l’application d’une mise à jour.

// Wait for app to be backgrounded
await updater.setMultiDelay({
delayConditions: [{ kind: 'background' }]
});
// Wait until specific date
await updater.setMultiDelay({
delayConditions: [{ kind: 'date', value: '2024-12-25T00:00:00Z' }]
});
// Wait for app to be killed and restarted
await updater.setMultiDelay({
delayConditions: [{ kind: 'kill' }]
});
// Multiple conditions (all must be met)
await updater.setMultiDelay({
delayConditions: [
{ kind: 'background' },
{ kind: 'date', value: '2024-12-25T00:00:00Z' }
]
});

Types de conditions de délai :

TypeValeurDescription
backgroundDurée facultative (ms)Attendre que l’application passe en arrière-plan
kill-Attendre que l’application soit tuée puis relancée
dateChaîne de caractères ISO dateAttendre une date/heure spécifique
nativeVersionChaîne de caractères de versionAttendre une mise à jour native de l’application

Clear all delay conditions and apply update immediately on next check.

await updater.cancelDelay();

Récupère l’identifiant unique de l’appareil.

const deviceId = await updater.getDeviceId();
// 'uuid-xxxx-xxxx-xxxx'

Définit un identifiant personnalisé pour l’appareil (utile pour l’analyse).

await updater.setCustomId({ customId: 'user-123' });

Modifier l’URL du serveur de mise à jour à l’exécution.

await updater.setUpdateUrl({ url: 'https://my-server.com/updates' });

Modifier l’URL de reporting des statistiques.

await updater.setStatsUrl({ url: 'https://my-server.com/stats' });

Modifier l’URL de gestion des canaux.

await updater.setChannelUrl({ url: 'https://my-server.com/channel' });

Modifier l’App ID à l’exécution.

await updater.setAppId({ appId: 'com.example.newapp' });

Récupérer l'ID de l'application actuel.

const appId = await updater.getAppId();

Activer ou désactiver le menu de debug.

await updater.setDebugMenu({ enabled: true });

Vérifier si le menu de debug est activé.

const enabled = await updater.isDebugMenuEnabled();

Écouter les événements de mise à jour à l'aide de addListener:

updater.addListener('eventName', (event) => {
// Handle event
});
ÉvénementCharge utileDescription
download{ percent, status }Mises à jour de la progression du téléchargement
updateAvailable{ bundle }Nouvelle mise à jour disponible
noNeedUpdate{ message }Already up-to-date
downloadComplete{ bundle }Téléchargement terminé avec succès
downloadFailed{ bundle, error }Échec du téléchargement
breakingAvailable{ bundle }Mise à jour incompatible disponible (mise à jour native requise)
updateFailed{ bundle, reason }Échec de l’installation de la mise à jour
appReloaded{}L’application a été rechargée
appReady{}notifyAppReady() a été appelé
// Progress tracking
updater.addListener('download', (event) => {
updateProgressBar(event.percent);
});
// Update available notification
updater.addListener('updateAvailable', (event) => {
showNotification(`Update ${event.bundle.version} available!`);
});
// Handle completion
updater.addListener('downloadComplete', async (event) => {
// Queue for next restart
await updater.next({ id: event.bundle.id });
showNotification('Update will apply on next restart');
});
// Handle failures
updater.addListener('updateFailed', (event) => {
console.error('Update failed:', event.reason);
reportError(event);
});

Options de configuration complètes pour ElectronUpdater:

const updater = new ElectronUpdater({
// Required
appId: 'com.example.app',
// Version override
version: '1.0.0', // Override builtin version detection
// Server URLs
updateUrl: 'https://plugin.capgo.app/updates',
channelUrl: 'https://plugin.capgo.app/channel_self',
statsUrl: 'https://plugin.capgo.app/stats',
// Behavior
autoUpdate: true, // Enable automatic update checks
appReadyTimeout: 10000, // Milliseconds before rollback (default: 10000)
autoDeleteFailed: true, // Auto-delete failed bundles
autoDeletePrevious: true, // Auto-delete old bundles
resetWhenUpdate: true, // Reset to builtin on native update
// Channels
defaultChannel: 'production',
// Direct Update Mode
directUpdate: false, // 'atInstall' | 'onLaunch' | 'always' | false
// Security
publicKey: '...', // RSA public key for E2E encryption
// Dynamic Configuration
allowModifyUrl: false, // Allow runtime URL changes
allowModifyAppId: false, // Allow runtime App ID changes
persistCustomId: false, // Persist custom ID across updates
persistModifyUrl: false, // Persist URL changes
// Debug
debugMenu: false, // Enable debug menu (Ctrl+Shift+D)
disableJSLogging: false, // Disable console logs
// Periodic Updates
periodCheckDelay: 0, // Seconds between auto-checks (0 = disabled, min 600)
});

Si vous utilisez Référence Electron Updater API pour planifier les opérations du dashboard et de API, connectez-l’avec Utiliser @capgo/electron-updater pour la fonctionnalité native dans « Utiliser @capgo/electron-updater », Aperçu de API pour les détails d'implémentation dans « Vue d'ensemble de API », Introduction pour les détails d'implémentation dans l'introduction, Clés API pour les détails d'implémentation dans « Clés API », et Appareils pour les détails d'implémentation dans Devices.