diff --git a/electron/main/update.ts b/electron/main/update.ts index f69bcd1d..a6f993ca 100644 --- a/electron/main/update.ts +++ b/electron/main/update.ts @@ -5,8 +5,10 @@ import type { UpdateDownloadedEvent, UpdateInfo, } from 'electron-updater' +import { CancellationToken } from 'electron-updater' const { autoUpdater } = createRequire(import.meta.url)('electron-updater'); +let cancellationToken = new CancellationToken() export function update(win: Electron.BrowserWindow) { @@ -59,6 +61,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) @@ -72,5 +80,5 @@ function startDownload( autoUpdater.on('download-progress', (info: ProgressInfo) => callback(null, info)) autoUpdater.on('error', (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 2f73940e..dc2dee64 100644 --- a/src/components/update/index.tsx +++ b/src/components/update/index.tsx @@ -17,7 +17,7 @@ const Update = () => { onCancel?: () => void onOk?: () => void }>({ - onCancel: () => setModalOpen(false), + onCancel: () => window.ipcRenderer.invoke('cancel-download').then(() => setModalOpen(false)), onOk: () => window.ipcRenderer.invoke('start-download'), })