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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top