사과 스크립트를 사용하여 설치된 Mac OSX 버전을 찾으십시오

StackOverflow https://stackoverflow.com/questions/498323

  •  20-08-2019
  •  | 
  •  

문제

사과 스크립트를 사용하여 Mac에 설치되는 OSX 버전을 어떻게 찾을 수 있습니까? 앱을 프로그래밍 방식으로 설치하고 버전을 기반으로 다른 PKG 파일을 실행하고 싶습니다.

감사

도움이 되었습니까?

해결책

나는 Mac에 있지 않으므로 더 나은 방법이있을 수 있지만, 첫 번째 접근 방식은 OS 버전을 쿼리하기 위해 Shell 명령을 실행하는 것입니다.

http://developer.apple.com/technotes/tn2002/tn2065.html#tntag2

http://developer.apple.com/documentation/darwin/reference/manpages/man1/sw_vers.1.html

이 참조를 바탕으로 다음과 같은 작업을 수행하고 싶을 것입니다.

set os_version to do shell script "sw_vers -productVersion"

다른 팁

내장 기능을 사용하여 AppleScript에서 OSX 버전을 얻는 방법은 다음과 같습니다.

set sysinfo to system info
set osver to system version of sysinfo

OS X Mavericks에서 결과는 "10.9"입니다.

짧막 한 농담: set osver to system version of (system info)

OS 버전을 다음을 사용하여 디스플레이 문자열로 가져올 수 있습니다.

set _versionString to system version of (system info)

이것을 다른 버전과 비교하려면 사용하십시오. considering numeric strings:

considering numeric strings
    set _newEnough to _versionString ≥ "10.9"
end considering

그렇지 않으면 "10.4.11"보다 "10.4.9"보다 작거나 "10.10"과 같은 문제가 발생할 수 있습니다.

당신은 또한 사용할 수 있습니다 system attribute. 이렇게하면 버전 번호를 정수로 얻을 수 있으므로 도트 분리 문자열 비교에 대해 걱정할 필요가 없습니다.

set _versionInteger to system attribute "sysv" -- 4240 == 0x1090 (Mac OS X 10.9)
set _isMavericksOrBetter to (system attribute "sysv") ≥ 4240 -- 0x1090
set _isMountainLionOrBetter to (system attribute "sysv") ≥ 4224 -- 0x1080
set _isLionOrBetter to (system attribute "sysv") ≥ 4208 -- 0x1070

당신은 또한 사용할 수 있습니다 system attribute 문자열을 구문 분석하지 않고도 개별 버전 구성 요소를 얻으려면 다음과 같습니다.

set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0

Finder 앱에서도 버전을 얻을 수 있습니다.

tell application "Finder"
    set os_version to version
end tell

display dialog os_version

내 컴퓨터에서 이것은 "10.5.8"을 표시합니다.

AppleScript에 너무 익숙하지는 않지만 Afaik은 SW_VERS 명령을 사용하여 쉘에서 버전에 대한 정보를 얻을 수 있습니다. 예를 들어:

Macintosh:~ udekel$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.5.6
BuildVersion:   9G55

AppleScript에서 그것을 읽고 구문 분석 할 수 있다면 솔루션 일 수 있지만 더 우아한 것이 있어야한다고 확신합니다.

이 라인을 따라 무언가를 시도하십시오.

tell application "Terminal"
activate

set theVersion to do script with command "sw_vers -productVersion"
end tell

편집 : 이것은 터미널을 열고 아마도 당신이 원하는 행동이 아닐 것임을 지적했습니다.

이것은 나를 위해 효과가있었습니다

set OSVersion to system version (system info)
if OSVersion as string < "10.9" or OSVersion as string > "10.9.5" then
- Add code to execute if condition met
else
- Add code to execute if condition not met
end if

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top