import { autoUpdater } from 'electron-updater' import { BrowserWindow, ipcMain } from 'electron' let mainWindow: BrowserWindow | null = null export function initUpdater(win: BrowserWindow) { mainWindow = win autoUpdater.autoDownload = false autoUpdater.autoInstallOnAppQuit = true autoUpdater.on('checking-for-update', () => { sendUpdateStatus('checking') }) autoUpdater.on('update-available', (info) => { sendUpdateStatus('available', { version: info.version, releaseNotes: info.releaseNotes, }) }) autoUpdater.on('update-not-available', () => { sendUpdateStatus('not-available') }) autoUpdater.on('download-progress', (progress) => { sendUpdateStatus('downloading', { percent: Math.round(progress.percent), transferred: progress.transferred, total: progress.total, }) }) autoUpdater.on('update-downloaded', () => { sendUpdateStatus('downloaded') }) autoUpdater.on('error', (err) => { sendUpdateStatus('error', { message: err.message }) }) ipcMain.on('updater-check', () => { autoUpdater.checkForUpdates() }) ipcMain.on('updater-download', () => { autoUpdater.downloadUpdate() }) ipcMain.on('updater-install', () => { autoUpdater.quitAndInstall() }) autoUpdater.checkForUpdates() } function sendUpdateStatus(status: string, data?: any) { mainWindow?.webContents.send('updater-status', { status, ...data }) }