我思故我在我有我精彩--liangqihui

爱欲追而情已逝,子欲孝而亲不待。人生的困苦又怎能用一个难字囊尽百味
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

【转】MacOS安装软件及运行时,提示“已损坏无法打开”的解决方案

3 人赞同了该文章

MAC 安装第三方下载的软件后,打开软件时经常会遇到提示“XXX 已损坏,无法打开。您应该将它移到废纸篓。” 的问题,如下图所示:

提示已损坏

 

一、为什么会出现这个提示?

MacOS提示文件"已损坏"主要源于其多层安全机制对未通过验证的应用程序的拦截。以下是具体原因分析:

1. Gatekeeper 安全机制

- 核心功能:系统默认只允许运行来自 Mac App Store 或经苹果公证(Notarization)的开发者签名的应用‌;

- 触发条件:当检测到应用无有效开发者ID签名或未通过苹果公证时,会显示"已损坏"提示‌;

2. 隔离属性(Quarantine)

- 标记来源:由于 MacOS 系统的特性,通过浏览器、社交软件等其他地方下载的软件,系统会自动添加 com.apple.quarantine 扩展属性,表示这个软件不是从 App Store 下载的;

- 拦截表现:系统会阻止带有该属性的应用程序运行,并显示"来自未知开发者"或"已损坏"‌

二、如何解决?

1. 在程序坞找到「终端」应用程序并打开

打开终端

 

2. 在终端依次输入以下两个命令:

第一个命令:sudo spctl --master-disable

注意:

- spctl 和 --master 之间有个空格;master 和 -disable 之间没有空格

- 输入命令后回车,会 提示输入密码,在出现 password 字样后,输入你的开机密码,输密码的时候是不显示密码的,你正常输入完密码后回车就行

执行命令,输入密码

 

这个命令主要是为了打开系统限制,运行系统运行第三方下载的软件。

运行命令后,会在 系统偏好设置 – 安全性与隐私 – 安全性 ,中显示“任何来源”选项,如下图,需要勾选上「任何来源」

打开任何来源

 

 

第二个命令:sudo xattr -cr /Applications/XXX.app

注意:-cr 后面有个空格,然后是 /Applications/XXX.app

以滴答清单为例:

完整命令:sudo xattr -cr /Applications/TickTick.app

先输入 命令的前半部分:sudo xattr -cr,(cr 后面加一个空格)

然后打开「应用程序文件夹」,把滴答清单应用拖到终端里面,就会自动补全后半部分的命令(其实就是滴答清单应用程序的路径)

把滴答清单拖进去

拖进去之后是这样,然后直接回车就行

 

这个命令主要是为了去除应用程序的 隔离属性,让它不被标记为第三方下载的软件

 

完成以上两步操作,再点击刚才的应用程序,就可以正常打开使用了。