【问题标题】:Launching a Java Web Start application upon install4j installation finishinstall4j 安装完成后启动 Java Web Start 应用程序
【发布时间】:2012-01-05 16:26:07
【问题描述】:

我正在尝试在安装完成后启动 install4j 启动器,但它不起作用。启动器虽然可以作为开始菜单项工作。我有理由相信这是因为我的应用程序是通过 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,我可以看到 JRE 在 WebStart 执行后被删除(我猜是 install4j)。这可以解释为什么我的 Java 应用程序会失败。

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

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

提前感谢您的任何建议!

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

【问题讨论】:

  • 您的应用程序是如何启动或执行的? (目前正在做的事情失败了)
  • 为什么不将 Install4J 排除在循环之外并在整个安装/启动过程中使用 JWS?
  • cdeszaq:一个 install4j 启动器启动我的一个 Java 类,它启动一个 javaws 二进制文件,它启动我的主要 Java 应用程序。

标签: java java-web-start install4j


【解决方案1】:

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

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

【讨论】:

  • 我已经尝试过“执行启动器”和“运行可执行文件”。 AFAIK,我从未明确设置或获取 JRE 主页。我会在 install4j 的哪个位置使用 sys.preferredJre?我找不到任何设置 JRE 的参数。
  • 真正的问题是,临时 JRE 是如何进入 Web 启动的? install4j 没有 web start 功能,所以你必须在某个时候显式调用 start web start。
  • Ingo:好的,install4j 启动器调用我的一个 Java 类,它基本上是这样做的: Runtime.getRuntime().exec( new String[] { "jre/bin/javaws.exe", new文件(“myAppsWebStartConfig.jnlp”).getAbsolutePath()},空);
  • "jre/bin" 不好,因为它从工作目录开始,并将使用临时 JRE。在这种情况下,您应该使用 System.getProperty("java.home"),因为 install4j 启动器已经使用了已安装的 JRE。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2012-10-06
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多