Mac提示”xxx.app已损坏,无法打开,你应该将它移到废纸篓”的解决方法

随着mac系统的升级,对app安全控制越来越严,经常遇到一些非官方渠道安装的app,安装后无法打开的情况,如提示”xxx.app已损坏,无法打开,你应该将它移到废纸篓”,一般情况下,出现该问题是因为软件没有签名,所以被MAC系统禁止运行。可以尝试以下解决方案

老系统:设置允许任何来源下载的App

比较老的版本系统,可以按以下步骤操作:
打开”系统偏好设置 -> 安全与隐私 -> 通用”选项卡,检查是否已经启用了”任何来源”选项。如果没有启用,先点击左下角的小黄锁图标解锁,然后选中”任何来源”。(由于作者mac系统比较新,故此图来源网络)
image.png

如果没有”任何来源”的选项,打开终端,输入以下命令:

1
sudo spctl --master-disable

sudo spctl --master-disable 是一个在macOS操作系统中使用的命令行指令,用于修改系统安全策略控制(System Integrity Protection,简称SIP)的设置。SIP 是一种安全特性,用于保护系统文件和目录免受未授权的修改。

sudo spctl --master-disable 的作用如下:

  1. 禁用 SIP:这个命令会禁用 SIP 功能,允许用户对系统文件进行修改。默认情况下,macOS 会阻止对某些系统文件和目录的修改,以保护系统安全。
  2. 需要管理员权限:由于这个命令涉及到系统级别的更改,因此需要使用 sudo 来获取管理员权限。
  3. 临时禁用:这个命令的禁用效果是临时的,重启计算机后 SIP 会重新启用。
  4. 安全性风险:禁用 SIP 会降低系统的安全性,因为它允许对系统文件进行修改。因此,只有在确实需要修改系统文件时才应该使用这个命令,并且在完成修改后应立即重新启用 SIP。
  5. 重新启用 SIP:要重新启用 SIP,可以使用 sudo spctl --master-enable 命令。

一般来讲到这一步就可以了,但是如果你的系统比较新,你还得继续看下去

新系统:使用xattr -rd命令

如果你的系统比较新,或者已经打开了通用 > 信任任何来源安装后还是报错,那么在终端里执行以下命令:

1
2
3
sudo xattr -rd com.apple.quarantine /Applications/xxxx.app
# 将xxx替换成app的名字,如果你无法准确知道app名称,可以直接将app拖到终端中
# 按提示输入你的电脑密码即可。

sudo xattr -rd com.apple.quarantine /Applications/xxxx.app 是一个在macOS操作系统中使用的命令行指令,它用于移除文件或应用程序的扩展属性(extended attribute),具体来说,是移除一个名为 com.apple.quarantine 的属性。

这个属性通常在文件或应用程序从互联网下载后被添加,作为macOS的一种安全机制。它提示用户,该文件可能来自不信任的来源,需要确认是否信任并运行该应用程序。这个属性有时也被称为”隔离标记”(quarantine flag)。

命令的各个部分含义如下:

  1. sudo:以管理员权限执行后面的命令。由于修改文件的扩展属性需要管理员权限,所以这里使用 sudo
  2. xattr:这是用于查看和修改文件扩展属性的命令行工具。
  3. -rd-r 表示递归地移除属性,-d 表示删除指定的属性。
  4. com.apple.quarantine:这是要删除的扩展属性的名称。
  5. /Applications/xxxx.app:这是要移除隔离标记的应用程序的路径。xxxx.app 应该替换为实际的应用程序名称。

使用这个命令后,应用程序将不再显示警告,提示它可能来自互联网。这在安装从可信来源下载的应用程序时很有用,尤其是当用户确信该应用程序是安全的,但macOS仍然显示隔离警告时。