Заставьте Applescript дождаться закрытия приложения перед запуском сценария оболочки

3060
Ambush

У меня есть апплет, который я сделал, используя Applescript, который открывает приложение, а затем, после его загрузки, запускает скрипт оболочки, который выгружает Spotlight. Мне нужно сделать это, затем подождать, пока я закончу использовать соответствующее приложение, прежде чем запускать другой сценарий оболочки для повторной загрузки Spotlight.

Мой код в настоящее время выглядит так:

set appname to “Applications/Cubase 5.app” tell application appname to launch repeat until application appname is running  delay 1 end repeat if application appname is running then do shell script "sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist" password "YOUR_PASSWORD" with administrator privileges end if activate appname 

Я перепробовал все, но не могу понять это. Я нашел и изменил этот скрипт с моими ограниченными знаниями, но не понимаю, как он работает

Какой код мне нужно добавить, чтобы он дождался, пока я выйду из приложения, чтобы запустить второй сценарий оболочки, который мне известен:

do shell script "sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist" password "YOUR_PASSWORD" with administrator privileges 

что бы перезагрузить Spotlight?

Я пришел с следующим, который компилируется, но не делает, как ожидалось:

set appname to “Applications/Cubase 5.app” tell application appname to launch repeat until application appname is running  delay 1 end repeat if application appname is running then do shell script "sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist" password "YOUR_PASSWORD" with administrator privileges end if activate appname repeat until application appname is not running delay 1 end repeat if application is not running then do shell script "sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist" password "YOUR_PASSWORD" with administrator privileges end if 

Выдает ошибку. Не удается запустить приложение . Я вижу, что чего-то не хватает, просто не знаю, что.

Я новичок как в Apple, так и в Applescript, и ответ будет высоко оценен.

0
@ Дэнни - я написал приведенный выше код с вашим предложением вставить *** не ***, но он не работает так, как ожидалось, как объяснено в моем отредактированном вопросе выше. Я надеюсь, что моя редакция поможет лучше объяснить мой вопрос. Любые предложения будут высоко ценится. С уважением Ambush 9 лет назад 0

1 ответ на вопрос

1
Danny Schoemann

Вы хотите проверить, что не работает

set appname to “Applications/Cubase 5.app” tell application appname to launch repeat until application appname is not running  delay 1 end repeat if application appname is running then do shell script "sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist" password "YOUR_PASSWORD" with administrator privileges end if activate appname 
Возможно, мой вопрос был неоднозначным. Я хочу добавить что-то в существующий скрипт, чтобы, как только я закончил использовать приложение и закрыл его, был запущен другой скрипт оболочки. По сути, я хочу запустить Cubase 5, затем выгрузить Spotlight, затем, когда я закончу работать в Cubase и выйти, снова получить прожектор загрузки скрипта. Надеюсь, что проясняется. Спасибо за ответ @ Дэнни Ambush 9 лет назад 0
@Ambush - посмотрите внимательно - я добавил ОДНО слово в ваш существующий скрипт, и теперь он должен вести себя так, как вы объясняете. имя приложения _не_ работает Danny Schoemann 9 лет назад 0
Я видел, что вы добавили _not_, но я не понимаю, как это заставит скрипт выполнить все 3 действия? Разве я не должен добавлять больше кода куда-нибудь? Ambush 9 лет назад 0