【发布时间】:2012-04-09 01:19:24
【问题描述】:
如何从 AIR 本机进程调用 AppleScript 进程?
背景: 我创建了一个 script.scpt 文件并将其放在项目的根 src 目录中。
我遇到了这个错误:
Error: Error #3219: The NativeProcess could not be started. 'launch path not accessible'
我有什么:
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("MyScript.scpt");
var processArgs:Vector.<String>;
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.workingDirectory = File.applicationDirectory;
processArgs = new Vector.<String>();
processArgs[0] = "foo";
nativeProcessStartupInfo.arguments = processArgs;
process = new NativeProcess();
process.start(nativeProcessStartupInfo);
已解决
为了让它工作,我需要“osascript”的绝对路径,这是运行脚本的命令。在这种情况下,可以在(以及大量其他好东西)中找到该命令
Macintosh 硬盘 > usr > bin > osascript
注意:“usr”目录是隐藏的。路径是“/usr/bin/osascript”
var file:File = File.applicationDirectory.resolvePath("/usr/bin/osascript");
之后,我将脚本文件名作为参数传递。它还需要将工作目录设置为脚本的目录,否则您会得到:
ERROR - osascript: script.scpt: No such file or directory
【问题讨论】:
-
我不知道苹果的第一件事,但在我看来“MyScript.scpt”本身并不是可执行文件(它只是一个脚本文件,没有编译代码)。所以我想它的路径应该作为运行这些 Apple 脚本的任何应用程序的参数给出。这使得这更像是一个“苹果”问题,所以也许你应该这样标记它。
-
已添加。在网上的一些地方,我看到了这条评论,“将 osascript 设置为 nativeProcess 可执行文件”,但没有给出代码。 osascript 似乎会将 scpt 脚本作为参数。在所有示例中,创建了一个文件以将源指向可执行文件,但我找不到该文件,因此这篇文章。
-
看起来这个“osascript”在操作系统的类路径上,因此我怀疑你只需要先做
nativeProcessStartupInfo.executable = "osascript";然后processArgs[0] = "\path\to\MyScript.scpt";。 -
我的猜测是您的脚本不在正确的目录中。 File.applicationDirectory 最有可能指向 bin-debug,因此您的文件也应该在那里,而不是在项目 src 中。
-
谢谢大家。解决了。可执行文件需要设置为包含命令的有效完整路径的文件,无论它是否位于 OS 类路径中,这对 Apple 开发人员来说可能很明显。 :)
标签: flash apache-flex air applescript