반응형
electron-updater로 최신 릴리스가 있는 지 확인 할 때 checkForUpdates 함수를 사용한다.
이 함수의 결과로 "update-available" 또는 "update-not-available" 이벤트가 발생한다.
자동 업데이트를 구성하는 코드는 대략 아래와 같다.
import { autoUpdater } from "electron-updater";
......
autoUpdater.on("update-available", (info) => {
console.log("Update available.");
autoUpdater.downloadUpdate();
});
autoUpdater.on("update-not-available", (info) => {
console.log("Update not available.");
});
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 + ")";
console.log(log_message);
});
autoUpdater.on("update-downloaded", (info) => {
console.log("Update downloaded");
autoUpdater.quitAndInstall();
});
......
autoUpdater.checkForUpdates();
autoUpdater는 업데이트가 있으면 파일을 자동으로 다운로드 하는데 여기서 예상치 못 한 문제가 발생했다.
"update-available" 이벤트에서 downloadUpdate 함수를 호출했기 때문에 파일을 두 번 다운로드 하면서 예기치 않은 에러가 발생했고 디버깅 하는데 쓸데없는 시간을 낭비하고 말았다.
정리하면 선택은 2가지다.
1. 업데이트 다운로드 및 설치를 autoUpdater가 다 처리하도록 한다.
2. 세세한 제어 및 UX를 제공하기 위해 약간의 처리는 내가 한다.
1번을 선택할 경우 downloadUpdate함수 호출 부분을 빼주면 된다.
2번을 선택할 경우 autoUpdater.autoDownload = false로 자동 다운로드 속성을 꺼주면 된다.
2번의 코드는 아래와 같다.
import { autoUpdater } from "electron-updater";
......
autoUpdater.autoDownload = false;
autoUpdater.on("update-available", (info) => {
console.log("Update available.");
autoUpdater.downloadUpdate();
});
autoUpdater.on("update-not-available", (info) => {
console.log("Update not available.");
});
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 + ")";
console.log(log_message);
});
autoUpdater.on("update-downloaded", (info) => {
console.log("Update downloaded");
autoUpdater.quitAndInstall();
});
......
autoUpdater.checkForUpdates();
반응형
'ELECTRON' 카테고리의 다른 글
Electron과 React를 같이 사용해 보자. (Electron + React 연동) (0) | 2024.06.26 |
---|---|
electron 으로 만든 프로그램에 중복 실행 방지 코드 넣기! (0) | 2024.05.16 |
[electron] github private repo.를 사용하는 자동 업데이트. (0) | 2022.09.06 |
[electron] electron-builder를 사용할 때 vc_redist.exe 실행하기 (0) | 2022.08.05 |
[electron] Windows 에서 electron-builder를 사용할 때 프로그램 설치 폴더 변경하기. (0) | 2022.08.05 |