| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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 })
- }
|