问题
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