我想到了一个解决方案,但不知道如何在 install4j 中本地完成此任务。
我有一个包含工件存储库的文件夹(类似于 Maven 的 .m2 存储库文件夹架构),其中文件名是在 Maven 编译期间唯一生成的(时间戳)。
例如./install-dir/artifacts/app-core/jar/1.2-t20160419183129/app-core-1.2-t20160419183129.jar
运行安装程序并选中“更新现有安装”后,install4j 将附加这些文件并保留该工件的旧时间戳版本。我知道这不是一个错误并且正在按预期工作。所以最终结果将如下所示:
./install-dir/artifacts/app-core/jar/1.2-t20160415154633/app-core-1.2-t20160415154633.jar
./install-dir/artifacts/app-core/jar/1.2-t20160419183129/app-core-1.2-t20160419183129.jar
除了编译期间生成的时间戳之外,这些文件中没有任何更改。那么,我可以在 install4j 中使用任何方法来验证上述组件是否比安装程序对应的组件更新。它必须忽略时间戳,只考虑版本号和 md5 校验和。
现在,我将完全删除 artifacts
文件夹并将其替换为安装程序版本。然而,这是一种激进的方法,我希望放弃这种方法。
最佳答案
Right now, I am completely removing the artifacts folder and replacing it with the installers version. However, that is an aggressive approach that I hope to migrate away from.
我会坚持这个策略。如果新版本中删除了 JRE 文件怎么办?如果您只匹配不带时间戳的更新,旧的 JAR 文件将保留在安装中和类路径中。
否则,install4j(自 6.1 起)中没有任何功能允许您以这种方式执行更新。
关于java - 在安装更新期间保留文件夹及其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36727438/