带有打开命令的ProcessBuilder在OSX

时间:2018-05-25 13:05:41

标签: java macos processbuilder auto-update

我遇到了与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 ...

0 个答案:

没有答案