/** * 入口函数 */ const electron = require('electron'); const app=electron.app; const path=require('path'); let ipcMain = electron.ipcMain; const autoUpdater =require('electron-updater').autoUpdater; let apppath = app.getAppPath(); //判断是否是开发状态-1 是 let is_dev=apppath.lastIndexOf("JUSTAR"+path.sep+"resources"); let respath=apppath.substring(0, apppath.lastIndexOf("resources") - 1); let update_url=null; let main=require(apppath+path.sep+"src"+path.sep+"js"+path.sep+"main.js"); let read_config=require(apppath+path.sep+"src"+path.sep+"js"+path.sep+"setting"+path.sep+"read_config.js"); let log=require(apppath+path.sep+"src"+path.sep+"js"+path.sep+"setting"+path.sep+"set_log.js").clog; app.whenReady().then(()=>{ //读取及加载配置的文件 if(is_dev==-1){ read_config.readConfig(apppath); read_config.loadConfig(apppath,runMain); }else{ read_config.readConfig(respath); read_config.loadConfig(respath,runMain); } }); //运行main函数(main_dev、main) function runMain(configs){ update_url=configs.update_url; //区分开发和应用的区别 if(is_dev==-1){ log.info("【开发模式下运行】") log.info("项目根目录为:"+apppath); log.info("项目资源目录为:"+apppath); log.info("项目配置文件内容:【"); log.info(configs); log.info("】"); main.createMainWindow(configs,apppath,apppath,updateHandle); }else{ log.info("【应用模式下运行】") log.info("项目根目录为:"+apppath); log.info("项目资源目录为:"+respath); log.info("项目配置文件内容:【"); log.info(configs); log.info("】"); main.createMainWindow(configs,apppath,respath,updateHandle); } } /** * 自动检测更新程序实现 * @param mainWindow */ function updateHandle(mainWindow) { let message = { error: '检查更新出错', checking: '正在检查更新……', updateAva: '检测到新版本,正在下载……', updateNotAva: '现在使用的就是最新版本,不用更新', }; if(update_url==''){ return; } autoUpdater.setFeedURL(update_url); /** * 更新出错 */ autoUpdater.on('error', function (error) { mainWindow.webContents.send('message', [-1,message.error]); }); /** * 检查可用更新 */ autoUpdater.on('checking-for-update', function () { mainWindow.webContents.send('message', [1,message.checking]); }); /** * 有可用更新,会自动进行下载 */ autoUpdater.on('update-available', function (info) { mainWindow.webContents.send('message', [2,message.updateAva,info]); }); /** * 无可用更新 */ autoUpdater.on('update-not-available', function (info) { mainWindow.webContents.send('message', [0,message.updateNotAva]); }); /** * 更新进度 */ autoUpdater.on('download-progress', function (progressObj) { log.info("传过来的数据百分数样式:"+progressObj.percent); mainWindow.webContents.send('downloadProgress', progressObj) }); /** * 更新完成后进行程序重启操作 * event Event * releaseNotes String - 新版本更新公告 * releaseName String - 新的版本号 * releaseDate Date - 新版本发布的日期 * updateURL String - 更新地址 * */ autoUpdater.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) { ipcMain.on('isQuitAndInstall', (e, arg) => { //是否静默更新,更新完成是否立即重启程序 autoUpdater.quitAndInstall(true,arg[0]); app.exit(); }); mainWindow.webContents.send('isQuitAndInstall') }); ipcMain.on("checkForUpdate",()=>{ //执行自动更新检查 autoUpdater.checkForUpdates(); }) }