0

为了安装我的 Windows 桌面应用程序,我使用 izpack 创建了一个安装程序,然后使用 winrun4j 从 exe 调用它,这也是 izpack 安装的一部分添加另一个 winrun4j 包装器,以便在安装后实际运行应用程序。

问题是win4runj.exe 需要使用正确的Java 类型才能工作,即如果exe 是64 位,则必须运行64 位jvm,如果exe 是32 位,则必须运行32 位jvm。这可能会让用户感到困惑,所以我打算利用 winrun4j 来使用嵌入式 jvm,然后提供两个下载

  • 小部件安装程序.exe(32 位)
  • widgetinstaller64.exe(64 位)

但我的困惑是,对于每次下载,我只想嵌入 jvm 一次,但由于我有两个 exe(安装程序和程序本身),所以无法解决如何执行此操作,可以这样做吗?

更新

如果我安装 JVM 两次(一次包含在使用 izpack 构建的 install.jar 中,一次添加到 zip 文件中以便 widgetinstaller.exe 可以使用),它是否可以工作。

  • widgetinstaller.exe 位于 c:\code\widget\installer
  • 从 Oracle 下载 32 位 jre
  • 安装到 c:\code\widget\32bitJVM
  • 编辑izpack.xml,添加<file src="C:/code/widget/JVM32bit" targetdir="$INSTALL_PATH"/>
  • 将安装程序 vm.location=32bitJVM/bin/client/JVM.dll 添加到 c:\code\widget\installer\widgetinstaller.ini
  • 将小部件本身 vm.location=../32bitJVM/bin/client/JVM.dll 添加到 c:\code\widget\widget.ini
  • 重建代码,并在 zip 文件中压缩包含 32bitJVM 以创建 widgetinstaller.zip(其中包含 32bitJVM、widgetinstaller.ini、widgetinstaller.exe、widgetinstaller.ico 和 install.jar)
  • 解压并双击widgetinstaller.exe进行安装

但我只想要一次 JVM,我知道我需要<file src="C:/code/widget/JVM32bit" targetdir="$INSTALL_PATH"/>从 izpack.xml 中删除,但是如何将我的 32bitJVM 复制到程序安装文件夹中

需要将相同的 JVM 保存到程序文件夹中。

似乎这必须在 izpack 本身之外完成?

编辑

解决方案是使用我可以使用 Izpack 5 安装文件中描述的 Izpack 松散包,而不是它是由 izpack 构建的 install.jar 的一部分

但是必须为路径设置什么非常令人困惑,文档错误地暗示您放入了相对链接http://izpack.org/documentation/installation-files.html#the-packs-element-packs

例子

izpack install.xml 在 C:\code\Widget\installer

<pack name="Base" loose="true" required="yes" preselected="yes">
   <description>JVM</description>
   <file src="C:\Code\Widget\JVM" targetdir="$INSTALL_PATH"/>
</pack>

打包时 izpack 安装应该有:

JVM
install.jar
setup.exe
4

1 回答 1

0

如果 JVM 嵌入在安装程序中,则程序无法使用它。同样,如果 JVM 嵌入在程序中,那么安装程序将无法使用它。

但是,您仍然可以只使用一个 JVM 来完成。这是通过将 JVM 复制到本地文件来完成的。

因此,当您使用 winrun4j 启动安装程序时,它将从嵌入式 JVM 启动,然后在安装结束时,需要将相同的 JVM 保存到程序文件夹中。

然后,您的程序 winrun4j exe 可以使用您保存到文件夹中的 JVM 来启动程序,您可以通过将 winrun4j 中的“vm.location”设置为保存的 JVM 的位置来执行此操作。

Process:
1) Run the installer exe with the required JVM
2) During the installation save the embedded JVM to a file
3) Once the instillation is complete the program exe can launch using the saved JVM
于 2012-08-27T23:34:45.833 回答