Моя потребность проста - я хочу запустить внешнее приложение из своего приложения AIR, оставив внешнее приложение работающим, пока само приложение AIR завершается.
Сценарий - это кнопка «Установить» внутри приложения,который запускает сторонний установщик - приложение AIR необходимо закрыть во время этого процесса.
Мой код для фактического запуска объекта NativeProcess в порядке, процесс запускается и может использоваться.Однако если пользователь закрывает приложение AIR вручную или я пытаюсь закрыть приложение AIR после запуска внешнего процесса с помощью ActionScript, внешнее приложение существует практически сразу.
Пример кода:
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = File.applicationDirectory.resolvePath("My Great Application");
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
// Either one of the two calls following will fail with the same result
NativeApplication.nativeApplication.exit()
this.nativeWindow.close();
Я также попробовал другой подход, чтобы сохранить внешнее приложение открытым после того, как приложение AIR существует, используя своего рода прокси.На Mac я использую команду /usr/bin/open
./usr/bin/open
открывает внешнее приложение и оставляет его работающим после того, как приложение AIR существует, однако при этом подходе на экране появляется окно терминала, и это также неприемлемо.
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = new File("/usr/bin/open");
var args:Vector.<String> = new Vector.<String>();
args.push(file.nativePath);
nativeProcessStartupInfo.arguments = args;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
Любые мысли по этой проблеме?Я хотел бы просто запустить внешнее приложение напрямую, а не через прокси, так как это снизит сложность между платформами развертывания.