0

我正在尝试在安装完成后启动 install4j Launcher,但它不起作用。启动器虽然可以作为开始菜单项工作。我有理由相信这是因为我的应用程序是通过 Java Web Start 启动的(必须是出于法律原因)。

在我的 install4j 安装程序中单击完成按钮时会发生什么:

  1. 安装程序窗口消失,Java WebStart 启动(显示其启动画面)。
  2. 什么都没有发生(通常我的 Java 应用程序会从这里开始)。

通过查看 Java 日志,我可以看到 WebStart 实际上执行了我的 Java 应用程序,但它无法完全启动,因为文件 C:\Users\UserName\AppData\Local\Temp\e4j2E4E.tmp_dir\jre\lib\ext \dnsns.jar 不再存在。这个目录似乎是 install4j 临时放置它需要运行的 JRE 的地方。

通过在文件管理器中按 F5,我可以看到在执行 WebStart 后 JRE 已被删除(我猜是 install4j)。这可以解释为什么我的 Java 应用程序会失败。

运行开始菜单启动器时(安装后手动),一切正常,因为我的 Java 应用程序正在使用与其捆绑的 JRE(在它自己的子文件夹中)。

如何防止 install4j 删除临时 JRE,或强制 WebStart 使用另一个(捆绑的)JRE 执行我的 Java 应用程序?

在此先感谢您的任何建议!

==EDIT== 这就是我的应用程序的启动方式: install4j Launcher 启动了我的一个 Java 类,它启动了一个 javaws 二进制文件,它启动了我的主要 Java 应用程序。

4

1 回答 1

0

我假设您以“运行可执行文件”操作启动 web start。你System.getProperty("java.home")是用来获取当前JRE的位置的吗?这将产生在安装程序退出后被删除的临时提取的 JRE。

您应该改用sys.preferredJre安装程序变量。在文本字段中,输入${installer:sys.preferredJre},在脚本中使用context.getVariable("sys.preferredJre"). 在“安装文件”操作运行后,该变量将包含已安装 JRE 包的位置。

于 2012-01-08T15:08:14.757 回答