feat: enable auto-update and auto-install of app updates
This commit is contained in:
parent
cd625430b2
commit
e1494d408f
@ -9,7 +9,7 @@ export default class AppUpdater {
|
|||||||
logger.transports.file.level = 'debug'
|
logger.transports.file.level = 'debug'
|
||||||
autoUpdater.logger = logger
|
autoUpdater.logger = logger
|
||||||
autoUpdater.forceDevUpdateConfig = true
|
autoUpdater.forceDevUpdateConfig = true
|
||||||
autoUpdater.autoDownload = false
|
autoUpdater.autoDownload = true
|
||||||
|
|
||||||
// 检测下载错误
|
// 检测下载错误
|
||||||
autoUpdater.on('error', (error) => {
|
autoUpdater.on('error', (error) => {
|
||||||
@ -18,40 +18,8 @@ export default class AppUpdater {
|
|||||||
})
|
})
|
||||||
|
|
||||||
autoUpdater.on('update-available', (releaseInfo: UpdateInfo) => {
|
autoUpdater.on('update-available', (releaseInfo: UpdateInfo) => {
|
||||||
autoUpdater.logger?.info('检测到新版本,确认是否下载')
|
autoUpdater.logger?.info('检测到新版本,开始自动下载')
|
||||||
mainWindow.webContents.send('update-available', releaseInfo)
|
mainWindow.webContents.send('update-available', releaseInfo)
|
||||||
|
|
||||||
const releaseNotes = releaseInfo.releaseNotes
|
|
||||||
let releaseContent = ''
|
|
||||||
|
|
||||||
if (releaseNotes) {
|
|
||||||
if (typeof releaseNotes === 'string') {
|
|
||||||
releaseContent = <string>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', () => {
|
autoUpdater.on('update-downloaded', () => {
|
||||||
logger.info('下载完成,准备更新')
|
logger.info('下载完成,询问用户是否更新')
|
||||||
dialog
|
dialog
|
||||||
.showMessageBox({
|
.showMessageBox({
|
||||||
|
type: 'info',
|
||||||
title: '安装更新',
|
title: '安装更新',
|
||||||
message: '更新下载完毕,应用将重启并进行安装'
|
message: '更新已下载完成,是否立即安装?',
|
||||||
|
buttons: ['稍后安装', '立即安装'],
|
||||||
|
defaultId: 1,
|
||||||
|
cancelId: 0
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(({ response }) => {
|
||||||
setImmediate(() => autoUpdater.quitAndInstall())
|
if (response === 1) {
|
||||||
|
setImmediate(() => autoUpdater.quitAndInstall())
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user