2009-01-31 20 views

Respuesta

7

No estoy en una Mac, por lo que puede haber una mejor manera de hacerlo, pero el primer enfoque que se me ocurre es simplemente 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/DOCUMENTATION/Darwin/Reference/ManPages/man1/sw_vers.1.html

Con base en estas referencias, es probable que quieren hacer algo como:

set os_version to do shell script "sw_vers -productVersion" 
+0

Esto funciona muy bien. –

+0

No importa, ahora veo la diferencia, bah! Culpo a estar cansado: P – HappyCodeMonkey

2

No estoy muy familiarizado con AppleScript, pero que sabemos, se puede conseguir algo de información acerca de las versiones de la cáscara con el comando sw_vers. Por ejemplo:

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

Si usted puede leer y analizar que a partir de AppleScript, que puede ser una solución, aunque estoy seguro de que tiene que haber algo más elegante.

0

Pruebe algo como lo siguiente:

tell application "Terminal" 
activate 

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

Edit: fue señalado que esto hace o conecte el terminal, y ese probablemente no sea el comportamiento que desea.

+3

¿Qué pasa si la Terminal no se está ejecutando? Esto lo lanzará, asustando a la mayoría de los usuarios. –

+1

Eso es cierto, sin embargo, suponía que el póster modificaría este código para satisfacer sus necesidades. – HappyCodeMonkey

4

Puede obtener la versión de la aplicación Buscador así

tell application "Finder" 
    set os_version to version 
end tell 

display dialog os_version 

En mi máquina esta muestra "10.5.8".

+0

Esto devuelve la versión del Finder no la versión del SO. En mi caso (6 años después = P) La versión del buscador es 10.10.4 mientras que la versión del sistema operativo es 10.10.3. –

16

Aquí es cómo conseguir la versión OSX en AppleScript, usando funciones incorporadas:

 
set sysinfo to system info 
set osver to system version of sysinfo 

en OS X Mavericks el resultado es "10.9".

de una sola línea: set osver to system version of (system info)

+0

Esta parece ser la forma más "correcta", ya que depende completamente de las funciones integradas –

+0

¿Alguna idea de cómo se podría hacer esto en JXA (JavaScript para automatización)? No parece tener un objeto SystemInfo. –

12

Usted 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 utilizar considering numeric strings:

considering numeric strings 
    set _newEnough to _versionString ≥ "10.9" 
end considering 

De lo contrario, puede tener problemas como "10.4.11" que es menor que "10.4.9", o "10.10" que es menor que "10.9".

También puede usar system attribute.Esto le permite obtener el número de versión como un entero de modo que usted no tiene que preocuparse acerca de la comparación cadenas separadas con 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 utilizar system attribute para obtener los componentes individuales de la versión 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 
1

Disculpa haber llegado tarde a la fiesta, pero hoy he tratado de resolver este problema.

Parece que el atributo del sistema "sysv" todavía está configurado en 4240 en 10.10.0 Yosemite. Cuando lo obtengo en 10.9.5 obtengo 4245. ¿Estoy asumiendo que debería tener un valor superior a 4240 en Yosemite?

0

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

Cuestiones relacionadas