macOSのバージョンを求める機能については、かならず複数の方法で取得できるように調査しています。
それは、Appleがバグを作る可能性が一番高い機能だからです(なんで懲りないんだろ?)。
OSバージョンを求めるのに、
・AppleScriptの標準装備コマンド「system info」で求める
–> {AppleScript version:”2.8″, AppleScript Studio version:”1.5.3″, system version:”13.6.9″, short user name:”XXXX”, long user name:”XXXXX XXXXX”, user ID:504, user locale:”ja_JP”, home directory:alias “Macintosh HD:Users:XXXX:”, boot volume:”Macintosh HD:”, computer name:”M1 mini”, host name:”m1mini.local”, IPv4 address:”192.168.0.99″, primary Ethernet address:”99:99:99:99:ZZ:99″, CPU type:”ARM64E”, CPU speed:missing value, physical memory:16384}
・AppleScriptの環境プロパティ「system attribute」を求める
set v1 to system attribute “sys1” –> 10
set v2 to system attribute “sys2” –> 4
set v3 to system attribute “sys3” –> 11
・shell commandで求める
–> sw_vers
–> sw_vers -productVersion
などに加えて、NSProcessInfos processInfo()’s operatingSystemVersion() を呼び出すという方法も加わりました。
ただ、これが最近おかしな挙動をするようになったのに気づいていろいろ調査してみたら、macOS 14になって返り値のフォーマットを変えたことが判明しました。macOS 14.xの初期バージョンでは従来タイプの値を返してきたように記憶していますが、いつ変更したのやら。
AppleScript名:OSバージョンを求める.scpt |
use AppleScript use framework "Foundation" use scripting additions set pInfo to (current application’s NSProcessInfo’s processInfo()’s operatingSystemVersion()) –> {majorVersion:10, minorVersion:14, patchVersion:6}–10.14 –> {majorVersion:13, minorVersion:6, patchVersion:9}–13.6.9 –> {14, 6, 1}–14.6.1 –> {15, 1, 0}–15.0.1 |
こういう基本的な情報を提供するAPIの仕様を変更することに、どういうインセンティブがあるのか不明です。変える価値があると判断したから変えたんでしょう。自分にはどういう理由なのか、さっぱり分かりません。
安全のためには、AppleScriptのビルトイン機能を使うか、OS内のplistを読み取って自分で処理するとかいった「対策」が必要なのでしょう。