Как я могу найти, какая версия OSX установлена на моем Mac с помощью AppleScript? Я хочу установить приложение программно и запустить различные pkg-файлы на основе версии.Найти версию Mac OSX, установленную с использованием AppleScript
Благодаря
Как я могу найти, какая версия OSX установлена на моем Mac с помощью AppleScript? Я хочу установить приложение программно и запустить различные pkg-файлы на основе версии.Найти версию Mac OSX, установленную с использованием AppleScript
Благодаря
Я не нахожусь на 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"
Я не слишком хорошо знаком с AppleScript, но AFAIK вы можете получить некоторую информацию о версии из оболочки с помощью команды sw_vers. Например:
Macintosh:~ udekel$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Если вы можете прочитать и проанализировать, что из AppleScript, что может быть решением, хотя я уверен, что там должно быть что-то более элегантное.
Попробуйте что-то вдоль этих линий:
tell application "Terminal"
activate
set theVersion to do script with command "sw_vers -productVersion"
end tell
Edit: Это было указано, что это делает ручка терминала, и, вероятно, это не то поведение, которое вы хотите.
Что делать, если терминал не работает? Это запустит его, пугая большинство пользователей. –
Это правда, однако, я предполагал, что плакат изменит этот код в соответствии с их потребностями. – HappyCodeMonkey
Вы можете получить версию из приложения Finder, а
tell application "Finder"
set os_version to version
end tell
display dialog os_version
На моей машине это отображает «10.5.8».
Это возвращает версию Finder, а не версию ОС. В моем случае (6 лет спустя = P) версия Finder 10.10.4, а версия os - 10.10.3. –
Вот как получить 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)
Это, по-видимому, самый «правильный» способ, поскольку он полностью полагается на встроенные функции. –
Любая идея, как это можно сделать в JXA (JavaScript для автоматизации)? Кажется, не имеет и объект SystemInfo. –
Вы можете получить версию ОС в виде строки дисплея с помощью:
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
Извините, что опаздывает на вечеринку, но сегодня я пытался решить эту проблему.
Похоже, что системный атрибут «sysv» по-прежнему установлен на 4240 в 10.10.0 Yosemite. Когда я получу его в 10.9.5, я получаю 4245. Предполагаю, что в Йосемите должно быть значение выше 4240?
Это работало для меня
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
Это работает очень хорошо. –
Ничего, я вижу разницу сейчас, бах! Я виню усталость: P – HappyCodeMonkey