我最近停止在install4j安装程序中使用winzip自解压程序,支持将所有资源打包到install4j安装程序中。我试图解决的问题是winzip不支持大于2GB的安装程序。 7zip支持最大4GB的安装程序,但install4j可以为我们捆绑我们的资源,所以它似乎是正确的方向去除对winzip / 7zip自提取器的不必要的依赖。
使用相同的模板文件来捆绑我的资源似乎适用于较小的(200mb)exe,而2.2gb的exe在“提取文件...”步骤中给出了错误“在尝试时出现错误读取源文件:0.dat'。
我尝试比较在我的工作安装程序中使用Process Monitor执行的操作与失败的安装程序。我设法找到差异发生的地方,在失败的安装程序中它尝试访问0.dat并找不到它。在工作安装程序中,它不会尝试访问0.dat,只是打开对bundle exe的读锁定。就在此之前的两种情况下,它都运行来自i4jruntime.jar的代码,因此代码中的某些内容导致我的安装程序根据其内容执行不同的操作。我唯一能想到的是由于文件大小,我的安装程序无法将其资源提取到用户目录中。
我在崩溃点检查了我的临时目录中的用户目录,看来我所包含的2.2gb压缩文件就在那里。
在制作了几个不同大小的不同安装程序后,一旦超过2gb安装程序exe大小,它似乎始终如一。
答案 0 :(得分:0)
而不是将我的安装文件包含为'自定义代码&资源',我已经使用Install4j'分发树'包含它们。这解决了与上述崩溃有关的问题。
此外,它看起来像在Install4j 6中,实际上对于安装程序大小,实际上存在4gb的硬限制。在Install4j 5中,没有限制,我尝试过的一些更大规模的安装程序(大于5GB)实际上会导致进程耗尽内存并在完成之前崩溃。