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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top