Find Mac OSX version installed using AppleScript

萝らか妹 提交于 2021-02-06 23:58:39

问题


How can I find which version of OSX is installed on my Mac by using AppleScript? I want to install an app programatically and run different pkg files based on the version.

Thanks


回答1:


I'm not on a Mac, so there may be a better way to do this, but the first approach that comes to mind is just executing a shell command to query the OS version.

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

http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/sw_vers.1.html

Based on these references, you probably want to do something like:

set os_version to do shell script "sw_vers -productVersion"



回答2:


Here is how to get OSX version in AppleScript, using built-in functions:

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

On OS X Mavericks the result is "10.9".

One-liner: set osver to system version of (system info)




回答3:


You can get the OS version as a display string using:

set _versionString to system version of (system info)

If you want to compare this to another version, be sure to use considering numeric strings:

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

Otherwise, you can run into problems such as "10.4.11" being less than "10.4.9", or "10.10" being less than "10.9".

You can also use system attribute. This lets you get the version number as an integer so that you don't need to worry about comparing dot-separated strings:

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

You can also use system attribute to get the individual version components without having to parse a string:

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



回答4:


You can get version from the Finder app as well

tell application "Finder"
    set os_version to version
end tell

display dialog os_version

On my machine this displays "10.5.8".




回答5:


I'm not too familiar with AppleScript, but AFAIK you can get some info about versions from the shell with the sw_vers command. For example:

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

If you can read and parse that from appleScript, that may be a solution, though I'm sure there has to be something more elegant.




回答6:


Try something along these lines:

tell application "Terminal"
activate

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

Edit : It was pointed out that this does open the terminal, and that probably isn't the behavior you want.




回答7:


This worked for me

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


来源:https://stackoverflow.com/questions/498323/find-mac-osx-version-installed-using-applescript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!