我正在签署OSX的install4j安装程序,但是OSX拒绝了它。系统日志仅报告它被拒绝,并且spctl仅报告它被拒绝,没有任何解释。我怎样才能确定它被拒绝的原因?
答案 0 :(得分:4)
我认为您正在谈论Gatekeeper不允许您的应用在下载后运行? Gatekeeper的规则不是基于拒绝应用的规则列表,而是基于接受应用的可能规则列表,以及您的应用不匹配任何或那些规则。这使得很难记录,例如为什么你的应用被拒绝超过"它没有匹配任何允许规则"。现在,如果你知道哪个"允许"您希望应用它的规则,您可以尝试根据它进行调试,但Gatekeeper本身并不知道这一点,因此没有多大帮助。
我假设你希望你的应用程序被识别出来的开发者"规则?如果是这样,有几个测试来寻找明显的问题:首先,运行codesign -vv --deep-verify /path/to/yourapp.app
,并确保它打印"在磁盘上有效"和"满足其指定要求" (并且没有任何错误) - 如果没有,签名或应用内容出现问题。
其次,运行codesign -dvv /path/to/yourapp.app
,并确保它列出的数据包括:
Authority=Developer ID Application: [Your name/company here]
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Sealed Resources version=2 rules=[something] files=[something]
如果权限列表与此不同,则使用错误的证书对其进行签名。如果密封资源版本为1或未列出,则使用旧版本的OS X对其进行签名,并且最新版本将拒绝签名格式。