Я хотел бы сделать это:
tell application "Finder" to set appName to (application file id "com.google.Chrome") as text
using terms from application appName
tell application appName to get URL of active tab of first window
end using terms from
Это не работает, потому что для «использования терминов из» требуется имя приложения в виде строковой константы. Если я заменю эту строку:
using terms from application appName
с этим
using terms from application "Google Chrome"
оно работает. Однако я не хочу полагаться на целевую машину с приложением под названием «Google Chrome». Использование идентификаторов пакетов кажется более безопасным. Есть лучший способ это сделать?
Редактировать
Следуя совету @regulus6633, я попробовал следующее:
NSAppleScript* script = [[NSAppleScript alloc] initWithSource:
@"tell application \"Finder\" to set appName to (application file id \"com.google.Chrome\") as text"
@"\nusing terms from application \"Google Chrome\""
@"\ntell application appName to get URL of active tab of first window"
@"\nend using terms from"];
Это отлично работает, но если я запускаю то же (скомпилированное) приложение на другом компьютере, где «Google Chrome» переименован в «Chrome», я получаю всплывающее диалоговое окно с вопросом, где находится «Google Chrome». Кажется, что NSApleScript компилируется во время выполнения?