前言 & 原理

Mac 相比于 iPhone,软件生态更加「开放」一些,主要体现在允许用户选择从非 App Store 下载程序。

然而,为了安全,在新版本系统的系统偏好设置中已经移除了「打开任意来源的软件」,这可以说是大大提升了 macOS 的安全性,然而却在便捷上有一定的影响。

由于 App Store 的审核机制与分成机制,我们下载的很多软件都是直接来源于网络的而且开发者并没有交苹果税对软件签名,这就造成第一次打开软件的时候经常会提示一个「XXX 来源于未知开发者」。

如果想一劳永逸地避免这个自然可以,在网上搜索相关教程将我上面提到的设置改为「任意来源」就好了,但这无疑会影响到安全性。所以,很多人遇到这种情况都采用了第二种方法:打开 /Applications 文件夹,右键点击(唔好像叫做辅助触控?)这个软件,选择打开就好了。

或许对于大多数人来说「将软件拖动到应用程序文件夹」的下一步是「打开应用程序文件夹」、「双击这个软件打开」,但是习惯了 Launchbar 的我们肯定「懒得这么干」,而是选择「将软件拖动到应用程序文件夹」+「Launchbar 打开这个软件」的工作流,这本可以简化一个步骤,然而因为这个提示框我们却往往需要再重新进入到应用程序文件夹右键点击一下这个软件,使得本来的两步变成了比「小白用户」还要多的四步。

对于追求效率生活的我自然不甘心,在网上搜索到了 这篇文章,找到了解决方案。

PS. 上述解决方法同样适用于「XXX 已损坏,请移到废纸篓」

新建 Quick Action

具体原理不多说,好奇的可以自行阅读上面的文章,我直接写我的操作流程。

首先,打开 Automator,新建一个「Quick Action」,我这里命名为「RemoveQuarantineSign」,按照下图所示配置

  1. 设置此 Quick Action 接收的「参数」为来源于任意软件的文件或文件夹
  2. 在左侧找到「Run Shell Script」拖动到右边
  3. 「Pass input」设置为「as arguments」
  4. 输入命令 xattr -d -r com.apple.quarantine $1

当然,你也可以下载 我做好的文件 并将其拷贝至 ~/Library/Services(可以在 Finder 中按 Command + Shift + G 跳转)文件夹下。

按照上面的设置完以后,右键点击软件,选择「Quick Actions」即会出现我们设置的「RemoveQuarantineSign」,点击运行稍等片刻即可(运行时电脑右上角的 Menu 会出现一个小齿轮图标,此图标消失即代表运行完毕)

同时,此 Quick Action 还会出现在 Finder 右侧边栏中

Launchbar 快速调用

当然,我们绝不仅仅满足于此,上面的操作以后我们的步骤并没有实质性的减少,我们追求的是「不需要打开应用程序文件夹」,因此这里使用 Launchbar 来快速调用。

请确保你的 Launchbar 的 Index 打开了「Workflow」,以后当你使用 Lauchbar 找到这个软件如果无法直接打开,只要再次调用 Launchbar 轻按 Tab 键后搜索找到「RemoveQuarantineSign」即可。

终极效率提升:一步完成「移动 + 移除权限 + 打开软件+弹出安装卷」

既然我们下载软件的目的是使用它,要手动完成「移动到应用程序文件夹」「移除相关权限」「打开软件」,常常还需要将安装卷弹出(通过 dmg 文件安装的话),那么为什么我们不直接一步完成呢?

打开 Automator,新建一个 Quick Action,命名为「InstallThisApplication」,和上述配置类似,不过将 Shell Script 内容改为

filename=$(basename $1)
dirname=$(dirname $1)

# 将软件拷贝到 Applications 目录下
cp -r $1 /Applications/$filename
# 移除「XXX 来源于未知开发者」的提示
xattr -d -r com.apple.quarantine /Applications/$filename
# 打开这个软件
open /Applications/$filename

# 弹出安装卷
if [[ $dirname == /Volumes/* ]] then
    cd ~
    diskutil unmount $dirname
fi

风险提示:如果你的应用程序文件夹下含有同名文件将会直接覆盖
风险提示:这个脚本的最后四行会判断文件是否在「外置硬盘」中,如果在的话会将硬盘弹出。此做法是为了 dmg 文件安装完毕后自动将安装卷弹出,一般情况下足够,但是对于一些直接将 .app 文件存储在外置硬盘(或一些网盘)中然后使用这个脚本安装则可能出现问题。

你也可以直接下载 这个文件 后复制到 ~/Library/Services 文件夹下使用。

以后再遇到需要安装软件的情况,直接利用 Launchbar 的 Instant Send 然后搜索找到「InstallThisApplication」运行,等待菜单中小齿轮图标消失后即完成了「将软件移动到应用程序文件夹下」+「移除了 XXX 来源于网络的提示」 + 「打开这个软件」+「弹出安装卷」四个操作。