【问题标题】:Applescript Error -10810Applescript 错误 -10810
【发布时间】:2014-04-30 21:35:35
【问题描述】:

我有一个 Applescript,它在我的 Macbook Retina 上运行良好,但在 Mac Mini 上却失败了。

两者都运行 MacOS 10.9.2。

剥洋葱皮后,我可以用一行 Applescript 重现问题:

tell application "MidiPipe" to activate

在引发错误的 Mini 上:

An error of type -10810 has occurred.

在 Macbook 上,MidiPipe 应用程序打开。

当从 Finder 或 Launchpad 启动时,MidiPipe 在 Mini 上正常工作。

Google 没有提供有关此错误的信息。

【问题讨论】:

  • Mini 是否运行相同版本的 MidiPipe?
  • 您是否尝试过在 mini 上删除并重新安装 MidiPipe?也许应该归咎于拙劣的安装?

标签: macos applescript


【解决方案1】:

好吧,我发现了这个:http://www.thexlab.com/faqs/error-10810.html 和这个:http://osxdaily.com/2010/02/09/mac-error-10810/ 和这个:http://forums.adobe.com/thread/1389805。其中至少有一个表明存在 RAM 问题。

但为了确保您已经尝试过所有奇怪的变体,您是否尝试过以下方法:

1) 使用完整路径:

tell application "Full:Path:To:MidiPipe.app" --(probably "YourHDName:Applications:MidiPipe.app"?

2) 使用实际的告诉块:

tell application "MidiPipe"--or full path
 activate
end tell

3) 使用 Finder:

tell application "Finder" to open "Full:Path:To:MidiPipe.app"

4) 使用外壳: 执行shell脚本“打开/Applications/MidiPipe.app”

?

【讨论】:

  • 试图弄清楚如何在这些 cmets 中插入换行符,同时在我的脑海中持有 appplescript 异常可能会发生爆炸,因此我将连续几个 cmets 执行此操作:
  • 解决方案 #1 有效!尽管可以使用简短形式打开其他应用程序。只是不是 MidiPipe。例如:tell application "Wirecast" to activate
  • 解决方案 #2 不起作用如上所示,但如果提供了完整路径,确实起作用。在我开始将事情分解为基本要素之前,一个实际的告诉块是原始脚本中的形式。请注意,如果我输入名称为 MidiPipe.app 而不使用完整路径,则编译器会删除扩展名。
  • 解决方案 #3 确实有效。可能是因为它使用了 MidiPipe.app 的完整路径。
  • 当然,解决方案#4 有效。我试图通过进入 shell 来避免解决 Applescript 问题,妄想掌握 Applescript 本身,包括了解何时以及如何使用无数不同的方式来声明路径和位置。作为一只头脑很少的熊,我明白这是一项完全徒劳的工作,事实证明,Applications 目录中的某些程序可以按名称启动,而有些则不能(请参阅评论重新解决方案#1)。非常感谢您的帮助!这已经是一种教育!
【解决方案2】:

查看CRGreen's answer 中的链接后,看起来这可能是由于mini 上的进程表已满造成的。这反过来又阻止了任何新应用程序的打开。根据The X Lab

错误 -10810 是指示未知错误的启动服务结果代码。此错误的一个原因是 Mac® OS X 进程表已满。当进程表已满时,新的(当前未运行的)应用程序无法打开,直到另一个正在运行的应用程序结束。第三方应用程序中的编程错误会填满进程表,导致打开应用程序时出现-10810错误。

我将首先重新启动 mini 以查看是否会清除进程表,从而允许您启动 MidiPipe。

如果这不起作用,您应该查看您的活动监视器,看看是否有特定程序填满您的进程表。

【讨论】:

  • 感谢您的建议,但是很明显,这不是一个完整的进程表,除非我不明白该限制是如何执行的。在刚刚重新启动的 mini 上,大约有 160 个进程在运行大约 750 个线程。一两分钟后平静下来,运行 536 个线程的 128 个进程。然后执行脚本仍然会导致错误。请参阅我对 CRGreen 的回答的回复,了解为什么这只是 Applescript 功能失调和武断。
【解决方案3】:

可能只是 Apple 又一个神秘的悲伤废话。

今天我自己也遇到了这个问题,这是我第一次使用四个不同的 Mac Mini 作为构建服务器来持续集成移动应用程序大约两年时间。

我的 Jenkins 从 bash 脚本运行 osascript 来构建应用程序。

几天前,办公室停电了,所有的 Mac 都停机了。重新启动它们后,我在我的一台 Mac 上执行 osascript 时遇到此错误。

我只是尝试重新构建 - 结果相同。

我偶然发现的第一件事是https://jacobsalmela.com/2014/08/04/infamous-execution-error-error-type-10810-occurred-10810/,但没有一个适用于我。

然后我在 Google 上搜索了更一般的 10810 问题,并在 SO 上解决了几个问题。

还是没有运气。

接下来,我使用 PuTTY 通过 SSH 访问服务器,并尝试告诉终端执行非常基本的脚本,例如

 osascript -e 'tell application "Terminal"
 activate
 tell window 1
 do script "counter=0; while true; do if [ \"$counter\" -gt \"10\" ]; then
     break; else counter=$((counter + 1)); sleep 1; fi; done; exit;"
 end tell
 end tell'

这很好用。

然后我尝试运行 Jenkins 用来执行的整个 bash 脚本。一切都很完美,结果应用程序被上传到了 HockeyApp。

我想到问题是 Jenkins 在那台 Mac 上远程运行它,最后我尝试重新构建,这次它神奇地运行良好。

不知道它是什么,但从那以后我已经执行了三个或更多构建,并且都成功了。

注意我没有改变任何东西,我的脚本:

1) 从不使用完整路径;

2) 总是使用实际的tell块;

3,4) 从未使用过与接受的答案类似的东西。

所以... 走开神秘的悲伤废话!离开! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多