在 macOS 系统上,从网络下载的可执行文件会被 Apple 的安全机制阻止运行,包括:
安装脚本包含以下自动处理步骤:
移除隔离属性
xattr -d com.apple.quarantine /path/to/msdfgen
清除所有扩展属性
xattr -c /path/to/msdfgen
应用临时代码签名
codesign --force --deep --sign - /path/to/msdfgen
设置权限
chmod +x /path/to/msdfgen
验证测试:测试二进制文件是否可正常运行
如果自动修复失败,脚本会优雅处理错误并提供详细的手动解决指导。
如果自动处理失败或遇到安全警告,可以尝试以下方法:
# 添加到 Gatekeeper 允许列表
sudo spctl --add /path/to/bin/darwin_arm64/msdfgen.osx
# 或者允许特定开发者的所有应用
sudo spctl --add --label "msdfgen" /path/to/bin/darwin_arm64/msdfgen.osx
# 禁用 Gatekeeper
sudo spctl --master-disable
# 运行程序后记得重新启用
sudo spctl --master-enable
如果你有开发者证书:
codesign --force --sign "Your Developer ID" /path/to/msdfgen
xattr /path/to/bin/darwin_arm64/msdfgen.osx
codesign -dv /path/to/bin/darwin_arm64/msdfgen.osx
spctl -a /path/to/bin/darwin_arm64/msdfgen.osx
xattr -c /path/to/msdfgen
chmod +x /path/to/bin/darwin_arm64/msdfgen.osx
xcode-select --install
,或跳过代码签名,使用其他方法查看系统日志:
log show --predicate 'eventMessage contains "msdfgen"' --last 1h
检查 Gatekeeper 策略:
spctl --status
重置 LaunchServices 数据库:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
SKIP_MACOS_SECURITY=1 npm install
SKIP_MSDFGEN_INSTALL=1 npm install
在企业环境中,IT 管理员可能需要:
预批准应用程序:
sudo spctl --add --label "msdfgen" /Applications/msdfgen
使用企业证书签名:
codesign --force --sign "Developer ID Application: Your Company" msdfgen
这种解决方案确保了 msdf-bmfont-xml 包能够在 macOS 上无缝工作,同时保持系统安全性。