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

Install4j 如何从Java应用程序中指定更新程序目录?,install4j,Install4j,我正在尝试在没有版本检查的情况下使用更新程序来关闭调用启动器。我在代码中包含了以下内容以启动更新程序: ApplicationLauncher.launchApplication("368", null, false, null); 我在执行这一行时遇到一个错误,它找不到i4jparams.conf文件。它显然是在与启动器相同的目录中查找该文件,但该文件实际上位于.install4j(默认)子目录中。更新程序应用程序也在此目录中 当我直接调用更新程序时,它正在工作: Process proce

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

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

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

Process process = new ProcessBuilder(".\\.install4j\\updater.exe").start();
不幸的是,这种方法不允许更新程序在忙于安装新应用程序时关闭调用启动器

我显然需要告诉
ApplicationLauncher.launchApplication
.launch4j
目录中查找更新程序,但我不确定如何执行此操作

它显然是在与启动器相同的目录中查找文件`


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

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

谢谢,你的回答为我指明了正确的方向。我不得不从导出的Maven库目录中排除install4j-runtime-6.1.5.jar文件。我在Install4j中更改了文件分发树定义,以排除该特定JAR文件。在那次改变之后,它现在工作得很好。@Keplerian,你是如何让它工作的?有一个有效的例子吗?如果我删除运行时文件,那么它将显示ClassNotFoundError如果您从IDE启动应用程序,那么您必须将i4jruntime.jar添加到类路径。构建安装程序时,不得将i4jruntime,jar添加到类路径。@Marckaraujo,我没有从IDE中删除它。我在install4j配置文件中的库导出目录中添加了以下排除项:@Marckaraujo,我发布了另一个答案来说明我是如何从GUI中完成的。