如何从 Java 应用程序指定更新程序目录?

How to specify the updater directory from a Java application?

我正在尝试使用不带版本检查的更新程序来关闭调用启动器。我在我的代码中包含以下内容以启动更新程序:

ApplicationLauncher.launchApplication("368", null, false, null);

我在执行此行时遇到错误,找不到 i4jparams.conf 文件。它显然是在与启动器相同的目录中查找文件,但该文件实际上位于 .install4j(默认)子目录中。更新应用程序也在这个目录中。

当我直接调用更新程序时它正在工作:

Process process = new ProcessBuilder(".\.install4j\updater.exe").start();

不幸的是,这种方法不允许更新程序在忙于安装新应用程序时关闭调用启动器。

我显然需要告诉 ApplicationLauncher.launchApplication.launch4j 目录中查找更新程序,但我不确定该怎么做。

It is obviously looking for the file in the same directory as the launcher`

不,事实并非如此。实际机制是使用带有运行时 类 的 JAR 文件所在的目录。如果您自己将 i4jruntime.jar 放入类路径,则它可能使用了错误的目录。

如果您想从 GUI 中排除 Install4j 运行时库,我是这样做的: