引用平台log

This commit is contained in:
dinglili 2024-06-07 10:08:22 +08:00 committed by wangpenglong
parent 9bd714534e
commit 28c6de1af4
5 changed files with 282 additions and 112 deletions

View File

@ -107,7 +107,6 @@
"yauzl": "^2.9.2", "yauzl": "^2.9.2",
"yazl": "^2.4.3", "yazl": "^2.4.3",
"axios": "^1.6.1", "axios": "^1.6.1",
"log4js": "^6.9.1",
"async-mutex": "^0.4.0", "async-mutex": "^0.4.0",
"@azure/abort-controller": "^1.0.0" "@azure/abort-controller": "^1.0.0"
}, },
@ -223,7 +222,6 @@
"xml2js": "^0.5.0", "xml2js": "^0.5.0",
"yaserver": "^0.4.0", "yaserver": "^0.4.0",
"axios": "^1.6.1", "axios": "^1.6.1",
"log4js": "^6.9.1",
"async-mutex": "^0.4.0", "async-mutex": "^0.4.0",
"@azure/abort-controller": "^1.0.0" "@azure/abort-controller": "^1.0.0"
}, },

View File

@ -1,5 +1,5 @@
import * as fs from 'fs' import * as fs from 'fs'
import { logger } from 'vs/platform/issue/electron-main/logger'; // import { logger } from 'vs/platform/issue/electron-main/logger';
//读取JSON数据并将其转换为对象格式 //读取JSON数据并将其转换为对象格式
/** /**
* *
@ -7,13 +7,13 @@ import { logger } from 'vs/platform/issue/electron-main/logger';
* @returns * @returns
*/ */
export function readJSON(filePath: string): any { export function readJSON(filePath: string): any {
logger.debug("readJSON"); // logger.debug("readJSON");
try { try {
logger.debug("readJSON" + filePath); // logger.debug("readJSON" + filePath);
let Object = JSON.parse(fs.readFileSync(filePath, 'utf-8')); let Object = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
return Object; return Object;
} catch { } catch {
logger.debug("readJSON,null"); // logger.debug("readJSON,null");
return null; return null;
} }
} }
@ -40,7 +40,7 @@ export function getKeyObject(key: string, JSONObject: any): any {
*/ */
export function getListGoFromKey(key: string, filePath: string): any[] { export function getListGoFromKey(key: string, filePath: string): any[] {
logger.debug("getListGoFromKey"); // logger.debug("getListGoFromKey");
let goInfoArry: any[] = []; let goInfoArry: any[] = [];
const JSONObject = readJSON(filePath); const JSONObject = readJSON(filePath);
@ -54,10 +54,10 @@ export function getListGoFromKey(key: string, filePath: string): any[] {
goInfoArry.push(tmp); goInfoArry.push(tmp);
}) })
} }
goInfoArry.forEach(function (item) { // goInfoArry.forEach(function (item) {
logger.debug("getListGoFromKey" + item.url); // logger.debug("getListGoFromKey" + item.url);
}); // });
logger.debug("getListGoFromKey,end"); // logger.debug("getListGoFromKey,end");
return goInfoArry; return goInfoArry;
} }

View File

