Как запустить конкретную версию Xcode из Applescript?
У меня установлены две версии Xcode, Xcode 3.2.3 и предварительный просмотр разработчика Xcode4. Как я могу убедиться из Applescript, что выбрана версия 3.2.3?
2 ответа
Решение
Вместо простой ссылки на Xcode по его имени, то есть:
tell application "Xcode"
...
end tell
Вы также можете ссылаться на конкретную версию приложения по полному пути POSIX, то есть:
tell application "/Developer/Applications/Xcode 3.2.3.app"
...
end tell
Также см. Раздел руководства по языку AppleScript в классе приложения.
Более сложное решение включает поиск в базе данных Launch Services всех версий приложения, установленных в системе. Затем вы можете программно выбрать тот с требуемой версией:
property pLSRegisterPath : "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister"
property pAppBundleID : "com.apple.Xcode"
property pAppRequiredVersion : "3.2.3"
set theAppPaths to every paragraph of (do shell script pLSRegisterPath & " -dump | grep --before-context=2 \"" & pAppBundleID & "\" | grep --only-matching \"/.*\\.app\"")
set xcodeApp to missing value
repeat with theAppPath in theAppPaths
try
if (version of application theAppPath) = pAppRequiredVersion then
set xcodeApp to application theAppPath
exit repeat
end if
end try
end repeat
if xcodeApp = missing value then
error "Needed application version not installed."
end if
using terms from application "Xcode"
tell xcodeApp
activate
end tell
end using terms from
Вы можете запустить приложение по его идентификатору, как это. Возможно, две версии будут иметь разные идентификаторы.
tell application id "com.apple.AddressBook"
-- do something
end tell
Вы можете получить идентификатор приложения с этим...
tell application "Finder" to return id of (choose file)