我正在尝试从我的launchd守护程序执行Apple脚本。我的脚本只有一行,如下所示。
say "Message From Daemon!"
这总是失败并抛出此错误消息“找不到文件某个对象”。
知道为什么会这样吗?如果我从xcode(不是通过launchd启动它)和从用户上下文中运行的任何其他应用程序运行,相同的脚本可以正常工作。
答案 0 :(得分:1)
使用NSSound
播放声音依赖于window server
,守护进程不允许连接到窗口服务器。
我假设say
命令存在同样的问题。 (此工具使用语音合成管理器将输入文本转换为可听语音,并通过系统中选择的声音输出设备播放
首选项或将其保存到AIFF文件。)
答案 1 :(得分:0)
我猜你在尝试同样的事情时遇到了我原来遇到的同样的问题。 .plist文件中的路径需要更深入地指向applescript应用程序。下面是.plist文件的示例。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.namespace.script_name</string>
<key>Program</key>
<string>/Applications/script_name.app/Contents/MacOS/applet</string>
<key>LowPriorityIO</key>
<true/>
<key>Nice</key>
<integer>1</integer>
<key>StartInterval</key>
<integer>7200</integer>
</dict>
</plist>