From e1494d408fd4cf78d82172f5c132ab719dedb4c6 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Wed, 20 Nov 2024 11:04:42 +0800 Subject: [PATCH] feat: enable auto-update and auto-install of app updates --- src/main/services/AppUpdater.ts | 50 ++++++++------------------------- 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/src/main/services/AppUpdater.ts b/src/main/services/AppUpdater.ts index 30796e1b..cb3b4aa3 100644 --- a/src/main/services/AppUpdater.ts +++ b/src/main/services/AppUpdater.ts @@ -9,7 +9,7 @@ export default class AppUpdater { logger.transports.file.level = 'debug' autoUpdater.logger = logger autoUpdater.forceDevUpdateConfig = true - autoUpdater.autoDownload = false + autoUpdater.autoDownload = true // 检测下载错误 autoUpdater.on('error', (error) => { @@ -18,40 +18,8 @@ export default class AppUpdater { }) autoUpdater.on('update-available', (releaseInfo: UpdateInfo) => { - autoUpdater.logger?.info('检测到新版本,确认是否下载') + autoUpdater.logger?.info('检测到新版本,开始自动下载') mainWindow.webContents.send('update-available', releaseInfo) - - const releaseNotes = releaseInfo.releaseNotes - let releaseContent = '' - - if (releaseNotes) { - if (typeof releaseNotes === 'string') { - releaseContent = releaseNotes - } else if (releaseNotes instanceof Array) { - releaseNotes.forEach((releaseNote) => { - releaseContent += `${releaseNote}\n` - }) - } - } else { - releaseContent = '暂无更新说明' - } - - // 弹框确认是否下载更新(releaseContent是更新日志) - dialog - .showMessageBox({ - type: 'info', - title: '应用有新的更新', - detail: releaseContent, - message: '发现新版本,是否现在更新?', - buttons: ['下次再说', '更新'] - }) - .then(({ response }) => { - if (response === 1) { - logger.info('用户选择更新,准备下载更新') - mainWindow.webContents.send('download-update') - autoUpdater.downloadUpdate() - } - }) }) // 检测到不需要更新时 @@ -67,14 +35,20 @@ export default class AppUpdater { // 当需要更新的内容下载完成后 autoUpdater.on('update-downloaded', () => { - logger.info('下载完成,准备更新') + logger.info('下载完成,询问用户是否更新') dialog .showMessageBox({ + type: 'info', title: '安装更新', - message: '更新下载完毕,应用将重启并进行安装' + message: '更新已下载完成,是否立即安装?', + buttons: ['稍后安装', '立即安装'], + defaultId: 1, + cancelId: 0 }) - .then(() => { - setImmediate(() => autoUpdater.quitAndInstall()) + .then(({ response }) => { + if (response === 1) { + setImmediate(() => autoUpdater.quitAndInstall()) + } }) })