Ke halaman utama

Pengaturan Pembaruan Electron API Referensi

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

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

await updater.notifyAppReady();

Mendownload 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
urlstringYaURL untuk mendownload bundle dari
versionstringYaPengidentifikasi versi untuk bundle
checksumstringTidakChecksum SHA256 untuk verifikasi
sessionKeystringTidakKunci sesi untuk bundle yang dienkripsi

Returns: BundleInfo objek dengan id, version, status

Antriankan sebuah bundle untuk dimuat pada restart aplikasi berikutnya.

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

Parameter:

PilihanTipeDiperlukanDeskripsi
idstringYaID Bundle untuk di antriankan

Segera beralih ke bundle dan muat ulang aplikasi.

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

Parameter:

PilihanTipeWajibDeskripsi
idstringYaID Bundle untuk mengaktifkan

Muat ulang aplikasi secara manual dengan bundle saat ini.

await updater.reload();

Hapus bundle dari penyimpanan.

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

Parameter:

PilihanTipeWajibDeskripsi
idBahasa IndonesiaYaBundle ID untuk dihapus

Reset ke versi bawaan atau bundle terakhir yang sukses.

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

Parameter:

PilihanTipeWajibDeskripsi
toLastSuccessfulbooleanTidakJika benar, reset ke bundle terakhir yang berhasil dibuat bukan dari versi 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 }, ...]

Dapatkan paket yang ditunggu untuk restart berikutnya.

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

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

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

Dapatkan versi yang dikirimkan bersama dengan file 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);
}

Kembali:

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

Pengelolaan Channel

Manajemen Saluran

Tetapkan perangkat ke saluran tertentu.

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

Hapus pengaturan saluran dan gunakan default.

await updater.unsetChannel();

Dapatkan pengaturan saluran saat ini.

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

Tampilkan semua saluran yang tersedia untuk aplikasi ini.

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

Kontrol kapan pembaruan yang diunduh diterapkan.

Tetapkan 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 Pengunduran Waktu:

JenisNilaiDeskripsi
backgroundDurasi opsional (ms)Tunggu aplikasi menjadi background
kill-Tunggu aplikasi dihentikan dan diulang
dateString tanggal ISOTunggu hingga tanggal/tanggal spesifik
nativeVersionString versiTunggu aplikasi native diperbarui

Menghapus semua kondisi delay dan menerapkan pembaruan segera pada cek berikutnya.

await updater.cancelDelay();

Identifikasi Perangkat

Bab “Identifikasi Perangkat”

Dapatkan identifikasi perangkat unik.

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

setCustomId(options)

Bab “setCustomId(options)”

Tetapkan identifikasi kustom untuk perangkat (bermanfaat untuk analitis).

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 pengelolaan channel.

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

Ubah ID Aplikasi secara waktu eksekusi.

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

Ambil ID Aplikasi saat ini.

const appId = await updater.getAppId();

Aktifkan atau matikan menu debug.

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

__CAPGO_KEEP_1__

const enabled = await updater.isDebugMenuEnabled();

Gunakan untuk mendengarkan event pembaruan addListener:

updater.addListener('eventName', (event) => {
// Handle event
});
EventPayloadDeskripsi
download{ percent, status }Perbarui kemajuan download
updateAvailable{ bundle }Tersedia perbarui baru
noNeedUpdate{ message }Sudah terupdate
downloadComplete{ bundle }Perbarui selesai dengan sukses
downloadFailed{ bundle, error }Perbarui gagal
breakingAvailable{ bundle }Tersedia perbarui yang tidak kompatibel (memerlukan perbarui native)
updateFailed{ bundle, reason }Pemasangan perbarui gagal
appReloaded{}Aplikasi telah di-reload
appReady{}notifyAppReady() dipanggil

Contoh: Penggunaan Penuh Event Handling

Bagian berjudul “Contoh: Pengaturan Event Penuh”
// 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)
});