我遇到了与macOS相关的问题。 为了解释这种情况,我们尝试更新旧的自动更新系统,该系统刚刚替换旧的jar文件,新代码将在下载后自动打开.pkg安装程序文件。 (在这个阶段,我们无法使用Sparkle或其他框架更新所有应用程序的唯一方法。)
.pkg文件使用“开发者ID安装程序ID”证书进行签名。 .app文件使用“开发者ID应用程序ID”证书进行签名。
但是... 通过双击启动应用程序,或者通过“打开”命令从终端启动应用程序时,当涉及到我们尝试通过ProcessBuilder和“open”命令启动pkg的代码部分时,没有任何反应,并且Apple控制台应用程序表示发生了安全问题(-67062),仅此而已。
但是,当通过JavaApplicationStub确定的java命令(从Apple控制台应用程序日志粘贴的副本)直接启动相同的应用程序时,它可以正常工作,并且pkg打开正常。
我们可以做些什么来克服这个问题?
更新 我还发现命令'spctl -a -v'返回:
MyApp.pkg: rejected
source=no usable signature
除非它与参数“--type install”一起使用,它给出了:
MyApp.pkg: accepted
source=Developer ID
我不知道这是否重要或是否是预期的结果,但它可能会有所帮助
更新2:
在High Sierra日志中进一步挖掘(无法通过控制台访问,尽管它似乎提供了......),使用以下命令:
log stream --debug
我能够看到问题来自位于JRE“lib”文件夹中的jspawnhelper文件,该文件未经Oracle签名... 顺便说一句,这意味着我们必须包含一个与Java应用程序捆绑在一起的JRE,所有可执行文件都使用“开发者ID应用程序”证书进行了正确签名。
但......还是没有解决...... 再次使用“open”命令会发生另一个错误,但它会更进一步。 现在我有以下内容,由Apple内置的Installer.app抛出:
No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting.
仍然不知道,因为我的包已经包含Info.plist ...