Как мне запустить приложение из Electron на Mac на переднем плане и получить код выхода? - PullRequest
0 голосов
/ 01 октября 2019

В моем электронном приложении есть рабочий процесс, в котором он запускает другое приложение, позволяющее пользователю выполнять некоторые вычисления, и результаты передаются обратно в мое приложение (в файле), и я полагаюсь на состояние выхода из приложения, чтобы управлять тем, что я делаюследующий в рабочем процессе.

Я использую child_process.spawn (или, точнее, cross-spawn-обещание).

Все работает нормально (приложение запускается, пользователь делает свое дело в другом приложении,и я получаю статус выхода) ... на винде. На Mac происходит одно из двух:

  1. Использование полного пути приложения

    /Applications/OtherApp.app/Contents/MacOS/OtherApp arg1
    => OtherApp launches in background but I get the exit code
    
  2. Использование 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...