Электрон открыть и держать открытым cmd.exe
Я создаю небольшой инструмент, который помимо прочего должен позволить мне запустить сервер Tomcat.
Довольно просто, я просто хочу кнопку для запуска startup.bat
и еще один позвонить shutdown.bat
,
Он работает довольно хорошо (запуск и остановка сервера), но полностью в режиме ниндзя мне не удается получить консоль Tomcat с журналами. Из классической командной строки, если я позвоню startup.bat
Окно открывается с журналами внутри. Я старался exec
, execFile
, spawn
, Я пытался позвонить напрямую bat
, cmd.exe
даже попробовал start
, Но я не могу получить окно.
Я знаю, что могу получать потоки, но я не хотел бы беспокоиться об этом.
Кроме того, я просто использую инструмент для Windows, не нужно пока думать о другой платформе.
const ipc = require('electron').ipcMain;
const execFile = require('child_process').execFile;
ipc.on('start-local-tomcat', function (event) {
execFile('cmd.exe', ['D:\\DEV\\apache-tomcat-8.0.12\\bin\\startup.bat'],
{env: {'CATALINA_HOME': 'D:\\DEV\\apache-tomcat-8.0.12'}},
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
})
});
ipc.on('stop-local-tomcat', function (event) {
execFile('cmd.exe',['D:\\DEV\\apache-tomcat-8.0.12\\bin\\shutdown.bat'],
{env: {'CATALINA_HOME': 'D:\\DEV\\apache-tomcat-8.0.12'}},
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
})
});
1 ответ
Наконец, я просто недостаточно прочел документ, есть параметр detached
это будет делать именно то, что я хочу:
var child = spawn(
'D:\\DEV\\apache-tomcat-8.0.12\\bin\\startup.bat',
{
env: {'CATALINA_HOME': 'D:\\DEV\\apache-tomcat-8.0.12'},
detached: true
}
);