Encuentra la versión de Mac OSX instalada con AppleScript
-
20-08-2019 - |
Pregunta
¿Cómo puedo encontrar qué versión de OSX está instalada en mi Mac usando AppleScript? Quiero instalar una aplicación mediante programación y ejecutar diferentes archivos pkg según la versión.
Gracias
Solución
No estoy en una Mac, por lo que puede haber una mejor manera de hacerlo, pero el primer enfoque que se me ocurre es ejecutar un comando de shell para consultar la versión del sistema operativo.
http://developer.apple.com/technotes/tn2002/tn2065. html # TNTAG2
http://developer.apple.com/ DOCUMENTACIÓN / Darwin / Referencia / ManPages / man1 / sw_vers.1.html
Con base en estas referencias, probablemente desee hacer algo como:
set os_version to do shell script "sw_vers -productVersion"
Otros consejos
Aquí le mostramos cómo obtener la versión OSX en AppleScript, utilizando las funciones integradas:
set sysinfo to system info set osver to system version of sysinfo
En OS X Mavericks el resultado es " 10.9 " ;.
One-liner: set osver to system version of (system info)
Puede obtener la versión del sistema operativo como una cadena de visualización usando:
set _versionString to system version of (system info)
Si desea comparar esto con otra versión, asegúrese de usar considering numeric strings
:
considering numeric strings
set _newEnough to _versionString ≥ "10.9"
end considering
De lo contrario, puede encontrarse con problemas como " 10.4.11 " ser menor que & "; 10.4.9 &"; o & "; 10.10 &"; ser menor que " 10.9 " ;.
También puede usar system attribute
. Esto le permite obtener el número de versión como un entero para que no tenga que preocuparse por comparar cadenas separadas por puntos:
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
También puede usar <=> para obtener los componentes de la versión individual sin tener que analizar una cadena:
set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0
También puede obtener la versión de la aplicación Finder
tell application "Finder"
set os_version to version
end tell
display dialog os_version
En mi máquina, esto muestra " 10.5.8 " ;.
No estoy muy familiarizado con AppleScript, pero AFAIK puede obtener información sobre las versiones del shell con el comando sw_vers. Por ejemplo:
Macintosh:~ udekel$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Si puede leer y analizar eso desde appleScript, puede ser una solución, aunque estoy seguro de que tiene que haber algo más elegante.
Pruebe algo en este sentido:
tell application "Terminal"
activate
set theVersion to do script with command "sw_vers -productVersion"
end tell
Editar: se señaló que esto abre el terminal, y que probablemente no sea el comportamiento que desea.
Esto funcionó para mí
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