Trouver la version Mac OSX installée à l'aide de AppleScript
-
20-08-2019 - |
Question
Comment puis-je savoir quelle version d'OSX est installée sur mon Mac en utilisant AppleScript? Je souhaite installer une application par programme et exécuter différents fichiers pkg en fonction de la version.
Merci
La solution
Je ne suis pas sur Mac, il existe peut-être un meilleur moyen de le faire, mais la première approche qui me vient à l'esprit consiste simplement à exécuter une commande shell pour interroger la version du système d'exploitation.
http://developer.apple.com/technotes/tn2002/tn2065. html # TNTAG2
http://developer.apple.com/ DOCUMENTATION / Darwin / Référence / ManPages / man1 / sw_vers.1.html
Sur la base de ces références, vous souhaiterez probablement faire quelque chose comme:
set os_version to do shell script "sw_vers -productVersion"
Autres conseils
Voici comment obtenir la version OSX dans AppleScript, à l'aide des fonctions intégrées:
set sysinfo to system info set osver to system version of sysinfo
Sous OS X Mavericks, le résultat est & "; 10,9 &";.
. Une ligne: set osver to system version of (system info)
Vous pouvez obtenir la version du système d'exploitation sous forme de chaîne d'affichage à l'aide de:
set _versionString to system version of (system info)
Si vous souhaitez comparer ceci à une autre version, veillez à utiliser considering numeric strings
:
considering numeric strings
set _newEnough to _versionString ≥ "10.9"
end considering
Sinon, vous pouvez rencontrer des problèmes tels que & "; 10.4.11 &"; étant inférieur à " 10.4.9 " ;, ou " 10.10 " étant inférieur à & "; 10,9 &";.
Vous pouvez également utiliser system attribute
. Cela vous permet d’obtenir le numéro de version sous forme d’entier afin que vous n’ayez pas à vous soucier de la comparaison des chaînes séparées par des points:
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
Vous pouvez également utiliser <=> pour obtenir les composants de version individuels sans avoir à analyser une chaîne:
set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0
Vous pouvez également obtenir la version à partir de l'application Finder
tell application "Finder"
set os_version to version
end tell
display dialog os_version
Sur ma machine, cela affiche & "; 10.5.8 &";
.Je ne connais pas trop bien AppleScript, mais autant que je sache, vous pouvez obtenir des informations sur les versions du shell à l'aide de la commande sw_vers. Par exemple:
Macintosh:~ udekel$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Si vous pouvez lire et analyser cela dans appleScript, cela pourrait être une solution, même si je suis sûr qu'il doit y avoir quelque chose de plus élégant.
Essayez quelque chose dans ce sens:
tell application "Terminal"
activate
set theVersion to do script with command "sw_vers -productVersion"
end tell
Modifier: Il a été signalé que cela ouvrait le terminal et que ce n'était probablement pas le comportement que vous souhaitiez.
Cela a fonctionné pour moi
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