Как запустить конкретную версию 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)
Другие вопросы по тегам