@ -21,7 +21,8 @@ import { IDiagnosticsMainService } from 'vs/platform/diagnostics/electron-main/d
import { IDialogMainService } from 'vs/platform/dialogs/electron-main/dialogMainService'; import { IDialogMainService } from 'vs/platform/dialogs/electron-main/dialogMainService';
import { IEnvironmentMainService } from 'vs/platform/environment/electron-main/environmentMainService'; import { IEnvironmentMainService } from 'vs/platform/environment/electron-main/environmentMainService';
import { IDeployMainService, DeployWindowConfiguration, DeployData } from 'vs/platform/issue/common/deploy'; import { IDeployMainService, DeployWindowConfiguration, DeployData } from 'vs/platform/issue/common/deploy';
import { ILogService } from 'vs/platform/log/common/log'; import { ILogService, ILogger } from 'vs/platform/log/common/log';
import { ILoggerMainService } from 'vs/platform/log/electron-main/loggerService';
import { INativeHostMainService } from 'vs/platform/native/electron-main/nativeHostMainService'; import { INativeHostMainService } from 'vs/platform/native/electron-main/nativeHostMainService';
import product from 'vs/platform/product/common/product'; import product from 'vs/platform/product/common/product';
import { IProductService } from 'vs/platform/product/common/productService'; import { IProductService } from 'vs/platform/product/common/productService';
@ -40,7 +41,7 @@ import { platform } from 'vs/base/common/process';
import { join } from 'vs/base/common/path'; import { join } from 'vs/base/common/path';
import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IOpenerService } from 'vs/platform/opener/common/opener';
import { Disposable } from 'vs/base/common/lifecycle'; import { Disposable } from 'vs/base/common/lifecycle';
import { logger } from 'vs/platform/issue/electron-main/logger'; // import { logger } from 'vs/platform/issue/electron-main/logger';
import * as installUtils from 'vs/platform/issue/electron-main/installUtils'; import * as installUtils from 'vs/platform/issue/electron-main/installUtils';
import * as pathUtils from 'vs/platform/issue/electron-main/pathUtils'; import * as pathUtils from 'vs/platform/issue/electron-main/pathUtils';
import * as configUtils from 'vs/platform/issue/electron-main/configUtils'; import * as configUtils from 'vs/platform/issue/electron-main/configUtils';
@ -52,7 +53,6 @@ import axios from "axios";
import { spawn, ChildProcess } from 'child_process'; import { spawn, ChildProcess } from 'child_process';
import { AbortController } from "@azure/abort-controller"; import { AbortController } from "@azure/abort-controller";
const deployWindowState = 'deploy.deployWindowState'; const deployWindowState = 'deploy.deployWindowState';
interface IBrowserWindowOptions { interface IBrowserWindowOptions {
backgroundColor: string | undefined; backgroundColor: string | undefined;
@ -135,10 +135,12 @@ export class DeployMainService implements IDeployMainService {
}; };
startInstallDepWatch = 0; startInstallDepWatch = 0;
logger: ILogger;
constructor( constructor(
private userEnv: IProcessEnvironment, private userEnv: IProcessEnvironment,
@IEnvironmentMainService private readonly environmentMainService: IEnvironmentMainService, @IEnvironmentMainService private readonly environmentMainService: IEnvironmentMainService,
@ILoggerMainService private readonly loggerMainService: ILoggerMainService,
@ILogService private readonly logService: ILogService, @ILogService private readonly logService: ILogService,
@IDiagnosticsService private readonly diagnosticsService: IDiagnosticsService, @IDiagnosticsService private readonly diagnosticsService: IDiagnosticsService,
@IDiagnosticsMainService private readonly diagnosticsMainService: IDiagnosticsMainService, @IDiagnosticsMainService private readonly diagnosticsMainService: IDiagnosticsMainService,
@ -162,21 +164,37 @@ export class DeployMainService implements IDeployMainService {
this.logFile0 = this.installConfig + '/log/install.1.log'; this.logFile0 = this.installConfig + '/log/install.1.log';
this.resultFile = this.installConfig + '/resultFile'; this.resultFile = this.installConfig + '/resultFile';
this.extLogFile0 = this.installConfig + '/log/extInstall.1.log'; this.extLogFile0 = this.installConfig + '/log/extInstall.1.log';
this.logger = loggerMainService.createLogger(URI.file(this.installConfig + "/log/installguide.log"));
this.removeListeners(); this.removeListeners();
this.registerListeners(); this.registerListeners();
} }
//#region Register Listeners //#region Register Listeners
listenerShow = (event: IpcMainEvent, msg: any) => {
if (msg.type === 'info') {
if (this.DeployWindow)
dialog.showMessageBox(this.DeployWindow, {
type: 'info',
title: msg.title,
message: msg.message,
});
}
this.logger.info("显示窗口");
// this.showWindow();
};
listenerHelpLink = (event: IpcMainEvent) => { listenerHelpLink = (event: IpcMainEvent) => {
logger.info("打开帮助页面"); // logger.info("打开帮助页面");
this.logger.info("打开帮助页面");
this.openHelpLink(); this.openHelpLink();
}; };
listenerMiniWindow = (event: IpcMainEvent) => { listenerMiniWindow = (event: IpcMainEvent) => {
logger.info("最小化窗口"); this.logger.info("最小化窗口");
this.minWindow(); this.minWindow();
}; };
listenerCloseWindow = (event: IpcMainEvent) => { listenerCloseWindow = (event: IpcMainEvent) => {
logger.info("关闭窗口"); this.logger.info("关闭窗口");
this.closeWindow(); this.closeWindow();
}; };
@ -290,12 +308,15 @@ export class DeployMainService implements IDeployMainService {
else if (msg.type === 'installScript') { else if (msg.type === 'installScript') {
if (msg.script['file_name'].endsWith(".js")) { if (msg.script['file_name'].endsWith(".js")) {
try { try {
await this.loadAndInvokeFunction(this.selectObject.dirPath + '/' + msg.script['file_name'], "main"); const resarry = await this.loadAndInvokeFunction(this.selectObject.dirPath + '/' + msg.script['file_name'], "main");
const scriptMsg = { const scriptMsg = {
type: "scriptExecSucc", type: resarry[1] === 0 ? "scriptExecSucc" : "scriptExecFail",
depName: msg.script['file_name'] depName: msg.script['file_name']
}; };
logger.info("脚本执行成功" + this.selectObject.dirPath + '/' + msg.script['file_name']); if (resarry[1] === 0)
this.logger.info("脚本执行成功" + this.selectObject.dirPath + '/' + msg.script['file_name']);
else
this.logger.info("脚本执行失败" + this.selectObject.dirPath + '/' + msg.script['file_name'] + resarry[0]);
if (this.DeployWindow) if (this.DeployWindow)
this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg) this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg)
} catch { } catch {
@ -303,7 +324,7 @@ export class DeployMainService implements IDeployMainService {
type: "scriptExecFail", type: "scriptExecFail",
depName: msg.script['file_name'] depName: msg.script['file_name']
}; };
logger.info("脚本执行失败" + this.selectObject.dirPath + '/' + msg.script['file_name']); this.logger.info("脚本执行失败" + this.selectObject.dirPath + '/' + msg.script['file_name']);
if (this.DeployWindow) if (this.DeployWindow)
this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg) this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg)
} }
@ -315,7 +336,7 @@ export class DeployMainService implements IDeployMainService {
type: "scriptExecSucc", type: "scriptExecSucc",
depName: msg.script['file_name'] depName: msg.script['file_name']
}; };
logger.info("脚本执行成功" + this.selectObject.dirPath + '/' + msg.script['file_name']); this.logger.info("脚本执行成功" + this.selectObject.dirPath + '/' + msg.script['file_name']);
if (this.DeployWindow) if (this.DeployWindow)
this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg) this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg)
}).catch(error => { }).catch(error => {
@ -323,7 +344,7 @@ export class DeployMainService implements IDeployMainService {
type: "scriptExecFail", type: "scriptExecFail",
depName: msg.script['file_name'] depName: msg.script['file_name']
}; };
logger.info("脚本执行失败" + this.selectObject.dirPath + '/' + msg.script['file_name']); this.logger.info("脚本执行失败" + this.selectObject.dirPath + '/' + msg.script['file_name']);
if (this.DeployWindow) if (this.DeployWindow)
this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg) this.DeployWindow.webContents.send("kylinide.installWizard.msg", scriptMsg)
}); });
@ -343,7 +364,7 @@ export class DeployMainService implements IDeployMainService {
sudokill.on('exit', (code, signal) => { sudokill.on('exit', (code, signal) => {
if (code == 127) { if (code == 127) {
console.log('授权失败', code); console.log('授权失败', code);
logger.error("取消安装授权失败"); this.logger.error("取消安装授权失败");
} else { } else {
if (this.DeployWindow) { if (this.DeployWindow) {
this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'installFile' }); this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'installFile' });
@ -377,7 +398,219 @@ export class DeployMainService implements IDeployMainService {
} }
}; };
listenerDepInfo = (event: IpcMainEvent, msg: any) => {
handleInitConfigVersify = async (event: IpcMainInvokeEvent, msg: any) => {
//start configverify
// updateConfigDir = msg.dst;
let selectPageShow = 0;
let message: string = "";
this.logger.info("开始校验本地数据");
this.localConfigObject = await this.localConfigVerify(this.localConfigDir, this.productService.IDEVersion);
this.logger.info("本地数据校验结束");
this.logger.info("开始下载校验网络数据");
this.updateConfigObject = await this.downloadAndVerify(this.updateConfigDir, msg);
this.logger.info("网络数据校验结束");
//1.本地error ,net error -1;
//2.本地error,net right 1;
//3.本地 right ,net error 2;
//4.本地right ,net right ,== 3
//5.本地right ,net right , != 4
//for test
if (this.localConfigObject.res != 0 && this.updateConfigObject.res != 0) {
if (this.DeployWindow) {
if (this.localConfigObject.osinfo == "undefined" && this.updateConfigObject.osinfo == "undefined") {
this.logger.error("安装引导器仅支持openKylin操作系统脚本根据/etc/os-release信息判断操作系统类型");
await dialog.showMessageBox(this.DeployWindow,
{
type: "error",
title: "配置文件检查",
buttons: ["OK"],
detail: `点击【OK】按钮后将跳过此引导步骤请根据开发需要自行下载插件、安装软件依赖。具体信息请查看日志${this.installConfig}/log/instguide.log`,
message: "安装引导器不支持当前系统。"
});
if (this.DeployWindow && this.DeployWindow != undefined)
this.DeployWindow.close();
// .then(result => {
// if (this.DeployWindow && this.DeployWindow != undefined)
// this.DeployWindow.close();
// resolve(void 0);
// })
return void 0;
} else {
this.logger.error("本地数据及网络数据校验失败");
await dialog.showMessageBox(this.DeployWindow,
{
type: "error",
title: "配置文件检查",
buttons: ["OK"],
detail: `点击【OK】按钮后将跳过此引导步骤请根据开发需要自行下载插件、安装软件依赖。具体信息请查看日志${this.installConfig}/log/instguide.log`,
message: "本地数据及网络数据校验失败"
});
if (this.DeployWindow && this.DeployWindow != undefined)
this.DeployWindow.close();
return void 0;
// .then(result => {
// if (this.DeployWindow && this.DeployWindow != undefined)
// this.DeployWindow.close();
// resolve(void 0);
// })
}
}
selectPageShow = -1;
} else {
if (this.localConfigObject.res != 0 && this.updateConfigObject.res == 0) {
selectPageShow = 1;
if (this.localConfigObject.osinfo == "undefined") {
message = "本地配置文件不支持当前环境,选择更新选项";
this.logger.error(message);
} else {
message = "本地配置文件已损坏,选择更新选项";
this.logger.error("本地数据校验失败");
}
} else if (this.localConfigObject.res == 0 && this.updateConfigObject.res != 0) {
if (this.updateConfigObject.osinfo == "undefined") {
message = "联网数据文件不支持当前环境";
this.logger.error(message);
} else {
message = "网络数据文件校验失败";
this.logger.error(message);
}
selectPageShow = 2;
} else if (this.localConfigObject.res == 0 && this.updateConfigObject.res == 0) {
if (installUtils.compareVersions(this.updateConfigObject.g_index_Object.ver, this.localConfigObject.g_index_Object.ver) > 0) {
//显示询问用户是否更新配置文件
//比较具体的配置文件是否一致,若是一致则还是选择本地配置,若是不同则
let updateosinfo = this.updateConfigObject.osinfo;
let localosinfo = this.localConfigObject.osinfo;
if (this.updateConfigObject.g_index_Object["config-file"][updateosinfo][0]['sign-md5'] !== this.localConfigObject.g_index_Object["config-file"][localosinfo][0]['sign-md5'])
selectPageShow = 4;
else {
this.logger.info("联网数据与本地配置文件数据版本一致");
selectPageShow = 3;
message = "联网数据与本地配置文件数据版本一致";
}
} else {
selectPageShow = 3;
this.logger.info("联网数据与本地配置文件数据版本一致");
message = "联网数据与本地配置文件数据版本一致";
}
}
console.log("selectPageShow:" + selectPageShow);
let Data;
if (selectPageShow == 0) {
this.selectObject.depInfoJsonPath = this.localConfigDir + "/" + this.localConfigObject.depConfigInfo['file_name'];
this.selectObject.extAddressPath = this.localConfigDir + "/" + this.localConfigObject.g_index_Object['ext-file']['file_name'];
Data = {
osinfo: this.localConfigObject.osinfo,
selectPageShow: selectPageShow,
type: "configVersify"
}
} else {
Data = {
localConfigObject: this.localConfigObject,
updateConfigObject: this.updateConfigObject,
selectPageShow: selectPageShow,
message: message,
type: "configVersify"
}
}
if (this.DeployWindow) {
return Data;
} else {
return void 0;
}
}
};
handleInitConfigSelect = async (event: IpcMainInvokeEvent, msg: any) => {
let osinfo = "";
if (msg.select === "local") {
osinfo = this.localConfigObject.osinfo;
this.selectObject.dirPath = this.localConfigDir;
this.selectObject.updateFlag = false;
this.selectObject.depInfoJsonPath = this.localConfigDir + "/" + this.localConfigObject.depConfigInfo['file_name'];
this.selectObject.extAddressPath = this.localConfigDir + "/" + this.localConfigObject.g_index_Object['ext-file']['file_name'];
} else if (msg.select === "update") {
this.selectObject.dirPath = this.updateConfigDir;
this.selectObject.updateFlag = true;
osinfo = this.updateConfigObject.osinfo;
this.selectObject.depInfoJsonPath = this.updateConfigDir + "/" + this.updateConfigObject.depConfigInfo['file_name'];
this.selectObject.extAddressPath = this.updateConfigDir + "/" + this.updateConfigObject.g_index_Object['ext-file']['file_name']; //error
}
const { osFile, data } = this.readOSInfo();
const osObject = {
type: "osinfo",
osinfo: osinfo,
osFile: osFile,
osData: data
}
this.logger.info(`选择的配置文件名称:${this.selectObject.depInfoJsonPath}`);
this.logger.info(`识别操作系统信息:${osinfo}`);
if (this.DeployWindow) {
// this.DeployWindow.webContents.send('kylinide.installWizard.init', osObject);
return osObject;
}
else {
return void 0;
}
}
handleInitConfigGetValue = async (event: IpcMainInvokeEvent, msg: any) => {
const selectJson = installUtils.selectFileJson();
let selectKey: string[];
if (selectJson && selectJson.hasOwnProperty('selectKey'))
selectKey = selectJson['selectKey'];
else { selectKey = []; }
const Data = {
type: "configGetValue",
depInfoData: JSON.parse(fs.readFileSync(this.selectObject.depInfoJsonPath, 'utf-8')),
depInfoJsonPath: this.selectObject.depInfoJsonPath,
extAddressPath: this.selectObject.extAddressPath,
selectKey: selectKey ? selectKey : []
}
if (this.DeployWindow) {
// if (msg.class === "install")
// this.DeployWindow.webContents.send('kylinide.installWizard.init', Data);
// else if (msg.class === "download") {
// this.DeployWindow.webContents.send('kylinide.installWizard.justDownLoad', Data); // todo
// }
return Data;
}
else {
return void 0;
}
};
handleHttpVerify = async (event: IpcMainInvokeEvent, msg: any) => {
try {
await this.checkHttp();
console.log("ipc main kylinide.installWizard.init httpVerify");
// this.DeployWindow?.webContents.send('kylinide.installWizard.init', { type: "httpVerify" });
return { type: "httpVerify" };
// this.safeSend(event, 'kylinide.installWizard.init', { type: "httpVerify" });
} catch (error) {
if (this.DeployWindow) {
dialog.showMessageBox(this.DeployWindow,
{
type: "error",
title: "网络检查",
message: "网络异常,无法使用在线安装"
});
}
return void 0;
}
//联网下载、检查、校验配置
};
handleDepList = async (event: IpcMainInvokeEvent, msg: any) => {
this.depList = []; this.depList = [];
this.extList = []; this.extList = [];
// scriptList = []; // scriptList = [];
@ -1020,7 +1253,7 @@ export class DeployMainService implements IDeployMainService {
const listenerSkipWizard = async (event: IpcMainEvent) => { const listenerSkipWizard = async (event: IpcMainEvent) => {
logger.info("跳过配置"); this.logger.info("跳过配置");
if (this.DeployWindow && this.DeployWindow != undefined) { if (this.DeployWindow && this.DeployWindow != undefined) {
this.DeployWindow.close(); this.DeployWindow.close();
resolve(void 0); resolve(void 0);
@ -1030,51 +1263,7 @@ export class DeployMainService implements IDeployMainService {
); );
const listenerInit = async (event: IpcMainEvent, msg: any) => { const listenerInit = async (event: IpcMainEvent, msg: any) => {
console.log("main on kylinide.installWizard.init"); console.log("main on kylinide.installWizard.init");
if (msg.type === "httpVerify") { if (msg.type === "writeJson") {
this.checkHttp().then(async res => {
console.log("ipc main kylinide.installWizard.init httpVerify");
this.DeployWindow?.webContents.send('kylinide.installWizard.init', { type: "httpVerify" });
// this.safeSend(event, 'kylinide.installWizard.init', { type: "httpVerify" });
}
).catch(error => {
const msg = {
type: "internetError",
title: "网络检查",
message: "网络异常,无法使用在线安装"
}
if (this.DeployWindow) {
dialog.showMessageBox(this.DeployWindow,
{
type: "error",
title: "网络检查",
message: "网络异常,无法使用在线安装"
});
}
}
);
//联网下载、检查、校验配置
}
else if (msg.type === "configGetValue") {
const selectJson = installUtils.selectFileJson();
let selectKey: string[];
if (selectJson && selectJson.hasOwnProperty('selectKey'))
selectKey = selectJson['selectKey'];
else { selectKey = []; }
const Data = {
type: "configGetValue",
depInfoData: JSON.parse(fs.readFileSync(this.selectObject.depInfoJsonPath, 'utf-8')),
depInfoJsonPath: this.selectObject.depInfoJsonPath,
extAddressPath: this.selectObject.extAddressPath,
selectKey: selectKey ? selectKey : []
}
if (this.DeployWindow) {
if (msg.class === "install")
this.DeployWindow.webContents.send('kylinide.installWizard.init', Data);
else if (msg.class === "download") {
this.DeployWindow.webContents.send('kylinide.installWizard.justDownLoad', Data);
}
}
} else if (msg.type === "writeJson") {
if (this.selectObject.updateFlag) { if (this.selectObject.updateFlag) {
installUtils.modifyJsonProperty(this.installConfig + "/" + "selectFile.json", "selectDir", this.updateConfigDir); installUtils.modifyJsonProperty(this.installConfig + "/" + "selectFile.json", "selectDir", this.updateConfigDir);
} else { } else {
@ -1201,7 +1390,7 @@ export class DeployMainService implements IDeployMainService {
checkHttp() { checkHttp() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logger.info("检查网络联通情况"); this.logger.info("检查网络联通情况");
const options = { const options = {
host: 'www.baidu.com', host: 'www.baidu.com',
port: 80, port: 80,
@ -1210,20 +1399,20 @@ export class DeployMainService implements IDeployMainService {
const req = http.get(options, (res: any) => { const req = http.get(options, (res: any) => {
if (res.statusCode === 200) { if (res.statusCode === 200) {
resolve(200); resolve(200);
logger.info("网络联通正常"); this.logger.info("网络联通正常");
} else { } else {
reject(res.statusCode) reject(res.statusCode)
logger.info('无法访问网络'); this.logger.info('无法访问网络');
} }
}); });
req.setTimeout(5000, () => { req.setTimeout(5000, () => {
reject(-1); reject(-1);
logger.error('网络请求验证超时'); this.logger.error('网络请求验证超时');
}); });
req.on('error', (error) => { req.on('error', (error) => {
reject(error); reject(error);
logger.error('网络链接发生错误:', error); this.logger.error('网络链接发生错误:', error);
}); });
req.end(); req.end();
}) })
@ -1263,9 +1452,9 @@ export class DeployMainService implements IDeployMainService {
verify.update(md5data); verify.update(md5data);
const isVerified = verify.verify(publicKey, signature, 'hex'); const isVerified = verify.verify(publicKey, signature, 'hex');
if (isVerified) { if (isVerified) {
logger.info("签名验证成功:" + dataPath); this.logger.info("签名验证成功:" + dataPath);
} else { } else {
logger.info("签名验证失败:" + dataPath); this.logger.info("签名验证失败:" + dataPath);
} }
return isVerified return isVerified
} }
@ -1286,7 +1475,7 @@ export class DeployMainService implements IDeployMainService {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
writer.on('finish', () => { writer.on('finish', () => {
// console.log('文件已下载到本地:', dst); // console.log('文件已下载到本地:', dst);
logger.info("文件下载成功:" + dst); this.logger.info("文件下载成功:" + dst);
resolve(0); resolve(0);
}); });
@ -1299,14 +1488,14 @@ export class DeployMainService implements IDeployMainService {
}); });
}); });
} catch (error) { } catch (error) {
logger.error("文件下载失败:" + dst); this.logger.error("文件下载失败:" + dst);
if (axios.isCancel(error)) { if (axios.isCancel(error)) {
logger.error('请求已取消'); this.logger.error('请求已取消');
} }
else if (error.code === 'ECONNABORTED') { else if (error.code === 'ECONNABORTED') {
logger.error("请求超时"); this.logger.error("请求超时");
} else { } else {
logger.error('请求发生错误', error.message); this.logger.error('请求发生错误', error.message);
} }
return Promise.reject(-1); return Promise.reject(-1);
} }
@ -1336,12 +1525,12 @@ export class DeployMainService implements IDeployMainService {
//执行脚本,获取操作系统信息 //执行脚本,获取操作系统信息
const functionName = 'getosinfo'; const functionName = 'getosinfo';
const osinfo = await this.loadAndInvokeFunction(match_script_filePath, functionName); const osinfo = await this.loadAndInvokeFunction(match_script_filePath, functionName);
logger.info("通过脚本" + match_script_filePath + "获取操作系统信息" + osinfo); this.logger.info("通过脚本" + match_script_filePath + "获取操作系统信息" + osinfo);
let localConfigMatch = 0; let localConfigMatch = 0;
// 检测文件是否有osinfo想匹配的 // 检测文件是否有osinfo想匹配的
if (g_index_localDataObject["config-file"].hasOwnProperty(`${osinfo}`)) { if (g_index_localDataObject["config-file"].hasOwnProperty(`${osinfo}`)) {
if (installUtils.compareVersions(g_index_localDataObject['config-file'][osinfo][0]["kylin-ide-lowest-ver"], IDEVersion) == 1) { if (installUtils.compareVersions(g_index_localDataObject['config-file'][osinfo][0]["kylin-ide-lowest-ver"], IDEVersion) == 1) {
logger.info("本地配置文件版本与当前ide版本不兼容"); this.logger.info("本地配置文件版本与当前ide版本不兼容");
flag++; flag++;
} else { } else {
if (!this.versify(path.join(installUtils.localConfigPath(), `${g_index_localDataObject['config-file'][osinfo][0]['file_name']}`), `${g_index_localDataObject['config-file'][osinfo][0]['sign-md5']}`)) { if (!this.versify(path.join(installUtils.localConfigPath(), `${g_index_localDataObject['config-file'][osinfo][0]['file_name']}`), `${g_index_localDataObject['config-file'][osinfo][0]['sign-md5']}`)) {
@ -1362,7 +1551,7 @@ export class DeployMainService implements IDeployMainService {
file_name = object[i]["file_name"]; file_name = object[i]["file_name"];
sign_md5 = object[i]["sign-md5"]; sign_md5 = object[i]["sign-md5"];
if (!this.versify(path.join(configDir, file_name), sign_md5)) { if (!this.versify(path.join(configDir, file_name), sign_md5)) {
logger.error(path.join(configDir, file_name) + "文件校验失败"); this.logger.error(path.join(configDir, file_name) + "文件校验失败");
flag++; flag++;
} else { } else {
console.log(path.join(configDir, file_name) + "文件校验正确"); console.log(path.join(configDir, file_name) + "文件校验正确");
@ -1385,7 +1574,7 @@ export class DeployMainService implements IDeployMainService {
} }
return configData; return configData;
} catch (error: any) { } catch (error: any) {
logger.error("本地数据校验失败" + error); this.logger.error("本地数据校验失败" + error);
let configData = { let configData = {
res: -1, res: -1,
g_index_Object: "", g_index_Object: "",
@ -1444,14 +1633,14 @@ export class DeployMainService implements IDeployMainService {
//执行脚本,获取操作系统信息 //执行脚本,获取操作系统信息
const functionName = 'getosinfo'; const functionName = 'getosinfo';
let osinfo = await this.loadAndInvokeFunction(match_script_filePath, functionName); let osinfo = await this.loadAndInvokeFunction(match_script_filePath, functionName);
logger.info("通过脚本" + match_script_filePath + "获取操作系统信息" + osinfo); this.logger.info("通过脚本" + match_script_filePath + "获取操作系统信息" + osinfo);
let ConfigMatch = 0; let ConfigMatch = 0;
// 检测文件是否有osinfo想匹配的 // 检测文件是否有osinfo想匹配的
if (osinfo !== 'undefined') { if (osinfo !== 'undefined') {
if (g_index_Object["config-file"].hasOwnProperty(`${osinfo}`)) { if (g_index_Object["config-file"].hasOwnProperty(`${osinfo}`)) {
if (installUtils.compareVersions(g_index_Object['config-file'][osinfo][0]["kylin-ide-lowest-ver"], this.productService.IDEVersion) == 1) { if (installUtils.compareVersions(g_index_Object['config-file'][osinfo][0]["kylin-ide-lowest-ver"], this.productService.IDEVersion) == 1) {
logger.info("网上的配置文件版本与当前ide版本不兼容"); this.logger.info("网上的配置文件版本与当前ide版本不兼容");
flag++; flag++;
} else { } else {
//下载和当前操作系统关联的插件配置文件 //下载和当前操作系统关联的插件配置文件
@ -1482,7 +1671,7 @@ export class DeployMainService implements IDeployMainService {
const res = await this.download_File(this.replaceBaseUrl(file_url, this.baseUrl), path.join(updateConfigDir, file_name)); const res = await this.download_File(this.replaceBaseUrl(file_url, this.baseUrl), path.join(updateConfigDir, file_name));
if (res == 0) { if (res == 0) {
if (!this.versify(path.join(updateConfigDir, file_name), sign_md5)) { if (!this.versify(path.join(updateConfigDir, file_name), sign_md5)) {
logger.error(path.join(updateConfigDir, file_name) + "文件校验失败"); this.logger.error(path.join(updateConfigDir, file_name) + "文件校验失败");
flag++; flag++;
} }
} else { } else {
@ -1508,7 +1697,7 @@ export class DeployMainService implements IDeployMainService {
} }
return configData; return configData;
} catch (error) { } catch (error) {
logger.error("网络数据校验失败" + error); this.logger.error("网络数据校验失败" + error);
let configData = { let configData = {
res: -1, res: -1,
g_index_Object: {}, g_index_Object: {},

View File

@ -1,5 +1,5 @@
import { execSync } from "child_process"; import { execSync } from "child_process";
import { logger } from 'vs/platform/issue/electron-main/logger'; // import { logger } from 'vs/platform/issue/electron-main/logger';
export function pyDependsFromUrl(execPath: string, pkgname: string, sourceUrl: string, destPath: string) { export function pyDependsFromUrl(execPath: string, pkgname: string, sourceUrl: string, destPath: string) {
const cmd = `${execPath} download ${pkgname} -i ${sourceUrl} -d ${destPath}`; const cmd = `${execPath} download ${pkgname} -i ${sourceUrl} -d ${destPath}`;
@ -17,11 +17,11 @@ export function pyDependsFromUrl(execPath: string, pkgname: string, sourceUrl: s
export function goDependsFromUrl(execPath: string, pkgUrl: string, destPath: string) { export function goDependsFromUrl(execPath: string, pkgUrl: string, destPath: string) {
// go get -d github.com/go-sql-driver/mysql // go get -d github.com/go-sql-driver/mysql
logger.debug("goDependsFromUrl"); // logger.debug("goDependsFromUrl");
logger.debug(execPath); // logger.debug(execPath);
const cmd = `${execPath} get -d ${pkgUrl}`; const cmd = `${execPath} get -d ${pkgUrl}`;
//go的三个环境变量做到配置文件里面 //go的三个环境变量做到配置文件里面
logger.debug(cmd); // logger.debug(cmd);
const envVar = { GOPATH: destPath, GO111MODULE: "on", GOPROXY: "https://goproxy.cn,direct", GOSUMDB: "off" } const envVar = { GOPATH: destPath, GO111MODULE: "on", GOPROXY: "https://goproxy.cn,direct", GOSUMDB: "off" }
try { try {
const res = execSync(cmd, { encoding: 'utf-8', env: { ...process.env, ...envVar } }).toString().trim(); const res = execSync(cmd, { encoding: 'utf-8', env: { ...process.env, ...envVar } }).toString().trim();

View File

@ -1,17 +0,0 @@
import * as log4js from 'log4js';
import * as installUtils from 'vs/platform/issue/electron-main/installUtils';
const level = 'debug';
log4js.configure({
appenders: {
file: {
type: 'file',
filename: `${installUtils.logDirectory()}/instguide.log`,
}
},
categories: {
default: { appenders: ['file'], level: level }
}
});
export const logger = log4js.getLogger();