Domanda

Come posso trovare quale versione di OSX è installata sul mio Mac usando AppleScript? Voglio installare un'app a livello di codice ed eseguire diversi file pkg in base alla versione.

Grazie

È stato utile?

Soluzione

Non sono su un Mac, quindi potrebbe esserci un modo migliore per farlo, ma il primo approccio che mi viene in mente è semplicemente quello di eseguire un comando shell per interrogare la versione del sistema operativo.

http://developer.apple.com/technotes/tn2002/tn2065. html # TNTAG2

http://developer.apple.com/ DOCUMENTAZIONE / Darwin / Reference / manpages / man1 / sw_vers.1.html

Sulla base di questi riferimenti, probabilmente vorrai fare qualcosa del tipo:

set os_version to do shell script "sw_vers -productVersion"

Altri suggerimenti

Ecco come ottenere la versione OSX in AppleScript, usando le funzioni integrate:

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

Su OS X Mavericks il risultato è " 10.9 " ;.

One-liner: set osver to system version of (system info)

Puoi ottenere la versione del sistema operativo come stringa di visualizzazione usando:

set _versionString to system version of (system info)

Se si desidera confrontare questo con un'altra versione, assicurarsi di utilizzare considering numeric strings :

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

Altrimenti, potresti riscontrare problemi come " 10.4.11 " essendo inferiore a " 10.4.9 " oppure " 10.10 " essendo inferiore a " 10.9 " ;.

Puoi anche usare system attribute. Ciò ti consente di ottenere il numero di versione come intero in modo da non doverti preoccupare di confrontare stringhe separate da punti:

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

Puoi anche usare <=> per ottenere i singoli componenti della versione senza dover analizzare una stringa:

set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0

Puoi ottenere la versione anche dall'app Finder

tell application "Finder"
    set os_version to version
end tell

display dialog os_version

Sulla mia macchina viene visualizzato " 10.5.8 " ;.

Non ho molta familiarità con AppleScript, ma AFAIK è possibile ottenere alcune informazioni sulle versioni dalla shell con il comando sw_vers. Ad esempio:

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

Se riesci a leggerlo e analizzarlo da appleScript, questa potrebbe essere una soluzione, anche se sono sicuro che ci deve essere qualcosa di più elegante.

Prova qualcosa del genere:

tell application "Terminal"
activate

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

Modifica: è stato sottolineato che questo apre il terminale e che probabilmente non è il comportamento desiderato.

Questo ha funzionato per me

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top