2010-08-20 8 views

답변

3

, 즉 :

tell application "Xcode" 
    ... 
end tell 

당신은 또한 즉, 자사의 전체 POSIX 경로하여 응용 프로그램의 특정 버전을 참조 할 수 있습니다 :

tell application "/Developer/Applications/Xcode 3.2.3.app" 
    ... 
end tell 

는 또한 참조 AppleScript 언어 가이드 섹션은 application class입니다.

더 복잡한 솔루션은 시스템에 설치된 응용 프로그램의 모든 버전에 대해 시작 서비스 데이터베이스를 검색하는 작업입니다. 그런 다음 원하는 버전으로 프로그래밍 방식으로 프로그램을 선택할 수 있습니다.

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 
+0

아, 참으로 내가 전에 그렇게하는 데 사용됩니다. 하지만 이제는 경로를 지정하지 않고도 대안을 원합니다. 스크립트가 두 .app 번들 중 하나를 선택하는 방법에 대해 궁금합니다. – Plumenator

+0

@Plumenator Xcode의 필수 버전을 명시 적으로 검색하는 대체 솔루션으로 내 대답을 업데이트했습니다. – sakra

+0

와우,이 모양이 옳다! Lemme는 일하러 아침에 이것을 시도합니다. Btw, "용어 사용"블록이 필요합니까? 또한이 물건을 어떻게 아십니까? 시작 서비스 부분은 무엇입니까? – Plumenator

2

다음과 같은 ID로 응용 프로그램을 시작할 수 있습니다. 어쩌면 두 버전의 ID가 다를 수 있습니다. 당신이 사용하여 응용 프로그램의 ID를 얻을 수 있습니다

tell application id "com.apple.AddressBook" 
    -- do something 
end tell 

...

tell application "Finder" to return id of (choose file) 
+1

그들은 실제로 다른 번들 식별자를 가지고 있습니다. Xcode 3은 "com.apple.Xcode"이고 Xcode 4는 "com.apple.dt.Xcode"입니다. Xcode 4가 최종 버전이 될 때까지 계속 유지할 지 확신 할 수 없지만 적어도 시간이 지나면 사용할 수 있습니다. –

+0

나는 그럴 수도 있다고 생각했다. v4의 데모를 보았는데 다른 모양으로 보였으므로 다른 환경 설정이있을 것이라는 확신이 들었습니다. 이는 다른 ID를 가져야한다는 것을 의미합니다. id와 pref 파일 이름은 같습니다. – regulus6633

관련 문제