diff --git a/src/vs/code/electron-sandbox/deploy/deployWindow.html b/src/vs/code/electron-sandbox/deploy/deployWindow.html
index 64e02374..e075e180 100644
--- a/src/vs/code/electron-sandbox/deploy/deployWindow.html
+++ b/src/vs/code/electron-sandbox/deploy/deployWindow.html
@@ -1,7 +1,6 @@
-
+
-
diff --git a/src/vs/code/electron-sandbox/deploy/deployWindowMain.ts b/src/vs/code/electron-sandbox/deploy/deployWindowMain.ts
index ba40e2fc..cf6b5a03 100644
--- a/src/vs/code/electron-sandbox/deploy/deployWindowMain.ts
+++ b/src/vs/code/electron-sandbox/deploy/deployWindowMain.ts
@@ -114,7 +114,7 @@ class deployWindow {
// dst: utils.configDir()
}
//联网检查是否有合适的文件
- ipcRenderer.send("kylinide.installWizard.checkInstall", messageData);
+ await ipcRenderer.invoke('kylinide.installWizard.checkInstall', messageData);
}
else {
this.extInstallState.set(msg.depName, 11);
@@ -473,7 +473,6 @@ class deployWindow {
type: "configSelect",
select: select
}
- // ipcRenderer.send('kylinide.installWizard.init', data);
console.log("renderer send kylinide.installWizard.init.configSelect");
let result = await ipcRenderer.invoke('kylinide.installWizard.init.configSelect', data);
@@ -1037,7 +1036,7 @@ class deployWindow {
});
for (var i = 0; i < elements.length; i++) {
- elements[i].addEventListener("change", (event) => {
+ elements[i].addEventListener("change", async (event) => {
// 根据选中不同的checkbox,显示不同输出;
const target = event.target as HTMLInputElement;
if (target!.checked) {
diff --git a/src/vs/platform/issue/electron-main/deployMainService.ts b/src/vs/platform/issue/electron-main/deployMainService.ts
index e1fb7460..49676cc4 100644
--- a/src/vs/platform/issue/electron-main/deployMainService.ts
+++ b/src/vs/platform/issue/electron-main/deployMainService.ts
@@ -82,7 +82,7 @@ export class DeployMainService implements IDeployMainService {
extDownloadPath: string = "";
// public extensionsGalleryConfiguration!: IExtensionsGalleryConfiguration;
// private preExtensionsGalleryConfig: IExtensionsGalleryConfiguration;
- installQueue: { installCommand: any; msg: any; }[] = []; // 定义一个消息队列
+ installQueue: { installCommand: any; msg: any; }[] | null = []; // 定义一个消息队列
extMap: Record = {};
depList: string[] = [];
extList: string[] = [];
@@ -93,6 +93,7 @@ export class DeployMainService implements IDeployMainService {
pkglogFsWatcher: fs.FSWatcher | null = null;
//执行安装脚本的进程号;
installProcessId: ChildProcess | null = null;
+ cancelInstallProcessId: ChildProcess | null = null;
cancelFlag = false;
offset = 0;
resultIndex = 0;
@@ -129,8 +130,8 @@ export class DeployMainService implements IDeployMainService {
this.updateConfigDir = installUtils.installConfigDirPre() + "/" + installUtils.getDateDir();
this.reset();
this.logger = this.loggerMainService.createLogger(URI.file(this.installConfig + "/log/instguide.log"));
- this.loggerExt = this.loggerMainService.createLogger(URI.file(this.installConfig + "/log/extinstdetail.log"));
- this.loggerSoft = this.loggerMainService.createLogger(URI.file(this.installConfig + "/log/softinstdetail.log"));
+ this.loggerExt = this.loggerMainService.createLogger(URI.file(this.installConfig + "/log/extdetail.log"));
+ this.loggerSoft = this.loggerMainService.createLogger(URI.file(this.installConfig + "/log/softdetail.log"));
this.removeListeners();
this.registerListeners();
}
@@ -144,6 +145,7 @@ export class DeployMainService implements IDeployMainService {
this.logFile0 = this.installConfig + '/log/install.1.log';
this.resultFile = this.installConfig + '/resultFile';
this.extLogFile0 = this.installConfig + '/log/extInstall.1.log';
+ this.installQueue = [];
this.baseUrl = "";
this.extDownloadPath = "";
@@ -157,6 +159,7 @@ export class DeployMainService implements IDeployMainService {
this.pkglogFsWatcher = null;
//执行安装脚本的进程号;
this.installProcessId = null;
+ this.cancelInstallProcessId = null;
this.cancelFlag = false;
this.offset = 0;
this.resultIndex = 0;
@@ -222,12 +225,12 @@ export class DeployMainService implements IDeployMainService {
installCommand = comandpath + " " + "--install-extension" + " " + installItem;
}
this.logger.debug("安装 ext installCommand", installCommand);
- if (this.installQueue.length === 0) {
+ if (this.installQueue?.length === 0) {
this.installQueue.push({ installCommand, msg });
await this.executeNextInstall();
}
else {
- this.installQueue.push({ installCommand, msg });
+ this.installQueue?.push({ installCommand, msg });
}
} catch (error) {
this.logger.error(`安装 ext 执行出错 ${installCommand}: ${error.message}`);
@@ -374,45 +377,45 @@ export class DeployMainService implements IDeployMainService {
this.logger.info("取消依赖包安装");
// var killcommand = `pkexec sudo pkill -TERM -P ${installProcessId.pid}`;
var killcommand = `pkexec sudo pkill -f 'bash ${this.installConfig}/install.sh'`;
- const sudokill = spawn(killcommand, { shell: true, stdio: 'inherit' });
+ this.cancelInstallProcessId = spawn(killcommand, { shell: true, stdio: 'inherit' });
- sudokill.on('exit', (code, signal) => {
+ this.cancelInstallProcessId.on('exit', (code, signal) => {
this.logger.info('取消安装结束', code)
- if (code == 127) {
- this.println('授权失败', code);
- this.logger.error("取消安装授权失败");
+ if (code == 127 || code == 126) {
+ this.logger.error("取消安装授权失败:", code);
} else {
+ this.cancelFlag = true;
if (this.DeployWindow) {
this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'installFile' });
this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'extFile' });
this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'pkgFile' });
}
this.controller.abort();
- this.installQueue.splice(0);
+ this.installQueue?.splice(0);
+ this.installQueue = null;
//结束插件下载及安装
if (this.DeployWindow) {
this.DeployWindow.webContents.send("kylinide.installWizard.cancelInstall", { type: "cancelinstall" });
this.DeployWindow.webContents.send("kylinide.installWizard.msg", { type: "cancelinstall" });
}
}
- this.println('kill Exit code:', code);
+ this.logger.info('kill Exit code:cancelinstallprocessid:', code);
});
- this.println("取消安装after");
} else {
- this.println("取消安装其他情况");
- if (this.DeployWindow) {
- this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'installFile' });
- this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'extFile' });
- this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'pkgFile' });
- }
+ this.logger.info("取消安装");
this.controller.abort();
this.cancelFlag = true;
- this.installQueue.splice(0);
+ this.installQueue?.splice(0);
//结束插件下载及安装
if (this.DeployWindow) {
this.DeployWindow.webContents.send("kylinide.installWizard.cancelInstall", { type: 'cancelinstall' });
this.DeployWindow.webContents.send("kylinide.installWizard.msg", { type: "cancelinstall" });
}
+ if (this.DeployWindow) {
+ this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'installFile' });
+ this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'extFile' });
+ this.DeployWindow.webContents.send("kylinide.installWizard.removeFileLister", { type: 'pkgFile' });
+ }
}
}
@@ -664,8 +667,10 @@ export class DeployMainService implements IDeployMainService {
this.DownSelectKey.configList = msg.configList;
// scriptList = message.scriptList;
this.extMap = {};
+ return void 0;
};
- listenerCheckInstall = async (event: IpcMainEvent, msg: any) => {
+
+ handleCheckInstall = async (event: IpcMainInvokeEvent, msg: any) => {
this.println("kylinide.installWizard.checkInstall");
if (this.startInstallDepWatch === 1) {
@@ -718,7 +723,7 @@ export class DeployMainService implements IDeployMainService {
// this.logger.debug(`install pkg输出信息更新:${updatedContent}`);
if (updatedContent.length > 0)
- fs.appendFileSync(this.installConfig + "/log/soft.log", updatedContent);
+ fs.appendFileSync(this.installConfig + "/log/softdetail.log", updatedContent);
if (this.DeployWindow)
this.DeployWindow.webContents.send("kylinide.installWizard.msg", installMsg);
}
@@ -826,12 +831,13 @@ export class DeployMainService implements IDeployMainService {
}
});
this.startInstallDepWatch = 1;
+ return void 0;
+ };
- }
+ handleDownExten = async (event: IpcMainInvokeEvent, message: any) => {
- listenerDownExten = async (event: IpcMainEvent, message: any) => {
-
- this.installQueue.splice(0);
+ this.println("kylinide.installWizard.downloadExt");
+ this.installQueue?.splice(0);
let depObject = JSON.parse(fs.readFileSync(message.extAddressPath, 'utf-8'));
let extLatestDownloadUrlList = [];
let extDownloadUrlList = [];
@@ -946,6 +952,7 @@ export class DeployMainService implements IDeployMainService {
private removeListeners(): void {
this.logger.info("移除监听器");
//接收从渲染进程发送的消息
+ validatedIpcMain.removeListener('kylinide.installWizard.show', this.listenerShow);
validatedIpcMain.removeListener('kylinide.installWizard.helpLink', this.listenerHelpLink);
validatedIpcMain.removeListener('kylinide.installWizard.minw', this.listenerMiniWindow);
validatedIpcMain.removeListener('kylinide.installWizard.closeWizard', this.listenerCloseWindow);
@@ -956,6 +963,7 @@ export class DeployMainService implements IDeployMainService {
private registerListeners(): void {
this.logger.info("注册监听器");
//接收从渲染进程发送的消息
+ validatedIpcMain.on('kylinide.installWizard.show', this.listenerShow);
validatedIpcMain.on('kylinide.installWizard.helpLink', this.listenerHelpLink);
validatedIpcMain.on('kylinide.installWizard.minw', this.listenerMiniWindow);
validatedIpcMain.on('kylinide.installWizard.closeWizard', this.listenerCloseWindow);
@@ -966,6 +974,12 @@ export class DeployMainService implements IDeployMainService {
//handle从渲染进程发送的消息
validatedIpcMain.handle('kylinide.installWizard.init.configVersify', this.handleInitConfigVersify);
validatedIpcMain.handle('kylinide.installWizard.init.configSelect', this.handleInitConfigSelect);
+ validatedIpcMain.handle('kylinide.installWizard.init.configGetValue', this.handleInitConfigGetValue);
+ validatedIpcMain.handle('kylinide.installWizard.init.httpVerify', this.handleHttpVerify);
+ validatedIpcMain.handle('kylinide.installWizard.msg.deplist', this.handleDepList);
+ validatedIpcMain.handle('kylinide.installWizard.checkInstall', this.handleCheckInstall);
+ validatedIpcMain.handle('kylinide.installWizard.downloadExt', this.handleDownExten);
+
}
//#endregion
@@ -990,6 +1004,7 @@ export class DeployMainService implements IDeployMainService {
}
}
});
+
} catch (error) {
this.logger.error(`执行脚本时出错: ${error.message}`);
this.loggerSoft.error(`执行脚本时出错: ${error.message}`);
@@ -1025,13 +1040,16 @@ export class DeployMainService implements IDeployMainService {
}
async executeNextInstall() {
- if (this.installQueue.length === 0) {
+ if (this.installQueue?.length === 0) {
return; // 队列为空,结束执行
}
if (this.cancelFlag) {
- this.installQueue.splice(0);
+ this.installQueue?.splice(0);
return;
}
+ if (!this.installQueue)
+ return;
+
const { installCommand, msg } = this.installQueue[0];
try {
const extlogFile = this.installConfig + '/log/extInstall.1.log';
@@ -1128,6 +1146,12 @@ export class DeployMainService implements IDeployMainService {
closeWindow() {
if (this.DeployWindow) {
+ if (this.installProcessId) {
+ this.installProcessId.kill();
+ }
+ if (this.cancelInstallProcessId) {
+ this.cancelInstallProcessId.kill();
+ }
this.DeployWindow.close();
}
}