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

Macos 查找使用AppleScript安装的Mac OSX版本,macos,applescript,Macos,Applescript,如何使用AppleScript查找Mac上安装的OSX版本?我想以编程方式安装一个应用程序,并根据版本运行不同的pkg文件 谢谢我对AppleScript不太熟悉,但是您可以使用sw\u vers命令从shell中获得一些关于版本的信息。例如: Macintosh:~ udekel$ sw_vers ProductName: Mac OS X ProductVersion: 10.5.6 BuildVersion: 9G55 如果你能从appleScript中阅读并解析它,这可能是一

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


谢谢

我对AppleScript不太熟悉,但是您可以使用sw\u vers命令从shell中获得一些关于版本的信息。例如:

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

如果你能从appleScript中阅读并解析它,这可能是一个解决方案,尽管我确信一定会有更优雅的解决方案。

我不在Mac电脑上,所以可能有更好的方法来实现这一点,但首先想到的方法是执行shell命令来查询操作系统版本

根据这些参考资料,您可能希望执行以下操作:

set os_version to do shell script "sw_vers -productVersion"

试着做以下几点:

tell application "Terminal"
activate

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

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

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

tell application "Finder"
    set os_version to version
end tell

display dialog os_version

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

以下是如何使用内置函数在AppleScript中获取OSX版本:

set sysinfo to system info set osver to system version of sysinfo 将sysinfo设置为system info 将osver设置为sysinfo的系统版本 在OSX小牛上,结果是“10.9”


一行:
将osver设置为(系统信息)的系统版本。

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

set _versionString to system version of (system info)
如果要将此版本与其他版本进行比较,请确保使用:

否则,您可能会遇到诸如“10.4.11”小于“10.4.9”或“10.10”小于“10.9”之类的问题

您还可以使用
系统属性
。这使您可以将版本号作为整数获取,这样您就不必担心比较点分隔字符串:

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
您还可以使用
系统属性
获取各个版本组件,而无需解析字符串:

set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0
这对我有用

将OSVersion设置为系统版本(系统信息)
如果OSVersion as string<“10.9”或OSVersion as string>“10.9.5”,则
-如果满足条件,则添加要执行的代码
其他的
-如果不满足条件,则添加要执行的代码

如果终端没有运行怎么办?这将启动它,吓坏大多数用户。这是真的,但是,我假设海报会修改此代码以满足他们的需要。这似乎是最“正确”的方式,因为它完全依赖于内置功能。我不知道如何在JXA(JavaScript for Automation)中实现这一点?似乎没有和SystemInfo对象。这将返回查找程序版本,而不是操作系统版本。在我的例子中(6年后=P),Finder版本是10.10.4,而os版本是10.10.3。
set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0