Lebih cepat ke konten

Referensi Electron Updater API

GitHub

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

Judul Bagian “notifyAppReady()” Wajib dipanggil pada setiap peluncuran aplikasi.

await updater.notifyAppReady();

(10 detik default), update dianggap gagal dan aplikasi kembali ke versi sebelumnya.

Judul Bagian berjudul “download(options)”

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:

PilihanJenisWajibDeskripsi
urlstringYaURL untuk mengunduh bundle dari
versionstringYaIdentifikasi versi untuk bundle
checksumstringTidakChecksum SHA256 untuk verifikasi
sessionKeystringTidakKunci sesi untuk bundle yang dienkripsi

Kembali: BundleInfo objek dengan id, version, status

Antrumkan paket untuk dimuat pada restart aplikasi berikutnya.

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

Parameter:

PilihanTipeWajibDeskripsi
idstringIyaID Paket untuk di antrumkan

Langsung beralih ke bundle dan muat ulang aplikasi.

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

Parameter:

PilihanTipeWajibDeskripsi
idstringIyaID bundle 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:

PilihanJenisWajibDeskripsi
idstringYaID Paket untuk 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:

PilihanTipeWajibDeskripsi
toLastSuccessfulbooleanTidakJika benar, kembalikan ke bundle terakhir yang sukses bukan built-in

Dapatkan informasi tentang bundle saat ini dan versi native.

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

Daftar semua bundle yang diunduh.

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

Mendapatkan paket yang akan dijalankan setelah restart.

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

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

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

Mendapatkan versi yang dikirimkan bersama dengan aplikasi biner.

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:

SifatTipeDeskripsi
urlstringURL Download (kosong jika tidak ada update)
versionVersi tersediaVersi tersedia
checksumChecksum SHA256Checksum SHA256
sessionKeyKunci enkripsi sesiKunci enkripsi sesi
errorPesan kesalahan jika cek gagalPesan kesalahan jika cek gagal
messagePesan serverPengelolaan Channel

Pengelolaan Channel

__CAPGO_KEEP_0__

Tentukan perangkat ke saluran tertentu.

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

Hapus penugasan saluran dan gunakan default.

await updater.unsetChannel();

Dapatkan penugasan saluran saat ini.

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

Daftar semua channel yang tersedia untuk aplikasi ini.

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

Kontrol kapan pembaruan yang diunduh diterapkan.

Set syarat-syarat 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 Syarat Penundaan:

TipeNilaiDeskripsi
backgroundWaktu opsional (ms)Tunggu aplikasi di background
kill-Tunggu aplikasi dihancurkan dan diulang
dateString tanggal ISOTunggu sampai tanggal/waktu tertentu
nativeVersionString versiTunggu update aplikasi native

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

await updater.cancelDelay();

Dapatkan identifikasi perangkat unik.

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

Setel identifikasi khusus untuk perangkat (bermanfaat untuk analisis).

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

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

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

Ubah ID Aplikasi secara waktu eksekusi.

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

const enabled = await updater.isDebugMenuEnabled();

Dengarkan event pembaruan menggunakan addListener:

updater.addListener('eventName', (event) => {
// Handle event
});
EventPayloadDeskripsi
download{ percent, status }Progres download diperbarui
updateAvailable{ bundle }Update baru tersedia
noNeedUpdate{ message }Sudah terupdate
downloadComplete{ bundle }Download selesai dengan sukses
downloadFailed{ bundle, error }Download gagal
breakingAvailable{ bundle }Update tidak kompatibel tersedia (memerlukan update native)
updateFailed{ bundle, reason }Pemasangan update 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 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)
});

Teruskan dari Electron Updater API Referensi

Bab berjudul “Teruskan dari Electron Updater API Referensi”

Jika Anda menggunakan Referensi Electron Updater API untuk merencanakan dashboard dan API operasi, hubungkannya dengan Menggunakan @capgo/electron-updater untuk kemampuan asli dalam Menggunakan @capgo/electron-updater, Ringkasan API untuk detail implementasi di Ringkasan API Pendahuluan untuk detail implementasi di Pendahuluan Kunci API untuk detail implementasi di Kunci API, dan Perangkat untuk detail implementasi di Perangkat.