Aller directement au contenu

Mise à jour Electron API Référence

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

Doit être appelé à chaque lancement de l'application. Confirme que le bundle a été chargé avec succès et empêche le roulback automatique.

await updater.notifyAppReady();

Télécharger un bundle à partir d'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 :

OptionTypeObligatoireDescription
urlchaîne de caractèresOuiURL pour télécharger le bundle
versionchaîneOuiIdentifiant de version pour le bundle
checksumchaîneNonChecksum SHA256 pour la vérification
sessionKeychaîneNonClé de session pour les bundles chiffrés

Retour: BundleInfo objet avec id, version, status

File d'attente un bundle pour qu'il soit chargé à la prochaine redémarrage de l'application.

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

Paramètres :

OptionTypeObligatoireDescription
idchaîneOuiID de bundle à mettre en file d'attente

Passer immédiatement à un bundle et recharger l'application.

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

Paramètres :

OptionTypeObligatoireDescription
idchaîneOuiID de l'application pour l'activation

Recharger manuellement l'application avec le bundle actuel.

await updater.reload();

Supprimer un bundle du stockage.

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

Paramètres :

OptionTypeRequisDescription
idchaîne de caractèresOuiID de l'application à supprimer

Réinitialiser vers la version par défaut ou la dernière version de l'application.

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

Paramètres :

OptionTypeRequisDescription
toLastSuccessfulbooleanNonSi vrai, réinitialisez à la dernière bundle réussie au lieu de la version intégrée

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

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

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

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

Récupérer le bundle programmé pour la prochaine redémarrage.

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

Récupérer des informations sur la dernière mise à jour échouée (utile pour le débogage des retours en arrière).

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

Obtenez la version embarquée avec le fichier binaire de l'application.

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

Vérifiez le serveur pour 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
urlchaîneURL de téléchargement (vide si aucune mise à jour)
versionchaîneVersion disponible
checksumchaîneChecksum SHA256
sessionKeyClé de session de chiffrementMessage d'erreur si la vérification a échoué
errorchaîne__CAPGO_KEEP_0__
message__CAPGO_KEEP_0__Message du serveur

Attribuez le dispositif à un canal spécifique.

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

Supprimer l'affectation de canal et utiliser la valeur par défaut.

await updater.unsetChannel();

Récupérer la mise en relation actuelle du canal.

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

Lister tous les canaux disponibles pour cette application.

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

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

Définir les conditions qui doivent être remplies avant une mise à jour soit appliquée.

// 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 retard :

TypeValeurDescription
backgroundDurée optionnelle (ms)Attendre que l'application soit mis en arrière-plan
kill-Attendre que l'application soit tuée et redémarrée
dateChaîne de date ISOAttendre une date et heure spécifique
nativeVersionChaîne de versionAttendez l'actualisation de l'application native

Supprimer toutes les conditions de mise en attente et appliquer l'actualisation immédiatement lors du prochain contrôle.

await updater.cancelDelay();

Obtenir l'identifiant unique du dispositif.

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

Définir un identifiant personnalisé pour le dispositif (utile pour les analyses).

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

Changer l'URL du serveur de mise à jour en temps réel.

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

Changer l'URL de rapport de statistiques.

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

Changer l'URL de gestion de canal.

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

Changer l'ID de l'application en temps de cours.

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

Obtenir l’ID d’application actuel.

const appId = await updater.getAppId();

Activer ou désactiver le menu de débogage.

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

Vérifier si le menu de débogage est activé.

const enabled = await updater.isDebugMenuEnabled();

Écouter aux événements de mise à jour en utilisant addListener:

updater.addListener('eventName', (event) => {
// Handle event
});
ÉvénementPayloadDescription
download{ percent, status }Mises à jour de progression de téléchargement
updateAvailable{ bundle }Nouvelle mise à jour disponible
noNeedUpdate{ message }Déjà à jour
downloadComplete{ bundle }Téléchargement terminé avec succès
downloadFailed{ bundle, error }Téléchargement échoué
breakingAvailable{ bundle }Mise à jour incompatible (mise à jour native requise)
updateFailed{ bundle, reason }Échec de l'installation de la mise à jour
appReloaded{}L'application a été rechargée
appReady{}notifyAppReady() était 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)
});