diff --git a/electron/main/update.ts b/electron/main/update.ts index db946a4..e372cfd 100644 --- a/electron/main/update.ts +++ b/electron/main/update.ts @@ -2,9 +2,12 @@ import { app, ipcMain } from 'electron' import { type ProgressInfo, type UpdateDownloadedEvent, + CancellationToken, autoUpdater } from 'electron-updater' +let cancellationToken = new CancellationToken() + export function update(win: Electron.BrowserWindow) { // When set to false, the update download will be triggered through the API @@ -56,6 +59,12 @@ export function update(win: Electron.BrowserWindow) { ) }) + // Cancel downloading + ipcMain.handle('cancel-download', () => { + cancellationToken.cancel() + cancellationToken = new CancellationToken(); + }) + // Install now ipcMain.handle('quit-and-install', () => { autoUpdater.quitAndInstall(false, true) @@ -69,5 +78,5 @@ function startDownload( autoUpdater.on('download-progress', info => callback(null, info)) autoUpdater.on('error', error => callback(error, null)) autoUpdater.on('update-downloaded', complete) - autoUpdater.downloadUpdate() + autoUpdater.downloadUpdate(cancellationToken) } diff --git a/src/components/update/index.tsx b/src/components/update/index.tsx index 9e28bb0..de49299 100644 --- a/src/components/update/index.tsx +++ b/src/components/update/index.tsx @@ -18,7 +18,7 @@ const Update = () => { onCancel?: () => void onOk?: () => void }>({ - onCancel: () => setModalOpen(false), + onCancel: () => ipcRenderer.invoke('cancel-download').then(() => setModalOpen(false)), onOk: () => ipcRenderer.invoke('start-download'), })