Vai alla navigazione principale

Riferimento all'aggiornamento di Electron API

GitHub

Questa pagina documenta tutte le metodologie, gli eventi e le opzioni di configurazione disponibili per l'Aggiornatore di Electron.

Deve essere chiamata ad ogni avvio dell'applicazione. Conferma che il bundle è stato caricato con successo e impedisce il rollback automatico.

await updater.notifyAppReady();

Scarica un bundle da una 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
});

Parametri:

OpzioneTipoRichiestoDescrizione
urlstringaURL per scaricare il bundle da
versionstringaIdentificatore di versione per il bundle
checksumstringNoChecksum SHA256 per verifica
sessionKeystringNoChiave di sessione per bundle crittografati

Ritorna: BundleInfo oggetto con id, version, status

Coda un bundle per il caricamento alla prossima riavvio dell'app.

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

Parametri:

OpzioneTipoObbligatorioDescrizione
idstringaID della bundle da aggiungere alla coda

Passa immediatamente a una bundle e ricarica l'app.

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

Parametri:

OpzioneTipoObbligatorioDescrizione
idstringaID bundle da attivare

Carica manualmente l'applicazione con il bundle corrente.

await updater.reload();

Elimina un bundle dallo storage.

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

Parametri:

OpzioneTipoRichiestoDescrizione
idstringID bundle da eliminare

Resetta alla versione predefinita o all'ultimo bundle riuscito.

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

Parametri:

OpzioneTipoObbligatorioDescrizione
toLastSuccessfulbooleanoNoSe vero, resetta all'ultimo bundle riuscito anziché alla versione predefinita

Ottieni informazioni sul pacchetto corrente e sulla versione nativa.

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

Elenco tutti i pacchetti scaricati.

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

Esegui il bundle in coda per il prossimo riavvio.

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

Esegui l'aggiornamento fallito (utile per i rollback di debug).

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

Esegui la versione integrata con l'applicazione binaria.

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

Controlla il server per la versione più recente disponibile.

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);
}

Restituisce:

ProprietàTipoDescrizione
urlstringaURL di download (vuoto se non è disponibile alcuna versione aggiornata)
versionstringaVersione disponibile
checksumstringchecksum SHA256
sessionKeystringchiave di sessione di crittografia
errorstringmessaggio di errore se il controllo non è riuscito
messagestringmessaggio del server

Assegna il dispositivo a un canale specifico.

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

Rimuovi l'assegnazione del canale e utilizza il valore predefinito.

await updater.unsetChannel();

Ottieni l'assegnazione del canale corrente.

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

Elencare tutti i canali disponibili per questa app.

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

Controlla quando vengono applicate le aggiornamenti scaricati.

Imposta le condizioni che devono essere soddisfatte prima di applicare un aggiornamento.

// 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' }
]
});

Tipi di condizioni di ritardo:

TipoValoreDescrizione
background__CAPGO_KEEP_0__Attendere che l'app venga messa in background
kill-Attendere che l'app venga uccisa e riavviata
dateStringa di data ISOAttendere fino a una specifica data/ora
nativeVersionStringa di versioneAttendere l'aggiornamento dell'app nativa

Cancella tutte le condizioni di ritardo e applica l'aggiornamento immediatamente alla prossima verifica

await updater.cancelDelay();

Ottieni l'identificatore univoco del dispositivo.

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

Imposta un identificatore personalizzato per il dispositivo (utile per gli analytics).

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

Cambia l'URL del server di aggiornamento in esecuzione.

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

Cambia l'URL di reporting delle statistiche.

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

Cambia l'URL di gestione del canale.

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

Cambia l'ID dell'app in esecuzione.

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

Ottenere l'ID corrente dell'applicazione.

const appId = await updater.getAppId();

Abilita o disabilita il menu di debug.

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

Verifica se il menu di debug è abilitato.

const enabled = await updater.isDebugMenuEnabled();

Ascolta gli aggiornamenti degli eventi utilizzando addListener:

updater.addListener('eventName', (event) => {
// Handle event
});
EventoPacco di datiDescrizione
download{ percent, status }Aggiornamenti del progresso del download
updateAvailable{ bundle }Aggiornamento disponibile
noNeedUpdate{ message }Già aggiornato
downloadComplete{ bundle }Download completato con successo
downloadFailed{ bundle, error }Download fallito
breakingAvailable{ bundle }Aggiornamento incompatibile (richiede aggiornamento nativo)
updateFailed{ bundle, reason }Installaione dell'aggiornamento fallita
appReloaded{}L'app è stata riavviata
appReady{}notifyAppReady() è stato chiamato
// 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);
});

Opzioni di configurazione complete per 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)
});

Se stai utilizzando Electron Updater API Reference per pianificare il dashboard e le API operazioni, connettilo con Utilizzando @capgo/electron-updater per la capacità nativa in Utilizzando @capgo/electron-updater, API Overview per i dettagli di implementazione in API Overview, Introduzione per i dettagli di implementazione in Introduzione, API Chiavi per i dettagli di implementazione in API Chiavi, e Dispositivi per i dettagli di implementazione in Dispositivi.