关于MacOS复制应用的正确方法


问题描述

在 MacOS 上,有时候我们需要使用脚本复制特定的应用。MacOS 会严格检验应用完整性, 因此在复制的时候需要特别注意参数。

Bash

使用 Bash 复制的时候需要注意,参数用 -R 而不是 -r

cp -R /Applications/XXX.app ./XXX.app

python

我们通常使用 shutil 来复制文件夹,注意 symlinks=True

shutil.copytree('/Applications/XXX.app', './XXX.app', symlinks=True)

总结

其实重点就在于 symlinks,在复制的时候需要把 symlinks 原原本本的复制过去, 否则 Mac 验证不通过就会导致应用无法启动。