Langsung ke konten

Referensi Electron Updater API

GitHub

Halaman ini mendokumentasikan semua metode, event, dan opsi konfigurasi yang tersedia untuk Electron Updater.

Harus dipanggil setiap kali aplikasi diluncurkan. Memastikan bundle berhasil dimuat dan mencegah rollback otomatis.

await updater.notifyAppReady();

Unduh bundle dari 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
});

Parameter:

OpsiTipeWajibDeskripsi
urlstringYaURL untuk mengunduh bundle
versionstringYaPengidentifikasi versi untuk bundle
checksumstringTidakChecksum SHA256 untuk verifikasi
sessionKeystringTidakKunci sesi untuk bundle terenkripsi

Mengembalikan: BundleInfo object dengan id, version, status

Antrikan bundle untuk dimuat saat restart aplikasi berikutnya.

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

Parameter:

OpsiTipeWajibDeskripsi
idstringYaBundle ID untuk antrean

Segera beralih ke bundle dan muat ulang aplikasi.

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

Parameter:

OpsiTipeWajibDeskripsi
idstringYaBundle ID untuk diaktifkan

Muat ulang aplikasi secara manual dengan bundle saat ini.

await updater.reload();

Hapus bundle dari penyimpanan.

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

Parameter:

OpsiTipeWajibDeskripsi
idstringYaBundle ID yang akan dihapus

Reset ke versi bawaan atau bundle terakhir yang berhasil.

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

Parameter:

OpsiTipeWajibDeskripsi
toLastSuccessfulbooleanTidakJika true, reset ke bundle terakhir yang berhasil, bukan versi bawaan

Dapatkan informasi tentang bundle dan versi native saat ini.

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

Tampilkan semua bundle yang sudah di-download.

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

Dapatkan bundle yang antre untuk restart berikutnya.

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

Dapatkan informasi tentang pembaruan terakhir yang gagal (berguna untuk debugging rollback).

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

Dapatkan versi yang disertakan dengan biner aplikasi.

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

Periksa server untuk versi terbaru yang tersedia.

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

Mengembalikan:

PropertiTipeDeskripsi
urlstringURL Download (kosong jika tidak ada update)
versionstringVersi tersedia
checksumstringChecksum SHA256
sessionKeystringKunci sesi enkripsi
errorstringPesan error jika pemeriksaan gagal
messagestringPesan server

Tugaskan perangkat ke channel tertentu.

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

Hapus penetapan channel dan gunakan default.

await updater.unsetChannel();

Ambil penetapan channel saat ini.

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

Tampilkan semua channel yang tersedia untuk aplikasi ini.

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

Kendalikan kapan pembaruan yang diunduh diterapkan.

Atur kondisi yang harus dipenuhi sebelum pembaruan diterapkan.

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

Jenis Kondisi Penundaan:

JenisNilaiDeskripsi
backgroundDurasi opsional (ms)Tunggu hingga aplikasi berada di latar belakang
kill-Tunggu aplikasi ditutup dan dijalankan ulang
dateString tanggal ISOTunggu sampai tanggal/waktu tertentu
nativeVersionString versiTunggu update app native

Hapus semua kondisi delay dan langsung terapkan update pada pengecekan berikutnya.

await updater.cancelDelay();

Dapatkan pengenal unik perangkat.

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

Atur pengenal kustom untuk perangkat (berguna untuk analitik).

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

Ubah URL server update saat runtime.

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

Ubah URL pelaporan statistik.

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

Ubah URL manajemen channel.

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

Ubah App ID saat runtime.

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

Dapatkan App ID saat ini.

const appId = await updater.getAppId();

Aktifkan atau nonaktifkan menu debug.

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

Periksa apakah menu debug diaktifkan.

const enabled = await updater.isDebugMenuEnabled();

Dengarkan event update menggunakan addListener:

updater.addListener('eventName', (event) => {
// Handle event
});
EventPayloadDeskripsi
download{ percent, status }Update progres download
updateAvailable{ bundle }Update baru tersedia
noNeedUpdate{ message }Sudah versi terbaru
downloadComplete{ bundle }Download berhasil diselesaikan
downloadFailed{ bundle, error }Download gagal
breakingAvailable{ bundle }Tersedia update tidak kompatibel (perlu native update)
updateFailed{ bundle, reason }Instalasi update gagal
appReloaded{}Aplikasi telah dimuat ulang
appReady{}notifyAppReady() telah dipanggil
// 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);
});

Opsi konfigurasi lengkap untuk 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)
});

Lanjutkan dari Electron Updater API Referensi

Bagian berjudul “Lanjutkan dari Electron Updater API Reference”

Jika Anda menggunakan Referensi Electron Updater API untuk merencanakan operasi dashboard dan API, hubungkan dengan Menggunakan @capgo/electron-updater untuk kemampuan native di Menggunakan @capgo/electron-updater, Ringkasan API untuk detail implementasi di API Overview, Pendahuluan untuk detail implementasi di Introduction, Kunci API untuk detail implementasi di API Keys, dan Perangkat untuk detail implementasi di Devices.