查找使用AppleScript安装的Mac OSX版本

时间:2009-01-31 05:20:08

标签: macos applescript

如何使用AppleScript查找Mac上安装的OSX版本?我想以编程方式安装应用程序,并根据版本运行不同的pkg文件。

由于

7 个答案:

答案 0 :(得分:17)

以下是如何使用内置函数在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)

答案 1 :(得分:13)

您可以使用以下命令将操作系统版本作为显示字符串获取:

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”小于“10.9”等问题。

您也可以使用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

答案 2 :(得分:7)

我不在Mac上,所以可能有更好的方法来做到这一点,但首先想到的方法就是执行一个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"

答案 3 :(得分:4)

您也可以从Finder应用中获取版本

tell application "Finder"
    set os_version to version
end tell

display dialog os_version

在我的机器上显示“10.5.8”。

答案 4 :(得分:2)

我对AppleScript不太熟悉,但是AFAIK你可以通过sw_vers命令从shell获得有关版本的一些信息。例如:

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

如果您可以从appleScript中读取和解析,那可能是一个解决方案,但我确信必须有更优雅的东西。

答案 5 :(得分:0)

尝试以下几点:

tell application "Terminal"
activate

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

编辑:有人指出这确实打开了终端,这可能不是你想要的行为。

答案 6 :(得分:0)

这对我有用

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