终于遇到同样问题的了。前几天国补刚买了 Mac mini ,然后刚激活后的几天还能正常安装,然后就发现任何 .dmg 都无法正常打开,提示跟你说的一模一样 “应用程序“
DiskImageMounter.app”无法打开。-36”,网上找了一堆答案,都是牛头不对马嘴无法解决问题,然后顺着楼主的帖子真的解决了。
浅浅讲一下,我的理解是:macOS 的安装程序 `.dmg` 本质上是一个镜像,双击安装其实是通过 macOS 自带的 `
DiskImageMounter.app` 来挂载镜像然后安装,双击镜像挂载镜像本质上就实现目的来说和执行 `hdiutil attach /path/to/xxx.dmg` 一样的,都是挂载镜像,然后启动安装。
现在报 `“应用程序“
DiskImageMounter.app”无法打开 -36”`,其实是因为`.dmg`文件的扩展属性被意外或者错误更改了,我的理解是大概类似于 Windows 上的 `.exe` 文件,本来在 Windows 中是被定义为应用安装包,现在由于某种问题而被更改了,Windows 应用安装程序无法识别 `.exe` 文件为应用安装包,所以就无法安装。(这点我也不太百分百保证,我也是根据我的想法配合 Gemini 的解释来理解)
`.dmg` 文件本来的默认扩展属性是应用程序安装包,现在被错误更改为其他之后,`
DiskImageMounter.app` 也就无法把 `.dmg` 当作应用程序安装包来挂载安装。
我回忆了一下,大概可能应该是因为我安装了解压缩软件 `Keka`,然后在关联格式的时候导致 `.dmg` 的扩展属性被更改了,因为我实在是想不到其他的可能性。
再回到楼主的解决方法,其实刚开始我输入 `sudo xattr -r -d com.apple.quarantine` 之后并没有解决我的问题,执行后终端报错:`Not enough arguments for option -d. Expected at least 2 but got 1`。原因在于 `xattr -d` 命令用于删除文件的扩展属性。它的基本用法是 xattr -d <属性名称> <文件路径> 。我输入的命令 ` sudo xattr -r -d com.apple.quarantine` 只指定了要删除的属性名称 `com.apple.quarantine`,但是没有指定要从哪个文件上删除这个属性,所以系统提示参数不足。
正确的删除 `com.apple.quarantine` 属性的命令应该是 `sudo xattr -d com.apple.quarantine /path/to/your/app-name.dmg`,其中需要将 `/path/to/your/app-name.dmg` 替换为实际下载的.dmg 文件的完整路径。
然后我又搜索了下 `com.apple.quarantine` 这个属性,它是 `macOS Gatekeeper` 安全机制的一部分,它会标记从互联网下载的文件 。当用户第一次打开带有这个属性的应用时,系统会进行检查(例如开发者签名、是否经过公证等),并可能弹出警告,例如“文件已损坏”或“无法验证开发者” 。所以移除这个属性可以解决这类安全提示导致无法打开应用的问题。
再多提一嘴,严格意义上第一次(因为真实的第一次是大学的时候在一台 HP 的机子上折腾黑苹果 2333 )使用 macOS ,大家都说 Windows 问题很多,苹果很省心。对于开发而言,各种环境和软件安装,macOS 真的非常非常好用,对我的需求而言很接近甚强过 Linux ,而且因为相比 Linux 有好用的 GUI ,我觉得体验非常好。
但在另一方面,如果在使用 macOS 的过程中遇到系统方面的一些问题,比如这个,可能因为用户量的关系,能搜到的相关问题和解答真的少的可怜,相比之下 Windows 虽然大家都在吐槽,但因为用户足够多,在遇到问题之后解决问题的便利程度上还是要好过 macOS 很多。
PS:还有就是 Finder 这个 icon 平时没感觉,遇到问题报错的时候看起来真的很有攻击性
https://imgur.com/WRBU67d