Lompat ke konten

Referensi Pembaruan Electron API

Halaman ini mendokumentasikan semua metode, event, dan opsi pengaturan yang tersedia untuk Pembarui Electron.

Harus dipanggil pada setiap peluncuran aplikasi. Mengkonfirmasi bahwa bundle dimuat dengan sukses dan mencegah rollback otomatis.

await updater.notifyAppReady();

Unduh sebuah bundle dari sebuah 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:

PilihanTipeDiperlukanDeskripsi
urlBahasa target: IndonesiaYaURL untuk mengunduh bundle dari
versionYaIdentifikasi versi untuk bundleTidak
checksumChecksum SHA256 untuk verifikasiTidakKunci sesi untuk bundle yang dienkripsi
sessionKey__CAPGO_KEEP_0____CAPGO_KEEP_0____CAPGO_KEEP_0__

Mengembalikan: BundleInfo objek dengan id, version, status

Antar antrian untuk memuat bundle pada restart aplikasi berikutnya.

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

Parameter:

OpsiTipeWajibDeskripsi
idstringYaID Paket untuk antrian

Segera beralih ke paket dan memulai ulang aplikasi.

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

Parameter:

PilihanTipeWajibDeskripsi
idstringYaID Paket untuk mengaktifkan

Muat ulang aplikasi dengan paket saat ini secara manual.

await updater.reload();

Hapus paket dari penyimpanan.

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

Parameter:

PilihanJenisWajibDeskripsi
idstringIyaID Paket untuk dihapus

Mengembalikan 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:

Pilihan:TipeDiperlukanDeskripsi
toLastSuccessfulbooleanTidakJika true, reset ke bundle terakhir yang berhasil bukan dari bawaan

Dapatkan informasi tentang bundle saat ini dan versi native

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

Tampilkan semua bundle yang diunduh.

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

Ambil bundle yang akan dijalankan setelah restart berikutnya.

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

Dapatkan informasi tentang update terakhir yang gagal (bermanfaat untuk debugging rollback).

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

Mendapatkan Versi yang Dibawa oleh File Binari Aplikasi.

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

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

Kembali:

SifatTipeDeskripsi
url__CAPGO_KEEP_0__URL Download (kosong jika tidak ada update)
version__CAPGO_KEEP_0__Versi yang tersedia
checksum__CAPGO_KEEP_0__Checksum SHA256
sessionKey__CAPGO_KEEP_0__Kunci Sesi Enkripsi
error__CAPGO_KEEP_0__Pesan Kesalahan jika cek gagal
messagestringPesan server

Tetapkan perangkat ke saluran tertentu.

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

Hapus pengaturan saluran dan gunakan default.

await updater.unsetChannel();

Mendapatkan penugasan saluran saat ini.

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

Mendapatkan semua saluran yang tersedia untuk aplikasi ini.

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

Mengendalikan kapan pembaruan yang diunduh diterapkan.

Setel Pengunduran Multi (opsi)

Bagian berjudul “setMultiDelay(options)”

Set 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 Delay:

JenisNilaiDeskripsi
backgroundWaktu tunggu opsional (ms)Tunggu aplikasi menjadi background
kill-Tunggu aplikasi dibunuh dan di-restart
dateString tanggal ISOTunggu sampai tanggal/waktu spesifik
nativeVersionString VersiTunggu update aplikasi asli

Hapus semua kondisi delay dan terapkan update segera pada cek berikutnya.

await updater.cancelDelay();

Dapatkan identifikasi perangkat unik.

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

Atur identifikasi khusus untuk perangkat (bermanfaat untuk analisis).

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

Ubah URL server pembaruan secara waktu nyata.

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 saluran.

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

Ubah ID Aplikasi pada saat runtime.

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

Dapatkan ID Aplikasi saat ini.

const appId = await updater.getAppId();

Aktifkan atau nonaktifkan menu debug.

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

Periksa apakah menu debug sudah diaktifkan.

const enabled = await updater.isDebugMenuEnabled();

Dengarkan event pembaruan menggunakan addListener:

updater.addListener('eventName', (event) => {
// Handle event
});
EventPayloadDeskripsi
download{ percent, status }Pengupdatean Progress Download
updateAvailable{ bundle }Tersedia Perbarui Baru
noNeedUpdate{ message }Sudah Terupdate
downloadComplete{ bundle }Pengunduhan Berhasil
downloadFailed{ bundle, error }Pengunduhan Gagal
breakingAvailable{ bundle }Perbarui Tidak Kompatibel (memerlukan perbarui asli)
updateFailed{ bundle, reason }Penginstalan Perbarui Gagal
appReloaded{}Aplikasi telah di-reload
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 pengaturan penuh 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)
});