// 注意这个autoUpdater不是electron中的autoUpdater
|
import { autoUpdater } from "electron-updater"
|
// import { dialog } from 'electron'
|
// import log from 'electron-log';
|
|
/**
|
*
|
* @param {*} sender
|
* @param {*} quiet 静默模式 (系统自动检测时 不提示正在检查更新)
|
*/
|
function handleUpdate(sender, quiet) {
|
// log.info(autoUpdater);
|
const isTest = process.env.NODE_ENV == 'none';
|
const returnData = {
|
error: { status: -1, msg: '检测更新查询异常' },
|
checking: { status: 0, msg: '正在检查应用程序更新' },
|
updateAva: { status: 1, msg: '检测到新版本,正在下载,请稍后' },
|
updateNotAva: { status: 2, msg: '您现在使用的版本为最新版本,无需更新!' },
|
};
|
|
// 清空事件绑定 避免重复触发
|
autoUpdater._events = {};
|
|
// 设置是否自动下载,默认是true,当点击检测到新版本时,会自动下载安装包,所以设置为false,默认为true,点击立即更新以后直接检测是否有新版本,然后进行安装
|
autoUpdater.autoDownload = false
|
|
/*
|
重点说明服务器的地址的内容,内容是打包以后生成的latest.yml,把这个文件放到服务器上,同时和你打包以后的安装包同级目录,这样latest.yml中的地址才能读取到
|
*/
|
let updataPath = isTest ? 'http://118.89.139.230:9098/res-update-test' : 'http://118.89.139.230:9098/res-update';
|
autoUpdater.setFeedURL({
|
provider: 'generic',
|
url: updataPath
|
});
|
// autoUpdater.setFeedURL(updataPath);
|
|
|
//更新错误
|
autoUpdater.on('error', function (error) {
|
!quiet && sendUpdateMessage(sender, returnData.error)
|
});
|
|
//检查中
|
autoUpdater.on('checking-for-update', function () {
|
!quiet && sendUpdateMessage(sender, returnData.checking);
|
});
|
|
//发现新版本
|
// autoUpdater.on('update-available', function (info) {
|
// const options = {
|
// type: 'info',
|
// buttons: ['确定', '取消'],
|
// title: '更新提示',
|
// // ${info.version} Cannot read property 'version' of undefined
|
// message: `发现有新版本'${info.version}',是否下载?`,
|
// cancelId: 1
|
// }
|
// dialog.showMessageBox(options).then(res => {
|
// // log.info(JSON.stringify(res));
|
// if (res.response === 0) {
|
// autoUpdater.downloadUpdate()
|
// } else {
|
// return;
|
// }
|
// })
|
// });
|
autoUpdater.on('update-available', function (info) {
|
sender.send('update-info', { info, updataPath, currentVersion: autoUpdater.currentVersion.version });
|
});
|
|
//当前版本为最新版本
|
autoUpdater.on('update-not-available', function (info) {
|
!quiet && setTimeout(function () {
|
sendUpdateMessage(sender, returnData.updateNotAva)
|
}, 1000);
|
});
|
|
// 更新下载进度事件
|
autoUpdater.on('download-progress', function (progressObj) {
|
// log.info(progressObj.percent, 'p?')
|
sender.send('autodownloadprogress', progressObj)
|
});
|
|
//下载完成后重新安装
|
autoUpdater.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
|
sender.send('isUpdateNow', { event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate })
|
// autoUpdater.quitAndInstall();
|
});
|
//执行自动更新检查
|
autoUpdater.checkForUpdates();
|
// autoUpdater.checkForUpdatesAndNotify()
|
}
|
// 通过main进程发送事件给renderer进程,提示更新信息
|
function sendUpdateMessage(sender, text) {
|
sender.send('messageupdate', text)
|
}
|
|
export default handleUpdate
|