__CAPGO_KEEP_0__
설치 단계와 이 플러그인의 전체 마크다운 가이드를 포함한 설정 지시를 복사하세요.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/electron-updater`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/electron-updater/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
이 가이드는 @capgo/electron-updater 에서 JavaScript/HTML/CSS 업데이트를 활성화하기 위해 설정하는 방법을 안내합니다.
필수 조건
필수 조건- Electron 20.0.0 이상
- Node.js 18 이상
- Capgo 계정 (이동하여 가입하세요 capgo.app)
설치
설치Capgo 플러그인을 설치하기 위해 AI-Assisted Setup을 사용할 수 있습니다. AI 도구에 Capgo 기능을 추가하려면 다음 명령어를 사용하세요:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins다음 명령어를 사용하세요:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/electron-updater` plugin in my project.만약 Manual Setup을 선호한다면, 플러그인을 설치하기 위해 다음 명령어를 실행하고 아래의 플랫폼별 지침을 따르세요:
-
패키지를 설치하세요:
터미널 창 bun add @capgo/electron-updater -
Capgo에서 앱 ID를 가져옵니다. 앱을 아직 생성하지 않았다면, 다음 명령어를 실행하세요.
터미널 창 npx @capgo/cli@latest init
Electron Updater는 메인 프로세스, 프리로드 스크립트, 렌더러 프로세스 세 곳에서 설정이 필요합니다.
메인 프로세스
메인 프로세스(메인 Process) 섹션import { app, BrowserWindow } from 'electron';import * as path from 'path';import { ElectronUpdater, setupIPCHandlers, setupEventForwarding,} from '@capgo/electron-updater';
// Create updater instance with your Capgo App IDconst updater = new ElectronUpdater({ appId: 'YOUR_CAPGO_APP_ID', // e.g., 'com.example.myapp' autoUpdate: true,});
app.whenReady().then(async () => { const mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { preload: path.join(__dirname, 'preload.js'), contextIsolation: true, }, });
// Initialize updater with window and builtin path const builtinPath = path.join(__dirname, 'www/index.html'); await updater.initialize(mainWindow, builtinPath);
// Setup IPC communication between main and renderer setupIPCHandlers(updater); setupEventForwarding(updater, mainWindow);
// Load the current bundle (either builtin or downloaded update) await mainWindow.loadFile(updater.getCurrentBundlePath());});
app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); }});프리로드 스크립트
프리로드 스크립트(Preload Script) 섹션import { exposeUpdaterAPI } from '@capgo/electron-updater/preload';
// Expose the updater API to the renderer processexposeUpdaterAPI();렌더러 프로세스
렌더러 프로세스 제목// renderer.ts (or in your app's entry point)import { requireUpdater } from '@capgo/electron-updater/renderer';
const updater = requireUpdater();
// CRITICAL: Call this on every app launch!// This confirms the bundle loaded successfully and prevents rollbackawait updater.notifyAppReady();
console.log('App ready, current bundle:', await updater.current());업데이트 확인
업데이트 확인 섹션그리고 autoUpdate: true, 업데이트기능이 자동으로 업데이트를 확인합니다. 또한 수동 업데이트를 확인할 수 있습니다.
// Check for updates manuallyconst latest = await updater.getLatest();
if (latest.url && !latest.error) { console.log('Update available:', latest.version);
// Download the update const bundle = await updater.download({ url: latest.url, version: latest.version, checksum: latest.checksum, });
console.log('Downloaded bundle:', bundle.id);
// Option 1: Queue for next restart await updater.next({ id: bundle.id });
// Option 2: Apply immediately and reload // await updater.set({ id: bundle.id });}클립보드 복사
// Download progressupdater.addListener('download', (event) => { console.log(`Download progress: ${event.percent}%`);});
// Update availableupdater.addListener('updateAvailable', (event) => { console.log('New version available:', event.bundle.version);});
// Download completedupdater.addListener('downloadComplete', (event) => { console.log('Download finished:', event.bundle.id);});
// Update failedupdater.addListener('updateFailed', (event) => { console.error('Update failed:', event.bundle.version);});Capgo CLI
# Build your appnpm run build
# Upload to Capgonpx @capgo/cli@latest bundle upload --channel=production다음에 체크할 때 새로운 번들을 자동으로 감지하고 다운로드할 것입니다.
디버그 메뉴
제목이 '디버그 메뉴'인 섹션개발 중 디버그 메뉴를 활성화하세요:
const updater = new ElectronUpdater({ appId: 'YOUR_CAPGO_APP_ID', debugMenu: true, // Enable debug menu});디버그 메뉴를 열기 위해 Ctrl+Shift+D (또는 Cmd+Shift+D 맥에서) 디버그 메뉴를 열고:
- 현재 번들의 정보를 확인
- 사용 가능한 번들을-switch
- __CAPGO_KEEP_0__ Reference
- 기기 및 채널 정보 보기
설정 옵션
설정 옵션const updater = new ElectronUpdater({ // Required appId: 'com.example.app',
// Server URLs (defaults to Capgo Cloud) updateUrl: 'https://plugin.capgo.app/updates', channelUrl: 'https://plugin.capgo.app/channel_self', statsUrl: 'https://plugin.capgo.app/stats',
// Behavior autoUpdate: true, // Enable auto-updates appReadyTimeout: 10000, // MS before rollback (default: 10s) autoDeleteFailed: true, // Delete failed bundles autoDeletePrevious: true, // Delete old bundles after successful update
// Channels defaultChannel: 'production',
// Security publicKey: '...', // For end-to-end encryption
// Debug debugMenu: false, // Enable debug menu disableJSLogging: false, // Disable console logs
// Periodic Updates periodCheckDelay: 0, // Seconds between checks (0 = disabled, min 600)});- API Reference 채널
- - 배포 채널에 대한 정보를 알아보십시오 롤백입니다.
- - 모든 사용 가능한 메서드를 탐색하십시오 - 롤백 보호 기능을 이해하세요
Getting Started with Electron Updater로 계속 진행하세요
Getting Started with Electron Updater로 계속 진행하세요Capgo를 사용 중이라면 Getting Started with Electron Updater native 플러그인 작업을 계획하고자 할 때 Using @capgo/electron-updater native 기능을 사용하기 위해 @capgo/electron-updater와 연결하세요 Using @Capgo/electron-updater Capgo Plugin Directory Capacitor Plugins by Capgo Capacitor Plugins by Capgo 플러그인 추가 또는 업데이트 플러그인 추가 또는 업데이트 구현 세부 사항에 대해 Ionic Enterprise 플러그인 대체 Ionic Enterprise 플러그인 대체 제품 워크플로에 대해