Files
justar_client/src/index.js

133 lines
3.7 KiB
JavaScript
Raw Normal View History

/**
* 入口函数
*/
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();
})
}