Electron에서 개발한 애플리케이션은 github를 사용하여 버전을 유지하고 자동으로 업그레이드합니다.

기술 선택:

1, 전자: 21.3.3

2、전자초대:1.0.17

3. 뷰: 3.2.45

4, 요소 플러스: 2.2.32

배경:

필연적으로 업데이트 및 업그레이드가 필요한 소프트웨어를 작성했습니다.이제 Windows와 마찬가지로 소프트웨어를 자동으로 업데이트하고 업그레이드하는 것이 일반적이며 매번 업그레이드하고 다시 시작하라는 메시지가 표시됩니다.

전자로 개발된 소프트웨어의 경우 자동 업그레이드가 매우 간단하여 해당 자동 업그레이드 모듈을 설치하기만 하면 지원됩니다.관건은 업그레이드 패키지가 어디에 있습니까? 인터넷은 우리에게 변수를 제공하는데, 특히 GitHub는 코드 창고일 뿐만 아니라 버전 패키지를 관리할 수 있습니다.이 기능을 사용하여 전자 소프트웨어의 자동 업데이트 및 업그레이드를 실현합니다.

버전 패키지 출시

GitHub에서 버전 패키지를 관리하기를 원하므로 먼저 관련 버전 패키지를 GitHub에 게시해야 합니다.

1. GitHub는 토큰을 생성합니다.

인터넷에 GitHub 생성 토큰 콘텐츠가 많이 있으므로 여기에서 자세히 설명하지 않겠습니다.


2. package.json 수정

package.json의 "scripts": {}는 다음 콘텐츠를 추가합니다.

"release": "npm run build && electron-builder --win --config --publish always",


3. Electron-builder.yml 수정

기본 게시 구성을 수정합니다.

publish:
  provider: github
  owner: 'NexNoSQL'
  repo: 'NexNoSQLClient'
  token: 'xxx' 
  releaseType: 'release' 

"owner": "***", // 창고 소유자

"repo": "***", // 창고 이름

"releaseType": "릴리스"

"token": "***", //github의 토큰


4. 환경 변수 구성 토큰:

또한 electron-builder.yml에 토큰의 구성을 작성할 수 없으며 환경 변수에서 이 구성 항목을 구성할 수 없습니다. 구성 항목의 키: GH_TOKEN


5. 다음 명령을 실행합니다: npm run release

명령 실행: npm GitHub에 릴리스 릴리스 버전 실행

[====================] 100% 0.0s | NexNoSQL-Client-1.0.0-setup.exe to github

6. GitHub 웨어하우스 출시를 통해 출시한 버전을 확인할 수 있습니다.

 

자동 업데이트

버전 패키지가 있는 후 버전 2.0.0을 릴리스하려고 할 때 전자 응용 프로그램을 자동으로 업그레이드하려면 간단한 한 단계만 수행하면 됩니다.

1、src/main/index.js

index.js에 autoUpdater를 도입하고 app.whenReady().then에 한 줄의 코드를 추가하여 자동 업그레이드를 실현할 수 있습니다.새 버전이 출시되면 자동으로 다운로드되고 소프트웨어를 닫을 때 다음에 열면 자동으로 업데이트됩니다.

const {autoUpdater} = require("electron-updater");

app.whenReady().then(() => {
    autoUpdater.checkForUpdatesAndNotify();
}

2. 더 세련된 운영

1단계는 완전히 제어할 수 없는 자동 업그레이드입니다. src/main/index.js에 다음 이벤트 응답을 추가할 수도 있습니다. 렌더링 프로세스와 상호 작용하여 사용자가 다운로드 및 업데이트 여부를 결정합니다.

function sendStatusToWindow(text) {
    console.log('text=' + text);
}
  
  autoUpdater.on('checking-for-update', () => {
    sendStatusToWindow('Checking for update...');
  })
  
  autoUpdater.on('update-available', (info) => {
    sendStatusToWindow('Update available.');
  })
  
  autoUpdater.on('update-not-available', (info) => {
    sendStatusToWindow('Update not available.');
  })
  
  autoUpdater.on('error', (err) => {
    sendStatusToWindow('Error in auto-updater. ' + err);
  })
  
  autoUpdater.on('download-progress', (progressObj) => {
    let log_message = "Download speed: " + progressObj.bytesPerSecond;
    log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
    log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
    sendStatusToWindow(log_message);
  })
  
  autoUpdater.on('update-downloaded', (info) => {
    sendStatusToWindow('Update downloaded');
  });

3. 2.0.0 패키지를 만들고 테스트

추천

출처blog.csdn.net/duzm200542901104/article/details/129719663