私の必要性は簡単です。私はAIRアプリケーションから外部アプリケーションを起動し、AIRアプリケーション自体が終了している間は外部アプリケーションを実行したままにします。AIRアプリケーション自体が存在した後にAIR NativeProcessを実行したままにすることはできますか?
シナリオは、アプリケーション内に「インストール」ボタンがあり、サードパーティのインストーラーを起動します。このプロセス中にAIRアプリケーションを閉じる必要があります。
実際にNativeProcessオブジェクトを起動するコードは問題ありません。プロセスが起動して使用できます。ただし、ユーザーがAIRアプリケーションを手動で閉じるか、ActionScript経由で外部プロセスを起動した後にAIRアプリケーションを終了しようとすると、すぐに外部アプリケーションが存在します。
いくつかのサンプルコード:
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アプリケーションが存在した後にそのアプリケーションを実行したままにしますが、Terminalウィンドウはこの方法で画面に表示されますが、これも受け入れられません。
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);
この問題に関するご意見はありますか?プロキシを使用するのではなく、外部アプリケーションを直接起動するだけで、デプロイメントプラットフォーム間の複雑さが軽減されます。
解決策ではありませんが、軽減策:AIRアプリケーションを非表示にしますか? –