Mac应用提示“已损坏”打不开的解决办法

Mac应用提示“已损坏”打不开的解决办法

在Mac上下载应用时,可能会出现“XXX已损坏,打不开”的错误提示,无法正常使用该应用程序。这通常是因为下载过程中,应用签名信息出了问题。下面我来告诉你如何解决这个恼人的问题:

临时绕过公证(最常使用办法)

如果你只想快速临时解决这个问题,可以使用绕过公证的方法:

  1. 点击Mac左上角的“启动台”,然后打开“其他”项下的“终端”程序,启动终端窗口

  2. 在终端窗口里,先输入下面的命令,记得最后面留一个空格:

    1
    2
    3
    sudo xattr -rd com.apple.quarantine

    如:sudo xattr -rd com.apple.quarantine /Applications/25mac.app
  3. 然后打开“访达”,进入“应用程序”文件夹,找到出问题的应用图标,直接拖到终端窗口

  4. 拖入应用图标后,按下回车键执行命令

  5. 这时会提示输入密码,输入Mac的系统登录密码,再按回车键

  6. 密码不会显示出来,输入完直接回车确认

  7. 完成!现在就可以打开这个应用了,不会再提示损坏信息

以上步骤可以快速临时解决无法打开应用的问题,但是重启电脑后会再次失效。如果想完全修复,可以尝试下面的重新签名方法。

应用重新签名

这种方法可以永久修复应用签名,解决该问题:

  1. 同样先打开“终端”程序,输入以下命令,记得最后留一个空格:

    1
    2
    3
    sudo codesign --force --deep --sign - 

    如:sudo codesign --force --deep --sign - /Applications/25mac.app
  2. 然后同样打开“应用程序”文件夹,拖入问题应用到终端

  3. 按回车键执行命令,输入密码,完成签名

  4. 这次重启电脑后也不会再出现无法打开的情况了

SIP大法

以上两种方法,你可以根据需要选择一种来解决应用“已损坏”的问题,重新无障碍打开应用程序。如果还是报错,就可以祭出大招了,需要关闭SIP文件系统保护,方法详见 https://www.25mac.com/blogs/sip/

进阶

sudo xattr -rd com.apple.quarantine命令详解如下:

sudo – 获取root权限执行命令

xattr – 用于管理macOS系统的扩展文件属性

-r – 递归地删除指定文件的扩展属性

-d – 删除操作,不显示详细信息

com.apple.quarantine – 这个是macOS系统给下载的应用程序打上的标记,包含来源URL等信息。

该命令的作用是递归删除指定文件或文件夹的quarantine扩展属性。

在macOS上,从internet下载的应用程序会被加上quarantine标记,系统会检验这个标记来决定是否允许打开该应用程序。

如果应用程序的signature签名出现问题,quarantine标记就会导致“已损坏”错误。

使用sudo xattr -rd com.apple.quarantine /Path/to/App命令可以删除这个标记,绕过安全检查,临时解决无法打开App的问题。

需要注意,此方法重启后会失效,每次打开App都需要操作一次,仅建议用于临时情况。

sudo codesign –force –deep –sign – 命令详解如下:

sudo – 获取root权限执行命令

codesign – 用于签名、验证代码签名的工具

–force – 强制进行签名操作,不论原签名是否存在

–deep – 递归签名,将签名应用到指定目标中的所有代码

–sign – 执行签名操作,为目标文件添加签名

    • 签名使用系统默认的身份进行签名

该命令的作用是:

  1. 强制对指定的目标(应用程序等)进行递归代码签名,添加签名信息
  2. 不管原先是否存在签名,都用系统默认身份重新进行签名
  3. 签名会应用到目标中的所有代码和组件上

在macOS上,下载的应用缺失正确的签名信息会导致无法打开,报“已损坏”错误。

使用此命令可以修复应用程序的签名,解决该问题。与仅删除quarantine标记不同,该方法可以永久解决问题。

需要注意,签名使用的是系统默认证书,与开发者原始签名不同,可能导致软件运行异常。建议仅在必要时使用。