我正在尝试在安装完成后启动install4j Launcher,但它不起作用。 Launcher可以作为开始菜单项正常工作。我有理由相信这是因为我的应用程序是通过Java Web Start启动的(必须出于法律原因)。
单击install4j安装程序中的“完成”按钮后会发生什么:
通过查看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应用程序。
答案 0 :(得分:0)
我假设您使用“运行可执行文件”操作启动Web启动。您是否使用System.getProperty("java.home")
获取当前JRE的位置?这将产生在安装程序退出后删除的临时提取的JRE。
您应该使用sys.preferredJre
安装程序变量。在文本字段中,输入${installer:sys.preferredJre}
,在脚本中使用context.getVariable("sys.preferredJre")
。运行“安装文件”操作后,该变量将包含已安装的JRE包的位置。