2009-08-06 1 views
2

Я пытаюсь запустить Applescript внутри плагина запуска, но по какой-то причине он просто не работает. Может быть, это мой компьютер, но я думаю, что с ним может быть что-то еще не так. Если бы кто-то мог взглянуть на этот пост и прокомментировать его, я был бы очень признателен!Launchd 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.pf.Testing</string> 
<key>ProgramArguments</key> 
<array> 
<string>/usr/bin/osascript</string> 
<string>-e</string> 
<string>'tell application "Finder"' -e 'set didQuit to (path to home folder as string) &amp; ".myApp"' -e 'if (exists file didQuit) then' -e 'tell application "TestApp"' -e 'activate' -e 'end tell' -e 'end if' -e 'end tell'</string> 
</array> 
<key>StartInterval</key> 
<integer>20</integer> 
<key>RunAtLoad</key> 
<true/> 
</dict> 
</plist> 

Спасибо за любую помощь!

Последняя 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.pf.Testing</string> 
<key>ProgramArguments</key> 
<array> 
<string>/usr/bin/osascript</string> 
<string>-e</string> 
<string>'tell application "Finder"'</string> 
<string>-e</string> 
<string>'set didQuit to (path to home folder as string) &amp; ".myApp"'</string> 
<string>-e</string> 
<string>'if (exists file didQuit) then'</string> 
<string>-e</string> 
<string>'tell application "TestApp"'</string> 
<string>-e</string> 
<string>'activate'</string> 
<string>-e</string> 
<string>'end tell'</string> 
<string>-e</string> 
<string>'end if'</string> 
<string>-e</string> 
<string>'end tell'</string> 
</array> 
<key>StandardErrorPath</key> 
<string>/Users/pf/Desktop/Problem.log</string> 
<key>StartInterval</key> 
<integer>20</integer> 
<key>RunAtLoad</key> 
<true/> 
</dict> 
</plist> 

ответ

1

Вероятной проблема заключается в том, что запуск программ не выполняется ваш AppleScript в вошедшем в контексте GUI пользователя, и, следовательно, AppleScript не может говорить с Finder.

Убедитесь, что plist установлен как LaunchAgent, а не LaunchDaemon (plist должен располагаться в/Library/LauchAgents или ~/Library/LaunchAgents).

Попробуйте добавить следующее в PLIST, чтобы сделать скрипт запуска в контексте GUI:

<key>LimitLoadToSessionType</key> 
<string>Aqua</string> 

Обратите внимание, что это будет работать только надежно на 10.5 и выше; Я не смог заставить пользователей LaunchAgents работать правильно 10.4.

+0

Hi Ник: Спасибо за ваш ответ. К сожалению, даже после использования кода LimitLoadToSessionType и двойной проверки наличия файла в пути он все равно не запускается. Это действительно странно, особенно потому, что, когда я запускаю тот же код в терминале, он отлично работает ... Любые идеи? – PF1

+1

Другая идея: вместо того, чтобы передавать команды applescript в качестве аргументов, попробуйте поместить их в отдельный файл сценария и передать его путь к osascript. –

1

Я думаю, вам нужно разбить свой последний аргумент на отдельные аргументы - каждый аргумент (-e и отдельные строки AppleScript) должен быть в отдельном элементе <string />. Или это, или как Ник говорит, что просто передать в .applescript файл со всем сценарием в

Проблема заключается в том, что ваша команда получает истолковано как:.

/usr/bin/osascript -e '\'tell application "Finder"\' -e \'set didQuit to (path to home folder as string) & ".myApp"\' -e \'if (exists file didQuit) then\' -e \'tell application "TestApp"\' -e \'activate\' -e \'end tell\' -e \'end if\' -e \'end tell\'' 

, который не то, что вы имели в виду.

+0

Привет, Грэм: Я сделал то, что вы предложили, но теперь я получаю следующую ошибку, когда я использую StandardErrorPath для регистрации проблемы: 0: 1: синтаксическая ошибка: неизвестный токен не может быть здесь. (-2740) – PF1

+0

Если вы запускаете точно такой же скрипт в редакторе сценариев, это говорит вам, где ваша ошибка? –

+0

Нет, единственное отличие в редакторе скриптов заключается в том, что я отформатировал его как документ Applescript. Это прекрасно работает. И тот же самый код отлично работает в терминале и не генерирует ошибку. Этот код работает для вас? – PF1

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