Trova la versione di Mac OSX installata utilizzando AppleScript
-
20-08-2019 - |
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
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