【问题标题】:Find Mac OSX version installed using AppleScript查找使用 AppleScript 安装的 Mac OSX 版本
【发布时间】:2010-10-04 15:24:15
【问题描述】:

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

谢谢

【问题讨论】:

    标签: macos applescript


    【解决方案1】:

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

    将 sysinfo 设置为系统信息 将 osver 设置为 sysinfo 的系统版本

    在 OS X Mavericks 上,结果是“10.9”。

    单线:set osver to system version of (system info)

    【讨论】:

    • 这似乎是最“正确”的方式,因为它完全依赖于内置函数
    • 知道如何在 JXA(自动化 JavaScript)中做到这一点吗?好像没有和 SystemInfo 对象。
    【解决方案2】:

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

    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
    

    【讨论】:

      【解决方案3】:

      我不在 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"
      

      【讨论】:

        【解决方案4】:

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

        tell application "Finder"
            set os_version to version
        end tell
        
        display dialog os_version
        

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

        【讨论】:

        • 这将返回 Finder 版本而不是 OS 版本。就我而言(6 年后 =P)Finder 版本是 10.10.4,而 os 版本是 10.10.3。
        【解决方案5】:

        我对 AppleScript 不太熟悉,但是根据 AFAIK,您可以使用 sw_vers 命令从 shell 获取有关版本的一些信息。例如:

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

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

        【讨论】:

          【解决方案6】:

          尝试以下方法:

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

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

          【讨论】:

          • 如果终端没有运行怎么办?这将启动它,吓到大多数用户。
          • 没错,但是,我假设发布者会修改此代码以满足他们的需求。
          【解决方案7】:

          这对我有用

          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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-08-13
            • 2011-03-12
            • 1970-01-01
            • 2012-12-09
            • 2015-02-11
            • 1970-01-01
            • 2019-01-25
            相关资源
            最近更新 更多