AppleScript を使用してインストールされている Mac OSX バージョンを検索する
-
20-08-2019 - |
質問
AppleScript を使用して、Mac にインストールされている OSX のバージョンを確認するにはどうすればよいですか?アプリをプログラムでインストールし、バージョンに基づいて異なる pkg ファイルを実行したいと考えています。
ありがとう
解決
私はMac上ではないよ、これこれを行うには良い方法があるかもしれませんが、心に来る最初のアプローチは、単にOSのバージョンを照会するシェルコマンドを実行されます。
http://developer.apple.com/technotes/tn2002/tn2065。 htmlの#TNTAG2する
http://developer.apple.com/ DOCUMENTATION /ダーウィン/リファレンス/マンページ/ MAN1 / sw_vers.1.htmlする
これらの文献に基づいて、あなたはおそらくのような何かをしたい:
set os_version to do shell script "sw_vers -productVersion"
他のヒント
ここでは、組み込み関数を使用して、AppleScriptの中でOSXのバージョンを取得する方法です。
set sysinfo to system info set osver to system version of sysinfo
OS Xマーベリックスに結果が "10.9" です。
ワンライナー:set osver to system version of (system info)
次を使用して、OS バージョンを表示文字列として取得できます。
set _versionString to system version of (system info)
これを別のバージョンと比較したい場合は、必ず使用してください considering numeric strings
:
considering numeric strings
set _newEnough to _versionString ≥ "10.9"
end considering
そうしないと、「10.4.11」が「10.4.9」より小さい、または「10.10」が「10.9」より小さいなどの問題が発生する可能性があります。
も使用できます system attribute
. 。これにより、バージョン番号を整数として取得できるため、ドット区切りの文字列の比較について心配する必要がなくなります。
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
も使用できます system attribute
文字列を解析せずに個々のバージョンのコンポーネントを取得するには、次のようにします。
set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0
あなたにもファインダーアプリからバージョンを入手することができます。
tell application "Finder"
set os_version to version
end tell
display dialog os_version
私のマシンでは、これは "10.5.8" が表示されます。
私はAppleScriptのとあまり慣れていないんだけど、私の知る限り、あなたはsw_versコマンドでシェルからバージョンに関するいくつかの情報を得ることができます。たとえばます:
Macintosh:~ udekel$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
あなたが読んで、AppleScriptのからそれを解析することができれば、それは私は確信しているものの、よりエレガントなものが存在しなければならない、溶液であってもよい。
これらの線に沿って何かをしてみます:
tell application "Terminal"
activate
set theVersion to do script with command "sw_vers -productVersion"
end tell
編集:これは、端末を開いてないことを指摘し、それはおそらくあなたが望む動作ではありませんました。
これは私のために働いた。
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