后端服务启动判断

This commit is contained in:
zh
2025-11-13 14:38:23 +08:00
parent 2b7e0f45de
commit 1a0fcd1f41
8 changed files with 250 additions and 225 deletions

View File

@ -78,6 +78,8 @@ stopBatPath = process.platform === 'win32' ? stopBatPath.replace(/^(\w:)/, '/$1'
let isRestart = false
let mainWindow;
let isSeverInit = false
let isAppInit = false
function createWindow(): void {
// Create the browser window.
@ -150,6 +152,10 @@ function createWindow(): void {
// 监听启动页完成的消息
ipcMain.on('splash-completed', () => {
// 启动页进度条已完成,可以关闭启动页并显示主窗口
if(isSeverInit) {
mainWindow.webContents.send('program-init')
}
isAppInit = true
setTimeout(() => {
splashWindow.destroy()
mainWindow.maximize() // 先最大化
@ -562,38 +568,53 @@ if (!gotTheLock) {
// buttons: ['确定']
// })
// 执行批处理文件
exec(startBatPath.substring(1, 200), (error, stdout, stderr) => {
if (error) {
console.error(`执行错误: ${error.message}`);
return;
// exec(startBatPath.substring(1, 200), (error, stdout, stderr) => {
// if (error) {
// console.error(`执行错误: ${error.message}`);
// return;
// }
// if (stderr) {
// console.error(`错误输出: ${stderr}`);
// return;
// }
// console.log(`批处理输出: ${stdout}`);
// });
const batProcess = spawn('cmd.exe', ['/c', startBatPath.substring(1, 200)]);
// 实时监听标准输出stdout
batProcess.stdout.on('data', (data) => {
// data 是 Buffer 类型,转为字符串后输出
let string = data.toString().trim()
// console.log(`批处理输出: ${string}`);
// 临时处理:应用启动失败或项目文档地址出现时,认为服务初始化完成;后续需后端配合
if(string.indexOf('APPLICATION FAILED TO START') !== -1 || string.indexOf('项目文档地址') !== -1) {
if(!isSeverInit) {
isSeverInit = true
if(isAppInit) {
mainWindow.webContents.send('program-init')
}
}
}
if (stderr) {
console.error(`错误输出: ${stderr}`);
return;
}
console.log(`批处理输出: ${stdout}`);
});
// const batProcess = spawn('cmd.exe', ['/c', startBatPath.substring(1, 200)]);
// // 实时监听标准输出stdout
// batProcess.stdout.on('data', (data) => {
// // data 是 Buffer 类型,转为字符串后输出
// console.log(`批处理输出: ${data.toString().trim()}`);
// });
// // 监听错误输出stderr
// batProcess.stderr.on('data', (data) => {
// console.error(`错误输出: ${data.toString().trim()}`);
// });
ipcMain.on('judgment-isSeverInit', (event) => {
event.returnValue = isSeverInit
})
// // 监听进程执行出错(如文件不存在、权限问题等
// batProcess.on('error', (error) => {
// console.error(`执行错误: ${error.message}`);
// });
// 监听错误输出stderr
batProcess.stderr.on('data', () => {
// console.error(`错误输出: ${data.toString().trim()}`);
});
// // 监听进程退出事件(执行结束后触发)
// batProcess.on('close', (code) => {
// console.log(`批处理执行完毕,退出码: ${code}`);
// });
// 监听进程执行出错
batProcess.on('error', () => {
// console.error(`执行错误: ${error.message}`);
});
// 监听进程退出事件(执行结束后触发)
batProcess.on('close', (code) => {
console.log(`批处理执行完毕,退出码: ${code}`);
});
// Set app user model id for windows
electronApp.setAppUserModelId('com.electron')