В моем электронном приложении есть рабочий процесс, в котором он запускает другое приложение, позволяющее пользователю выполнять некоторые вычисления, и результаты передаются обратно в мое приложение (в файле), и я полагаюсь на состояние выхода из приложения, чтобы управлять тем, что я делаюследующий в рабочем процессе.
Я использую child_process.spawn (или, точнее, cross-spawn-обещание).
Все работает нормально (приложение запускается, пользователь делает свое дело в другом приложении,и я получаю статус выхода) ... на винде. На Mac происходит одно из двух:
Использование полного пути приложения
/Applications/OtherApp.app/Contents/MacOS/OtherApp arg1
=> OtherApp launches in background but I get the exit code
Использование open -W
open -W /Application/OtherApp.app --args arg1
=> OtherApp launches in foreground, no exit code (because /usr/bin/open eats it)
Вот по сути мой код
const spawnAsync = require("cross-spawn-promise")
const otherAppPath = (os.platform === "darwin")
? "/known/path/to/OtherApp.app/Contents/MacOS/OtherApp"
: "C:\\known\path\to\OtherApp.exe"
function menuLaunchApp() {
return spawnAsync(otherAppPath, ["arg1"], { stdio: "ignore" })
}
function menuLaunchAppWithOpen() {
return spawnAsync("open", "-W", [otherAppPath,"arg1"], { stdio: "ignore" })
}
Любые идеи о том, как запустить приложение GUI на переднем плане из Electron на Mac с помощью child_process без использования команды open?