Tôi làm cách nào để tìm phiên bản OSX nào được cài đặt trên máy Mac bằng cách sử dụng AppleScript? Tôi muốn cài đặt một ứng dụng có lập trình và chạy các tệp pkg khác nhau dựa trên phiên bản.Tìm phiên bản Mac OSX đã cài đặt bằng AppleScript
Cảm ơn
Tôi làm cách nào để tìm phiên bản OSX nào được cài đặt trên máy Mac bằng cách sử dụng AppleScript? Tôi muốn cài đặt một ứng dụng có lập trình và chạy các tệp pkg khác nhau dựa trên phiên bản.Tìm phiên bản Mac OSX đã cài đặt bằng AppleScript
Cảm ơn
Tôi không ở trên máy Mac, vì vậy có thể có cách tốt hơn để thực hiện việc này, nhưng cách tiếp cận đầu tiên mà bạn nghĩ đến là chỉ thực hiện lệnh shell để truy vấn phiên bản hệ điều hành.
http://developer.apple.com/technotes/tn2002/tn2065.html#TNTAG2
http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/sw_vers.1.html
Dựa trên những tài liệu tham khảo, có thể bạn muốn làm điều gì đó như:
set os_version to do shell script "sw_vers -productVersion"
Tôi không quá quen thuộc với AppleScript, nhưng AFAIK bạn có thể nhận được một số thông tin về các phiên bản từ vỏ với lệnh sw_vers. Ví dụ:
Macintosh:~ udekel$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Nếu bạn có thể đọc và phân tích cú pháp đó từ appleScript, đó có thể là giải pháp, mặc dù tôi chắc chắn có điều gì đó thanh lịch hơn.
Hãy thử một cái gì đó dọc theo những dòng:
tell application "Terminal"
activate
set theVersion to do script with command "sw_vers -productVersion"
end tell
Edit: Nó đã được chỉ ra rằng điều này không o bút thiết bị đầu cuối, và đó có lẽ không phải là hành vi mà bạn muốn.
Nếu Terminal không hoạt động thì sao? Điều này sẽ khởi chạy nó, khiến hầu hết người dùng phải lo sợ. –
Đó là sự thật, tuy nhiên, tôi đã giả định áp phích sẽ sửa đổi mã này để phù hợp với nhu cầu của họ. – HappyCodeMonkey
Bạn có thể lấy phiên bản từ ứng dụng Finder cũng
tell application "Finder"
set os_version to version
end tell
display dialog os_version
Trên máy tính của tôi này sẽ hiển thị "10.5.8".
Điều này trả về phiên bản Finder không phải là Phiên bản hệ điều hành. Trong trường hợp của tôi (6 năm sau = P) Phiên bản Finder là 10.10.4 trong khi phiên bản os là 10.10.3. –
Sau đây là cách để có được phiên bản OSX trong AppleScript, sử dụng các hàm built-in:
set sysinfo to system info set osver to system version of sysinfo
Trên OS X Mavericks kết quả là "10,9".
One-liner: set osver to system version of (system info)
Điều này có vẻ là cách "chính xác nhất", vì nó hoàn toàn dựa trên các hàm dựng sẵn –
Bất kỳ ý tưởng nào về cách thực hiện điều này trong JXA (JavaScript cho Tự động hóa)? Dường như không có và đối tượng SystemInfo. –
Bạn có thể nhận được phiên bản hệ điều hành như là một chuỗi hiển thị bằng:
set _versionString to system version of (system info)
Nếu bạn muốn so sánh này đến phiên bản khác, hãy chắc chắn để sử dụng considering numeric strings
:
considering numeric strings
set _newEnough to _versionString ≥ "10.9"
end considering
Nếu không, bạn có thể gặp sự cố như "10.4.11" nhỏ hơn "10.4.9" hoặc "10.10" nhỏ hơn "10.9".
Bạn cũng có thể sử dụng system attribute
.Điều này cho phép bạn nhận được số phiên bản như một số nguyên do đó bạn không cần phải lo lắng về việc so sánh dot-tách chuỗi:
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
Bạn cũng có thể sử dụng system attribute
để có được các thành phần phiên bản cá nhân mà không cần phải phân tích một chuỗi :
set _major to system attribute "sys1" -- 10
set _minor to system attribute "sys2" -- 9
set _bugFix to system attribute "sys3" -- 0
Xin lỗi vì đã đến muộn, nhưng tôi đã cố gắng giải quyết vấn đề này ngay hôm nay.
Có vẻ như thuộc tính hệ thống "sysv" vẫn được đặt thành 4240 trong 10.10.0 Yosemite. Khi tôi nhận được nó trong 10.9.5 tôi nhận được 4245. Tôi giả định nó phải là một số giá trị cao hơn 4240 trong Yosemite?
này làm việc cho tôi
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
này hoạt động thực sự tốt. –
Nevermind, tôi thấy sự khác biệt bây giờ, bah! Tôi đổ lỗi cho việc mệt mỏi: P – HappyCodeMonkey