macOS Automator工作流应用如何为额外内容签名或取消代码签名
报错核心原因
你手动修改了Automator导出的app包的Contents目录,破坏了原有代码签名的完整性,同时新增的文件权限不满足签名校验要求,所以保存时报错。
解决方案
方案1:将额外资源嵌入Automator工作流(优先选择)
这个方法可以从根源避免覆盖问题和签名报错,不需要手动修改app包:
- 打开你的Automator工作流,点击顶部菜单栏「显示」→ 「显示工作流资源」
- 将需要打包的
myshellscript.sh等额外文件直接拖入弹出的资源面板 - 工作流中需要调用该资源时,通过工作流路径定位即可,示例shell代码:
# 自动获取当前工作流app的资源目录路径 RESOURCE_DIR="$(dirname "$0")/Contents/Resources" # 调用你的脚本 sh "$RESOURCE_DIR/myshellscript.sh"
- 后续每次保存/修改工作流,Automator都会自动将资源打包进app、自动完成签名,不会出现报错也不会覆盖你的额外文件。
方案2:手动对修改后的app重签名
如果你确实需要手动修改app的Contents目录内容,每次修改后执行以下操作修复签名即可:
- 先修复新增文件的权限,解决报错中的Permission denied问题:
chmod 755 /Applications/MyAutomation.app/Contents/myshellscript.sh - 执行强制深度重签名命令:
codesign --force --deep --sign - /Applications/MyAutomation.app - 后续修改工作流导出新app后,将你备份的额外文件拷入Contents目录,重新执行上述命令即可。
方案3:关闭签名校验(不推荐)
该方法仅能解决app运行时的签名校验提示,无法解决Automator保存工作流时的报错,仅作参考:
- 执行命令移除app的隔离属性,跳过系统运行时校验:
xattr -rd com.apple.quarantine /Applications/MyAutomation.app
内容的提问来源于stack exchange,提问作者neu242
相关产品推荐
相关产品推荐

