为了安装我的 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