Encontrar a versão Mac OSX instalado usando AppleScript
-
20-08-2019 - |
Pergunta
Como posso descobrir qual versão do OSX está instalado no meu Mac usando AppleScript? Eu quero instalar um aplicativo programaticamente e executar diferentes arquivos PKG baseado na versão.
Graças
Solução
Eu não estou em um Mac, portanto, pode haver uma maneira melhor de fazer isso, mas a primeira abordagem que vem à mente é apenas executar um comando shell para consultar a versão OS.
http://developer.apple.com/technotes/tn2002/tn2065. html # TNTAG2
http://developer.apple.com/ DOCUMENTAÇÃO / Darwin / Referência / manpages / man1 / sw_vers.1.html
Com base nessas referências, você provavelmente vai querer fazer algo como:
set os_version to do shell script "sw_vers -productVersion"
Outras dicas
Aqui é como obter a versão do OSX em AppleScript, usando built-in funções:
set sysinfo to system info set osver to system version of sysinfo
No OS X Mavericks o resultado é "10.9".
One-liner: set osver to system version of (system info)
Você pode obter a versão do SO como uma seqüência de exibição usando:
set _versionString to system version of (system info)
Se você quiser comparar isso com outra versão, certifique-se de uso considering numeric strings
:
considering numeric strings
set _newEnough to _versionString ≥ "10.9"
end considering
Caso contrário, você pode ter problemas como "10.4.11" ser inferior a "10.4.9", ou "10.10" ser inferior a "10.9".
Você também pode usar system attribute
. Isso permite que você obtenha o número da versão como um número inteiro de modo que você não precisa se preocupar sobre a comparação de cadeias separadas por ponto:
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
Você também pode usar system attribute
para obter os componentes de versão individuais sem ter que analisar uma string:
set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0
Você pode obter a versão do aplicativo do Finder, bem
tell application "Finder"
set os_version to version
end tell
display dialog os_version
Na minha máquina esta exibe "10.5.8".
Eu não estou muito familiarizado com AppleScript, mas AFAIK você pode obter algumas informações sobre as versões do shell com o comando sw_vers. Por exemplo:
Macintosh:~ udekel$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Se você pode ler e analisar que a partir AppleScript, que pode ser uma solução, embora eu tenho certeza que tem de haver algo mais elegante.
Tente algo ao longo destas linhas:
tell application "Terminal"
activate
set theVersion to do script with command "sw_vers -productVersion"
end tell
Edit: Foi salientado que esta não abre o terminal, e que provavelmente não é o comportamento desejado.
Isso funcionou para mim
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