【发布时间】:2012-08-22 01:34:57
【问题描述】:
为了安装我的 Windows 桌面应用程序,我使用 izpack 创建了一个安装程序,然后使用 winrun4j 从 exe 中调用它,此外,在 izpack 安装过程中添加另一个 winrun4j 包装器,以便在安装后实际运行应用程序。
问题在于,win4runj.exe 需要使用正确的 Java 类型才能运行,即如果 exe 是 64 位,则必须运行 64 位 jvm,如果 exe 是 32 位,则必须运行 32 位 jvm。这可能会让用户感到困惑,所以我打算利用 winrun4j 来使用嵌入式 jvm,然后提供两个下载
- widgetinstaller.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,我知道我需要从izpack.xml中删除<file src="C:/code/widget/JVM32bit" targetdir="$INSTALL_PATH"/>,但是我如何将我的32bitJVM复制到程序安装文件夹中
需要将同一个 JVM 保存到程序文件夹中。
似乎这必须在 izpack 本身之外完成?
编辑
解决方案是使用 Can I install a file using Izpack 5 without it being part of the install.jar built by izpack 中描述的 Izpack 散装包
但是必须为路径设置的内容非常令人困惑,文档错误地暗示您输入了相对链接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
【问题讨论】: