Lompat ke konten utama
Kembali ke plugin
@capgo/electron-updater
Tutorial
@capgo/electron-updater

Pembaruan Electron

OTA live updates for Electron apps with the same API surface as capacitor-updater

Panduan

Tutorial tentang Pembaruan Electron

Menggunakan @capgo/electron-updater

@capgo/electron-updater gives Electron apps the same Capgo live-update model as @capgo/capacitor-updater Anda inisialisasinya di proses utama, mengekspos jembatan renderer melalui preload, dan memanggil notifyAppReady() pada setiap peluncuran agar proteksi rollback tahu bahwa paketnya sehat.

Pemasangan

bun add @capgo/electron-updater

Pengaturan proses utama

import { app, BrowserWindow } from 'electron';
import path from 'node:path';
import { ElectronUpdater, setupEventForwarding, setupIPCHandlers } from '@capgo/electron-updater';

const updater = new ElectronUpdater({
  appId: 'com.example.desktop',
  autoUpdate: true,
});

app.whenReady().then(async () => {
  const window = new BrowserWindow({
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      contextIsolation: true,
    },
  });

  const builtinPath = path.join(__dirname, 'www/index.html');
  await updater.initialize(window, builtinPath);
  setupIPCHandlers(updater);
  setupEventForwarding(updater, window);

  await window.loadFile(updater.getCurrentBundlePath());
});

Jembatan preload

import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';

exposeUpdaterAPI();

Penggunaan Renderer

import { requireUpdater } from '@capgo/electron-updater/renderer';

const updater = requireUpdater();

await updater.notifyAppReady();

const latest = await updater.getLatest();

if (latest.url && !latest.error) {
  const bundle = await updater.download({
    url: latest.url,
    version: latest.version,
    checksum: latest.checksum,
  });

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

Dengarkan event pembaruan

updater.addListener('download', ({ percent }) => {
  console.log('Download progress', percent);
});

updater.addListener('updateFailed', ({ bundle }) => {
  console.error('Update failed', bundle.version);
});

Tinggalkan bundle baru

bun run build
bunx @capgo/cli@latest bundle upload --channel=production

Saran praktis

  • Selalu panggil notifyAppReady() dini dalam renderer agar perlindungan rollback berfungsi sebagaimana mestinya.
  • Tetapkan jalur yang dibangun stabil dan biarkan pembaruan memutuskan apakah harus memuat bundle yang dikirim atau yang diunduh.
  • Gunakan saluran dan model peluncuran yang sama dengan Capgo yang sudah Anda gunakan di mobile ketika aplikasi Electron Anda berbagi pipeline rilis backend.

Teruskan dari Menggunakan @capgo/electron-updater

Jika Anda menggunakan Menggunakan @capgo/electron-updater untuk merencanakan pekerjaan plugin native, hubungkannya @capgo/pengaturan-pembaruan-elektron untuk detail implementasi di @capgo/pengaturan-pembaruan-elektron, Mulai Menggunakan Pembaruan Elektron untuk detail implementasi di Mulai Menggunakan Pembaruan Elektron, Capgo Direktori Plugin untuk alur kerja produk di Capgo Direktori Plugin, Capacitor Plugin oleh Capgo untuk detail implementasi di Capacitor Plugin oleh Capgo, dan Menambahkan atau Mengupdate Plugin untuk detail implementasi di Menambahkan atau Mengupdate Plugin.