问题描述
我一直在尝试让我的 CLI 工具在不显示任何 GateKeeper UI 的情况下运行,这让用户的体验更加烦人。
解决方法
我终于意识到我错过了什么。我需要在二进制文件中嵌入一个 Info.plist,它由 .pkg
安装程序安装。这是因为 macOS GateKeeper 在启动二进制文件时会寻找它。我必须做 3 件事:
- 在项目中的某处创建一个
Info.plist
(我推荐项目的根目录),它至少有 3 个项目,CFBundleIdentifier、CFBundleName 和 CFBundleShortVersionString。我从 Howard Oakley's blog post 获得了这个要求
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.example.example-cli-tool</string>
<key>CFBundleName</key>
<string>Example CLI Tool</string>
<key>CFBundleShortVersionString</key>
<string>1</string>
</dict>
</plist>
- 在构建设置中引用此
Info.plist
:将 Info.plist 文件设置为路径,例如$(PROJECT_DIR)/Info.plist
- 在构建设置中,我必须将
Create Info.plist Section in Binary
设置为是。
然后在我归档项目后,构建包安装程序,将其下载到我的机器上,安装了该包,我没有权限被拒绝/GateKeeper 警告。
我发布了构建和交付 Xcode CLI 项目的分步操作,包括公证 here。