我有一个JPackaged Javascript应用程序,可以读取github repo的版本来检索更新.当它发现一个更新时,它会下载新的. msi文件并运行它.但是,如果我运行MSI而没有完全退出应用程序(例如Platform.exit()),安装程序将无法正常工作,因为有一个应用程序在它试图安装到的目录中运行.我被迫使用System.exit()关闭应用程序.

更进一步的问题是,我试过使用Runtime.exec()ProcessBuilder,但当应用程序通过System.exit()关闭时,这两个程序都会关闭.

How do I run a task/process (msiexec) from a Java app, and then close the Java app with 100, without ending the external process?

推荐答案

Slaw的 comments :

a regression in version 21.0.2个,退出Java进程也会杀死任何Forking 的子进程.看起来它在版本23中得到了修复,尽管有一些到22.0.1和21.0.4—Oracle的后台端口(其他厂商可能也有21.0.4的后台端口).当然,这些版本还没有发布.你可以try 一个旧版本的jpackage.

I confirmed that the issue resided in jpackage itself, and rolling back to 17.0.7 fixed my problem.

Java相关问答推荐

Spring bootstrap @ Asmat注释与@ Routed

在Spring Boot中测试时出现SQL语法错误

找到允许的最大底片

Java在模块化jar文件中找不到类,但是javap可以

为什么我们仍然需要实现noArgsConstructor如果Java默认提供一个非参数化的构造函数?''

Select 按位运算序列

确定Java中Math.Ranb()输出的上限

我需要生成一个文件来整合每个特性执行的所有JSON结果

Java 21虚拟线程执行器的性能比池化操作系统线程的执行器差?

第二次按下按钮后,我需要将按钮恢复到其原始状态,以便它可以再次工作

Spring @Value default无法计算表达式

Spring和可编辑";where";@Query

在Java中将int[]矩阵添加到ArrayList中,但出现错误

Quarkus:运行时出现EnumConstantNotPresentException

在线程Java中调用Interrupt()之后调用Join()

在Eclipse中可以使用外部字体吗?

我该如何为我的类编写getter和setter方法?

在Spring Boot中使用咖啡因进行缓存-根据输出控制缓存

HBox内部的左对齐按钮(如果重要的话,在页码内)

java.exe如何执行java源代码?