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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top