Найти версию Mac OSX, установленную с помощью AppleScript - PullRequest
7 голосов
/ 31 января 2009

Как узнать, какая версия OSX установлена ​​на моем Mac с помощью AppleScript? Я хочу установить приложение программно и запускать различные файлы pkg в зависимости от версии.

Спасибо

Ответы [ 7 ]

17 голосов
/ 25 июля 2011

Вот как получить версию OSX в AppleScript, используя встроенные функции:

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)

13 голосов
/ 25 октября 2013

Вы можете получить версию ОС в виде строки дисплея, используя:

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
7 голосов
/ 31 января 2009

Я не на Mac, поэтому может быть лучший способ сделать это, но первый подход, который приходит на ум, - это просто выполнить команду оболочки для запроса версии ОС.

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 голосов
/ 09 июня 2009

Вы также можете получить версию из приложения Finder

tell application "Finder"
    set os_version to version
end tell

display dialog os_version

На моей машине это показывает "10.5.8".

2 голосов
/ 31 января 2009

Я не слишком знаком с AppleScript, но AFAIK вы можете получить некоторую информацию о версиях из оболочки с помощью команды sw_vers. Например:

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

Если вы можете прочитать и проанализировать это из appleScript, это может быть решением, хотя я уверен, что должно быть что-то более элегантное.

0 голосов
/ 04 марта 2015

Это сработало для меня

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 голосов
/ 31 января 2009

Попробуйте что-нибудь вроде этого:

tell application "Terminal"
activate

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

Edit: было указано, что это открывает терминал, и это, вероятно, не то поведение, которое вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...