在install4j安装完成后启动Java Web Start应用程序

时间:2012-01-05 16:26:07

标签: java java-web-start install4j

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

单击install4j安装程序中的“完成”按钮后会发生什么:

  1. 安装程序窗口消失,Java WebStart启动(显示其启动)。
  2. 没有更多的事情发生(通常我的Java应用程序会从这里开始)。
  3. 通过查看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应用程序。

1 个答案:

答案 0 :(得分:0)

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

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