Riferimento all'aggiornamento di Electron API
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Questa pagina documenta tutte le metodologie, gli eventi e le opzioni di configurazione disponibili per l'Aggiornatore di Electron.
Metodi di base
Sottosezione intitolata “Metodi di base”notifyAppReady()
Sezione intitolata “notifyAppReady()”Deve essere chiamata ad ogni avvio dell'applicazione. Conferma che il bundle è stato caricato con successo e impedisce il rollback automatico.
await updater.notifyAppReady();download(options)
Sezione intitolata “download(options)”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:
| Opzione | Tipo | Richiesto | Descrizione |
|---|---|---|---|
url | stringa | Sì | URL per scaricare il bundle da |
version | stringa | Sì | Identificatore di versione per il bundle |
checksum | string | No | Checksum SHA256 per verifica |
sessionKey | string | No | Chiave di sessione per bundle crittografati |
Ritorna: BundleInfo oggetto con id, version, status
next(options)
Sezione intitolata “next(options)”Coda un bundle per il caricamento alla prossima riavvio dell'app.
await updater.next({ id: 'bundle-id' });Parametri:
| Opzione | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
id | stringa | Sì | ID della bundle da aggiungere alla coda |
set(options)
Sezione intitolata “set(options)”Passa immediatamente a una bundle e ricarica l'app.
await updater.set({ id: 'bundle-id' });Parametri:
| Opzione | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
id | stringa | Sì | ID bundle da attivare |
Carica manualmente l'applicazione con il bundle corrente.
await updater.reload();elimina(options)
Sezione intitolata “elimina(options)”Elimina un bundle dallo storage.
await updater.delete({ id: 'bundle-id' });Parametri:
| Opzione | Tipo | Richiesto | Descrizione |
|---|---|---|---|
id | string | Sì | ID bundle da eliminare |
reset(options)
Sottosezione intitolata “reset(options)”Resetta alla versione predefinita o all'ultimo bundle riuscito.
// Reset to builtinawait updater.reset({ toLastSuccessful: false });
// Reset to last successful bundleawait updater.reset({ toLastSuccessful: true });Parametri:
| Opzione | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
toLastSuccessful | booleano | No | Se vero, resetta all'ultimo bundle riuscito anziché alla versione predefinita |
Informazioni del pacchetto
Sezione intitolata “Informazioni del pacchetto”current()
Sezione intitolata “current()”Ottieni informazioni sul pacchetto corrente e sulla versione nativa.
const info = await updater.current();// { bundle: { id, version, status }, native: '1.0.0' }list(options)
Sezione intitolata “list(options)”Elenco tutti i pacchetti scaricati.
const bundles = await updater.list();// [{ id, version, status, downloaded, checksum }, ...]getNextBundle()
Sezione intitolata “getNextBundle()”Esegui il bundle in coda per il prossimo riavvio.
const next = await updater.getNextBundle();// { id, version, status } or nullgetFailedUpdate()
Sottosezione intitolata “getFailedUpdate()”Esegui l'aggiornamento fallito (utile per i rollback di debug).
const failed = await updater.getFailedUpdate();// { id, version, reason } or nullgetBuiltinVersion()
Sottosezione intitolata “getBuiltinVersion()”Esegui la versione integrata con l'applicazione binaria.
const version = await updater.getBuiltinVersion();// '1.0.0'Controllo Aggiornamenti
Sottosezione intitolata “Controllo Aggiornamenti”Esegui l'ultima versione (options)
Sottosezione intitolata “Esegui l'ultima versione (options)”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à | Tipo | Descrizione |
|---|---|---|
url | stringa | URL di download (vuoto se non è disponibile alcuna versione aggiornata) |
version | stringa | Versione disponibile |
checksum | string | checksum SHA256 |
sessionKey | string | chiave di sessione di crittografia |
error | string | messaggio di errore se il controllo non è riuscito |
message | string | messaggio del server |
Gestione dei canali
Sottosezione intitolata “Gestione dei canali”setChannel(options)
Sottosezione intitolata “setChannel(options)”Assegna il dispositivo a un canale specifico.
await updater.setChannel({ channel: 'beta' });unsetChannel(options)
Sezione intitolata “unsetChannel(options)”Rimuovi l'assegnazione del canale e utilizza il valore predefinito.
await updater.unsetChannel();getChannel()
Sezione intitolata “getChannel()”Ottieni l'assegnazione del canale corrente.
const channel = await updater.getChannel();// { channel: 'production', status: 'set' }listChannels()
Sezione intitolata “listChannels()”Elencare tutti i canali disponibili per questa app.
const channels = await updater.listChannels();// ['production', 'beta', 'staging']Condizioni di ritardo
Sezione intitolata “Condizioni di ritardo”Controlla quando vengono applicate le aggiornamenti scaricati.
setMultiDelay(options)
Sezione intitolata “setMultiDelay(options)”Imposta le condizioni che devono essere soddisfatte prima di applicare un aggiornamento.
// Wait for app to be backgroundedawait updater.setMultiDelay({ delayConditions: [{ kind: 'background' }]});
// Wait until specific dateawait updater.setMultiDelay({ delayConditions: [{ kind: 'date', value: '2024-12-25T00:00:00Z' }]});
// Wait for app to be killed and restartedawait 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:
| Tipo | Valore | Descrizione |
|---|---|---|
background | __CAPGO_KEEP_0__ | Attendere che l'app venga messa in background |
kill | - | Attendere che l'app venga uccisa e riavviata |
date | Stringa di data ISO | Attendere fino a una specifica data/ora |
nativeVersion | Stringa di versione | Attendere l'aggiornamento dell'app nativa |
cancelDelay()
Sezione intitolata “cancelDelay()”Cancella tutte le condizioni di ritardo e applica l'aggiornamento immediatamente alla prossima verifica
await updater.cancelDelay();Identificazione del dispositivo
Sezione intitolata “Identificazione del dispositivo”getDeviceId()
Sezione intitolata “getDeviceId()”Ottieni l'identificatore univoco del dispositivo.
const deviceId = await updater.getDeviceId();// 'uuid-xxxx-xxxx-xxxx'setCustomId(options)
Sezione intitolata “setCustomId(options)”Imposta un identificatore personalizzato per il dispositivo (utile per gli analytics).
await updater.setCustomId({ customId: 'user-123' });Configurazione
Sezione intitolata “Configurazione”setUpdateUrl(options)
Sezione intitolata “setUpdateUrl(options)”Cambia l'URL del server di aggiornamento in esecuzione.
await updater.setUpdateUrl({ url: 'https://my-server.com/updates' });setStatsUrl(options)
Sezione intitolata “setStatsUrl(options)”Cambia l'URL di reporting delle statistiche.
await updater.setStatsUrl({ url: 'https://my-server.com/stats' });impostaUrlCanale(options)
Sezione intitolata “impostaUrlCanale(options)”Cambia l'URL di gestione del canale.
await updater.setChannelUrl({ url: 'https://my-server.com/channel' });impostaIdApp(options)
Sezione intitolata “impostaIdApp(options)”Cambia l'ID dell'app in esecuzione.
await updater.setAppId({ appId: 'com.example.newapp' });ottiene l'ID dell'applicazione()
Sottosezione intitolata “ottiene l'ID dell'applicazione()”Ottenere l'ID corrente dell'applicazione.
const appId = await updater.getAppId();impostaMenuDebug(options)
Sottosezione intitolata “impostaMenuDebug(options)”Abilita o disabilita il menu di debug.
await updater.setDebugMenu({ enabled: true });è abilitato il menu di debug?
Sottosezione intitolata “è abilitato il menu di debug?”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});Gli eventi disponibili
Sottosezione intitolata “Gli eventi disponibili”| Evento | Pacco di dati | Descrizione |
|---|---|---|
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 |
Esempio: Gestione completa degli eventi
Sezione intitolata “Esempio: Gestione completa degli eventi”// Progress trackingupdater.addListener('download', (event) => { updateProgressBar(event.percent);});
// Update available notificationupdater.addListener('updateAvailable', (event) => { showNotification(`Update ${event.bundle.version} available!`);});
// Handle completionupdater.addListener('downloadComplete', async (event) => { // Queue for next restart await updater.next({ id: event.bundle.id }); showNotification('Update will apply on next restart');});
// Handle failuresupdater.addListener('updateFailed', (event) => { console.error('Update failed:', event.reason); reportError(event);});Opzioni del costruttore
Sezione intitolata “Opzioni del costruttore”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)});Continua da Electron Updater API Reference
Sezione intitolata “Continua da Electron Updater API Reference”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.