Я хотел бы сделать это:
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».Кажется, что NSAppleScript компилируется во время выполнения?