Find Mac OSX version installed using AppleScript

前端 未结 7 2212
夕颜
夕颜 2021-02-15 04:23

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.

相关标签:
7条回答
  • 2021-02-15 04:31

    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
    
    0 讨论(0)
  • 2021-02-15 04:32

    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.

    0 讨论(0)
  • 2021-02-15 04:32

    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

    0 讨论(0)
  • 2021-02-15 04:41

    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".

    0 讨论(0)
  • 2021-02-15 04:42

    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)

    0 讨论(0)
  • 2021-02-15 04:43

    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"
    
    0 讨论(0)
提交回复
热议问题