Java 我是否可以使用Izpack 5安装文件,而不将其作为Izpack构建的install.jar的一部分

Java 我是否可以使用Izpack 5安装文件,而不将其作为Izpack构建的install.jar的一部分,java,izpack,winrun4j,Java,Izpack,Winrun4j,My installation widget.zip zipfile包含以下内容: 32位Java install.jar widgetinstaller.exe widgetinstaller.ini widgetinstaller.ico 总结如下: 32位Java是从Oracle下载的32位JRE install.jar是由Izpack创建的安装程序 widgetinstaller.*由winrun4j创建,为安装程序提供exe包装 因此,通过这种设置,我可以安装我的应用程序,而无

My installation widget.zip zipfile包含以下内容:

  • 32位Java
  • install.jar
  • widgetinstaller.exe
  • widgetinstaller.ini
  • widgetinstaller.ico
总结如下:

  • 32位Java是从Oracle下载的32位JRE
  • install.jar是由Izpack创建的安装程序
  • widgetinstaller.*由winrun4j创建,为安装程序提供exe包装
因此,通过这种设置,我可以安装我的应用程序,而无需用户已经安装java运行时

但是一旦安装,实际应用程序也需要java运行时才能实际运行。因此,目前在izpack安装中包含了一个32bitJava副本,即它存在于install.jar中,并在安装时安装

但这意味着我有两个JVM副本,因为32位Java比我的实际应用程序大,所以我的下载量太大了


因此,如何在安装期间/之后将32bitJava文件夹复制到安装中,而不必将其包含在install.jar中?

将文件打包到自解压存档/zip中,并作为解压过程的一部分,将文件解压到您需要的位置

Wikipedia上有关于自解压归档的更多信息:

您想为JVM做一个“松散”的包。松散包不需要包含它安装的文件,因此它可以将文件从zip复制到适当的位置,而不是使用嵌入jar中的文件

<pack id="java" name="java" required="yes" preselected="yes" loose="true">
  ...
  <executable ...>
    <!-- something appropriate to install java -->
  </executable>
</pack>

...

与其被迫在install.jar中包含java安装,不如让install.jar安装您的程序,并在此处包含一个链接: ? 这是下载当前版本java的链接

要创建这样的链接,右键单击>新建>快捷方式,将链接粘贴到第一个对话框中,单击下一步,然后将其命名为“Java安装”。这将为您的软件包最多增加4KB,并且仍然允许您安装java(但是,用户必须手动单击此按钮)


我之所以使用浏览器重定向URL,是因为它根据java用户的计算机(操作系统和处理器位)来确定他们需要什么。

创建一个小型的安装后实用程序,将可执行文件复制到该位置如何?您可以在一个小shell脚本(或Windows上的批处理文件)中创建它,或者甚至是一个简单的C++实用工具,它只需将JVM复制到所需的位置。这样,在安装该实用程序后,您将触发安装后代码,然后将JVM复制到所需的位置。

这是与Izpack一起使用还是代替Izpack?请看这里:似乎有一些关于使用IzPackI执行此操作的说明。我不认为这实际上解决了我面临的问题。我将对自解压存档进行更多研究,以便为您提供一个示例。这种东西正是创建自解压档案的目的。:)谢谢simon,看起来这可能正是我想要的,如果我能让它工作并报告回来,我会考虑的。我还没有尝试过这个,但祈祷它能工作,所以奖励赏金。嗨,是的,谢谢你,它确实工作了。但是请注意,您必须将什么设置为文件src有点混淆,您需要将目标计算机上的文件夹复制到install.xml的相同相对位置,就像安装时install.jar的位置一样,但是,在install.xml中指定绝对路径,而不是install.jar。Windows上对32位/64位Java和32位/64位系统之间的相互作用有很多混淆,而且通常对Java桌面系统也有很多负面影响。我认为,如果他们所需要的一切都一次性打包,并且没有明确的Java参考,那么这是一种更整洁的用户体验。该链接会自动重定向到所需的Java版本,32位系统的32位Java版本,64位系统的64位Java版本。Java现在的安装比以前容易多了(我记得必须将所有源文件提取到program files文件夹中)install.jar首先需要安装一个JVM才能运行。链接指向Java安装,允许您运行install.jar我尝试过这个方法,但很难让它工作,然而,问题是,这将在安装程序之外完成,并且在安装过程中不会向用户提供反馈,因为JVM非常大,这可能会导致用户认为安装已挂起。如果您向用户提供一条非常简单的消息,指示安装程序正在工作,则不会。如果你仔细想想,这个问题的任何其他解决方案都会涉及到大量的复制操作,所以这是不可避免的。您应该能够在安装后实用程序中插入一行文字,如“这将需要几分钟…”,然后在每个单独的文件复制操作后添加
print.
或等效内容,以便用户在安装后看到源源不断的“…”。)