highlight.js

星期二, 11月 26, 2019

MacOS Catalina App 『已損毀,無法打開。你應該將其丟到「垃圾桶」』的錯誤訊息

MacOS 升級到 Catalina 後, 一定會被他嚴密的安全控管驚嚇, 比如說, 你從 Arduino 官網下載了 Arduino, 可以正常執行, 但如果你把這個 Arduino 上傳到 Google 雲端硬碟, 然後再從雲端硬碟下載回來, 一執行可能就會遇到這樣的畫面:


這是因為 Catalina 會自動幫不是從註冊網站下載回來的 App 加上註記, 執行時會根據註記的資料, 判斷是否可安全執行。你可以透過以下的指令觀察註記資料:
xattr -l Arduino.app/
com.apple.quarantine: 0181;5ddd072e;Firefox;BCD73B6E-DE9E-4821-93E6-C73238A5F5AF
xattr 是操作檔案延伸屬性的指令, 這裡可以看到 Arduino.app 有一項延伸屬性, 屬性名稱是 com.apple.quarantine, 而屬性內容是雖然是編碼過的資料, 但可以看到註記了此 App 是使用 Firefox 下載回來的, 只要將此註記資料刪除, Catalina 就不會檢查 App 是不是從註冊網站下載的, 也就可以正常執行了。刪除此註記資料的指令如下:
xattr -rd com.apple.quarantine Arduino.app
-d 選項是刪除後面指定的延伸屬性, 而 -r 選項是遞迴處理資料夾內的所有檔案與子資料夾。

沒有留言: