Ke halaman utama

Referensi Electron Updater API

GitHub

Metode Utama

Judul bagian “Metode Utama”

Copy for AI

Harus dipanggil pada setiap peluncuran aplikasi. Mengkonfirmasi bahwa bundle telah dimuat dengan sukses 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:

OpsiTipeDiperlukanDeskripsi
urlstringYaURL untuk mengunduh bundle dari
versionstringYaIdentifikasi versi untuk bundle
checksumBahasa IndonesiaTidakSHA256 untuk verifikasi
sessionKeyTidakKunci sesi untuk bundle yang dienkripsiKembali:

objek dengan BundleInfo next(options) id, version, status

Salin ke clipboard

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

Parameter:

PilihanTipeDiperlukanDeskripsi
idstringYaID Paket untuk antrian

Segera berganti ke paket dan muat ulang aplikasi.

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

Parameter:

PilihanTipeDiperlukanDeskripsi
idstringIyaID Paket untuk Mengaktifkan

Meng_reload Aplikasi secara Manual dengan Paket yang Sementara

await updater.reload();

Hapus sebuah bundle dari penyimpanan.

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

Parameter:

OptionTipeWajibDeskripsi
idstringYaID Bundle 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 true, reset ke bundle terakhir yang sukses bukan versi bawaan

Dapatkan informasi tentang paket saat ini dan versi native.

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

Tampilkan semua paket yang diunduh.

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

Ambil bundle yang ditunggu untuk 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

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

Mengembalikan:

SifatTipeDeskripsi
urlstringURL Unduh (kosong jika tidak ada update)
versionstringVersi tersedia
checksumstringChecksum SHA256
sessionKeystringKunci Enkripsi Sesi
errorstringPesan Kesalahan Jika Cek Gagal
messagestringPesan Server

Pengelolaan Saluran

Bab Pengelolaan Saluran

setChannel(options)

Bab setChannel(options)

Tetapkan 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 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 Kondisi Delay:

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

Bersihkan semua kondisi delay dan terapkan update segera pada cek berikutnya

await updater.cancelDelay();

Dapatkan identifikasi unik perangkat.

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

Tetapkan identifikasi khusus untuk perangkat (bermanfaat untuk analisis).

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

Ubah URL Server Perbarui 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 Saluran.

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

Ubah ID Aplikasi secara waktu jalannya.

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 jika 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 yang diperbarui
updateAvailable{ bundle }Tersedia pembaruan baru
noNeedUpdate{ message }Sudah terupdate
downloadComplete{ bundle }Pengunduhan selesai dengan sukses
downloadFailed{ bundle, error }Pengunduhan gagal
breakingAvailable{ bundle }Pembaruan tidak kompatibel (memerlukan pembaruan asli)
updateFailed{ bundle, reason }Penginstalan pembaruan gagal
appReloaded{}Aplikasi telah di-reload
appReady{}notifyAppReady() dipanggil

Contoh: Penggunaan Penuh Event Handling

Judul Bagian “Contoh: Penggunaan Penuh Event Handling”
// 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 Konstruktor

Opsi Konstruktor

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 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, API Ringkasan untuk detail implementasi dalam API Ringkasan, Pendahuluan untuk detail implementasi di Pendahuluan, API Kunci untuk detail implementasi di API Kunci, dan Perangkat untuk detail implementasi di Perangkat.