2009-01-31 2 views

ответ

7

Я не нахожусь на 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" 
+0

Это работает очень хорошо. –

+0

Ничего, я вижу разницу сейчас, бах! Я виню усталость: P – HappyCodeMonkey

2

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

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

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

0

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

tell application "Terminal" 
activate 

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

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

+3

Что делать, если терминал не работает? Это запустит его, пугая большинство пользователей. –

+1

Это правда, однако, я предполагал, что плакат изменит этот код в соответствии с их потребностями. – HappyCodeMonkey

4

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

tell application "Finder" 
    set os_version to version 
end tell 

display dialog os_version 

На моей машине это отображает «10.5.8».

+0

Это возвращает версию Finder, а не версию ОС. В моем случае (6 лет спустя = P) версия Finder 10.10.4, а версия os - 10.10.3. –

16

Вот как получить 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)

+0

Это, по-видимому, самый «правильный» способ, поскольку он полностью полагается на встроенные функции. –

+0

Любая идея, как это можно сделать в JXA (JavaScript для автоматизации)? Кажется, не имеет и объект SystemInfo. –

12

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

set _versionString to system version of (system info) 

Если вы хотите сравнить это с другой версии, не забудьте использовать considering numeric strings:

В противном случае вы можете столкнуться с такими проблемами, как «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 
1

Извините, что опаздывает на вечеринку, но сегодня я пытался решить эту проблему.

Похоже, что системный атрибут «sysv» по-прежнему установлен на 4240 в 10.10.0 Yosemite. Когда я получу его в 10.9.5, я получаю 4245. Предполагаю, что в Йосемите должно быть значение выше 4240?

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