我和我的队友,在向客户提交的应用程序中有更新或错误修复的问题,每次我们需要修复错误时,我们必须前往客户的公司,以便做出新的修改。 我们建议创建一个可自动应用补丁的可执行更新。解决方案设置为使用install4j创建。
更详细地说,用户必须指定war文件的位置,安装程序将提取其内容,添加/替换所需文件,然后重新存档。
我想首先知道该解决方案是否有替代方案。 其次,我尝试运行模拟,我将向安装程序指定一个zip文件的位置,然后将其解压缩到一个临时文件夹,并用install4j的Files步骤中添加的内容覆盖它,最后重新压缩文件,但什么也没发生。
以下是我在安装程序配置过程中所做的:
zipPath
的变量中返回zip文件的路径。Zip file : context.getVariable("zipPath");
并指定临时目录的路径。
Destination directory : tempDir/temp
Destination directory : tempDir/temp
Source files or directories : tempDir/needed files
其中所需文件是安装程序将用于复制分发树文件的文件夹。
ZIP file : tempDir/temp/Zipfile.zip
Source files or directories : tempDir/needed files
我还不知道如何替换我希望利用文件选择器返回的变量的zip文件来执行此操作,但无论如何我查找了新创建的文件,我似乎并不是在我的电脑上的任何地方找到它们。
我的配置有问题吗?或者我跳过了一个步骤?是否有一个很好的文档,或者我正在尝试做的直接示例,因为我发现官方示例和文档令人困惑?
谢谢。
答案 0 :(得分:1)
您的错误是您将zip文件名设置为Java代码,该代码仅适用于脚本,而不适用于文本字段。文本字段中的变量替换语法的工作方式如下:
${installer:zipPath}
通常,要查看发生的情况,请查看安装目录中的.install4j/installation.log
文件。如果项目中没有“安装文件”操作,则日志文件将位于临时目录中,但会在安装程序结束时删除。
您可以添加参数
-Dinstall4j.alternativeLogfile=[path to log file]
将日志文件写入任何可写路径,并确保不删除它。
在您的方案中,从模板中删除“安装文件”操作是有意义的,而根本不使用分发树。而是将新文件压缩到名为patch.zip
的文件中,并将其添加到“Installer->自定义代码和资源”选项卡中。然后您需要执行以下操作:
“提取文件${installer:sys.resourceDir}/patch.zip
的ZIP文件”操作到某个临时目录
将文件${installer:zipPath}
的“提取ZIP文件”操作提取到同一个临时目录
使用与源相同的临时目录为文件${installer:zipPath}
创建“ZIP文件”操作
更新2018-01-12
从install4j 6.1开始,有一个“修改ZIP文件”操作,可以直接修改ZIP文件,因此不再需要上述操作序列。