3

我需要重新启动 java GUI 应用程序以响应用户操作,其方式类似于 eclipse 在切换工作区时自行重新启动。

我们目前使用 install4j 启动器,所以我想知道如果我使用特定的返回码或类似的东西退出应用程序,启动器是否可以配置为保持运行并重新启动应用程序?

干杯

4

2 回答 2

6

这不是 install4j 中的功能。但是,您可以使用 java.lang.ProcessBuilder 再次启动启动器并调用 System.exit()。

如果启动器是单实例 GUI 启动器,您必须使用另一个可执行文件等待启动器关闭,然后重新启动原始可执行文件。这可以通过在其“启动”节点中包含“执行启动器”操作的自定义安装程序应用程序轻松完成。自定义安装程序应用程序通过带有参数的 API 启动

-q -wait 20

即它以无人值守模式(无 GUI)执行,并等待最多 20 秒以关闭所有已安装的启动器。要显示进度条,请添加

-splash "Restarting application"

到论点。启动自定义安装程序应用程序的代码如下所示:

import java.io.IOException;
import com.install4j.api.launcher.ApplicationLauncher;

try {
    ApplicationLauncher.launchApplication("ID", new String[] {
       "-q","-wait","20"
    }, false, null);
} catch (IOException e) {
    e.printStackTrace();
    //TODO handle invocation failure
}

其中 ID 必须替换为自定义安装程序应用程序的 ID。

于 2012-06-12T09:33:39.593 回答
0

确保配置可执行文件名称。

否则它只会静默失败:安装程序编译和launchApplication()调用不会引发任何错误。并且没有任何错误消息或日志文件可供查看,这让我花了一天的时间试错才能弄清楚。

在此处输入图像描述

此外,可以设置自定义 ID 以避免神秘的应用程序 ID:

      ApplicationLauncher.launchApplication("restarter", new String[] { "-q", "-wait", "20", "-splash", "Restarting..." }, /* blocking */ false, /* callback */ null);

在此处输入图像描述

于 2021-09-06T10:51:52.820 回答