Skip to content

공식 electron-updater 구성 요소를 사용한 Electron 프로젝트 통합 참고

1. 공식 electron-updater 구성 요소 소개

Electron에서 제공하는 공식 electron-updater 구성 요소는 업데이트 서버 또는 정적 파일을 통해 애플리케이션의 자동 업데이트를 지원하며, 주요 기능은 다음과 같습니다:

  • Electron 업데이트 프로토콜과 호환되는 버전 확인
  • 크로스 플랫폼 설치 패키지 다운로드 및 설치 프로세스
  • 유연한 업데이트 전략 구성

핵심 자료

전체 논리: UpgradeLink에서 제공하는 업그레이드 전략 API를 호출하여, electron-updater 구성 요소가 구체적인 업데이트 프로세스를 실행하여 공식 업데이트 시스템과의 무단 통합을 구현합니다.

통합 흐름도

2. 통합 핵심 단계

참고 electron-demo 프로젝트 주소

1. 공식 업데이트 구성 요소 설치

2. 공식 동적 업데이트 서버 문서를 읽고 통합 프로세스를 이해하세요. 문서 주소

UpgradeLink는 공식 사양에서 요구하는 요청 매개변수와 응답 구조를 완전히 준수하는 업데이트 API를 제공하여, 무단 교체가 가능합니다.

3. dev-update.yml 파일 추가하여 업데이트 패키지 다운로드 주소 구성

yaml
provider: generic
updaterCacheDirName: electron-demo-updater # 다운로드 디렉토리

4. 코드 교체, 업데이트 확인 방법 조정

공식 업데이트 확인 코드를 기반으로, 공식 checkForUpdates 방법의 인터페이스 주소를 UpgradeLink에서 제공하는 주소로 교체하기만 하면 됩니다.

javascript
// 관련 매개변수 출력
console.log(app.getVersion());
console.log(process.platform);
console.log(process.arch);

const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
    url: FeedURL,
    provider: 'generic',
});
autoUpdater.requestHeaders = {
    'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};

const result = await autoUpdater.checkForUpdates();
// 반환 결과 출력
console.log("result: ", result);

if (!result || !result.updateInfo) {
    // 인터페이스 호출 실패
    return {
        error: "업데이트 정보를 얻을 수 없습니다",
        currentVersion: app.getVersion()
    };
} else if (result.updateInfo.version === app.getVersion()) {
    // 반환된 버전 번호가 현재 버전과 일치하면 현재 버전이 최신 버전임을 나타냅니다
    return {
        updateAvailable: false,
        currentVersion: app.getVersion()
    };
} else if (result.updateInfo.version) {
    return {
        updateAvailable: true,
        currentVersion: app.getVersion(),
        newVersion: result.updateInfo.version
    };
}

return {
    updateAvailable: false,
    currentVersion: app.getVersion()
};

5. 코드 교체, 다운로드 및 업데이트 방법 조정, 다운로드 주소를 업데이트 확인 인터페이스에서 반환된 주소로 조정

javascript
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
    url: FeedURL,
    provider: 'generic',
});
autoUpdater.requestHeaders = {
    'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();

// 업데이트 확인 인터페이스 반환 결과 출력
console.log(result);

autoUpdater.setFeedURL({
    url: result.updateInfo.path,
    provider: 'generic',
});
console.log('[Process] 다운로드 업데이트 시작, URL:', result.updateInfo.path);
try {
    await autoUpdater.downloadUpdate();
    console.log('[Process] 다운로드 업데이트 완료');
} catch (e) {
    console.error('[Process] 다운로드 업데이트 실패:', e);
    console.error('[DEBUG] 오류 스택:', e.stack);
    throw e;
}

업데이트 프로토콜 요청 매개변수 (platformarch 등) 및 응답 구조는 UpgradeLink에 의해 공식 사양과 완전히 호환되어直接 교체할 수 있습니다.

이상이 통합 가이드입니다. 내용의 상세도를 조정하거나 특정 시나리오 설명을 보충해야 하는 경우, 구체적인 요구사항을 알려주시면 감사하겠습니다.

toolsetlink@163.com