2017-01-07 1 views
0

На MacOS 10.5, эта osascript команда работает, как ожидалось, отображая диалоговое окно с красным знаком остановки:AppleScript «со значком остановки» для диалога отображения не работает на MacOS 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 stop default button "Ok"' 
      -e 'tell app "System Events" to quit' 

One 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, но, возможно, я что-то упустил.

+0

Потеряйте линии активации и выхода. – jweaks

ответ

0

В общем случае, если вы хотите настроить таргетинг на любое приложение AppleScriptable, которое имеет такой терминологический конфликт, также обычно можно сначала назначить конфликтный термин переменной во внешней области, а затем в пределах области 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"' 

{Несколько других более или менее педантичные корректировки должны также были сделаны: теперь существует явное продолжение линии (\newline), для удобства тестирования в оболочке; и теперь помеченный параметр buttons … прямо указывает список, вместо того, чтобы включать неявное принуждение.}

+0

Я не проверял это решение самостоятельно, потому что я решил это давно, просто переключившись на значок заметки, а у меня нет готового доступа к MacOS 10.12. Но в этом объяснении затрагивается проблема «терминологического конфликта», и откуда происходит стоп-конфликт, и как обойти его с переменной. Я буду принимать этот ответ на основе этих факторов, потому что этот вопрос настолько стар. Спасибо! –

0

Причина в терминологическом столкновении с 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"' 

Поскольку Искатель работает на постоянной основе в quit линии могут быть опущены.

+0

Я попробую. –

Смежные вопросы