AppleScript“with icon stop”用于显示对话框,无法在MacOS 10.12上运行

时间:2017-01-07 00:10:13

标签: macos applescript macos-sierra

在MacOS 10.5上,此osascript命令按预期工作,显示带红色停止符号的对话框:

osascript -e 'tell app "System Events" to activate' 
          -e 'tell app "System Events" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons "Ok" with icon stop default button "Ok"' 
          -e 'tell app "System Events" to quit'

一个MacOS 10.12,但是,此命令失败并显示以下隐藏错误消息:

427:433: syntax error: Expected end of line, etc. but found class name. (-2741)

我发现将上面的“停止”图标更改为“注释”在10.12上工作,显示一个没有错误的对话框,例如:

osascript -e 'tell app "System Events" to activate' 
          -e 'tell app "System Events" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons "Ok" with icon note default button "Ok"' 
          -e 'tell app "System Events" to quit'

其他人可以重现这个问题吗?有没有办法解决它除了避免停止图标?我猜这是AppleScript中的一个错误,但也许我错过了一些东西。

2 个答案:

答案 0 :(得分:1)

原因是与System Events的术语发生冲突。请改用Finder

osascript -e 'activate application "Finder"'
          -e 'tell application "Finder" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons "Ok" with icon stop default button "Ok"'

由于Finder永久运行,quit行可以省略。

答案 1 :(得分:1)

通常,如果您希望定位任何表现出这种术语冲突的AppleScriptable应用程序,通常也可以首先将冲突术语分配给外部作用域中的变量,然后在{{1 } scope使用该变量。

例如,如果tell应用与System Events字词(来自stop)发生冲突,您可以执行以下操作:

StandardAdditions.osax

{还进行了一些其他或多或少的迂腐调整:现在有一个明确的续行(osascript -e 'set kStopIcon to stop' \ -e 'tell application "System Events" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons {"Ok"} with icon kStopIcon default button "Ok"' 换行符),以便于测试如地狱;并且,\标记的参数现在直接指定列表,而不是涉及隐式强制。}