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

install4j安装完成后启动Java Web Start应用程序,java,java-web-start,install4j,Java,Java Web Start,Install4j,我正在尝试在安装完成后启动install4j启动器,但它不起作用。不过,启动器作为“开始”菜单项可以正常工作。我有理由相信这是因为我的应用程序是通过JavaWebStart启动的(出于法律原因) 在我的install4j安装程序中单击“完成”按钮时会发生以下情况: 安装程序窗口消失,JavaWebStart启动(显示其启动) 不再发生任何事情(通常我的Java应用程序从这里开始) 通过查看Java日志,我可以看到WebStart实际上执行了我的Java应用程序,但它无法完全启动,因为文件C:\U

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

在我的install4j安装程序中单击“完成”按钮时会发生以下情况:

  • 安装程序窗口消失,JavaWebStart启动(显示其启动)
  • 不再发生任何事情(通常我的Java应用程序从这里开始)
  • 通过查看Java日志,我可以看到WebStart实际上执行了我的Java应用程序,但它无法完全启动,因为文件C:\Users\UserName\AppData\Local\Temp\e4j2E4E.tmp\u dir\jre\lib\ext\dnsns.jar不再存在。这个目录似乎是install4j临时放置它需要运行的JRE的地方

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

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

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

    提前感谢您的建议

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

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


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

    您的应用程序是如何启动或执行的?(目前正在做的事情失败了)为什么不让Install4J退出循环,并在整个安装/启动过程中使用JWS?cdeszaq:Install4J启动器启动我的Java类,该类启动javaws二进制文件,启动我的主Java应用程序。我试过“执行启动器”和“运行可执行文件”。顺便说一句,我从未明确设置或获得JRE主页。在install4j中,我将在何处使用sys.preferredJre?我找不到任何设置JRE的参数。问题是,临时JRE是如何进入web start的?install4j没有web start功能,因此您必须在某个时候显式地调用start web start。Ingo:好的,install4j启动器调用我的一个Java类,基本上是这样做的:Runtime.getRuntime().exec(新字符串[]{“jre/bin/javaws.exe”,新文件(“myAppsWebStartConfig.jnlp”).getAbsolutePath(),null);“jre/bin”不好,因为它从工作目录开始,将使用临时jre。在这种情况下,您应该使用System.getProperty(“java.home”),因为install4j启动器将已经使用安装的JRE。