java - 在安装更新期间保留文件夹及其内容

标签 java install4j

我想到了一个解决方案,但不知道如何在 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/

相关文章:

java - 复合分配的自动(取消)装箱失败

java - 由于字符常量无效,Android 应用程序无法编译

java - Hadoop MAC OS 安装问题

java - 由于 PostgreSQL 数据库上的 "duplicate"索引,Liquibase 无法执行迁移

java - 如何将 ${Installer :sys. languageId} 分解为 language_country_variant?

每个用户具有单个实例的 Java 应用程序

java - 为什么 String、Integer 和其他包装类被认为是 HashMap 中的好键?

gradle - 在install4j中,如何通过gradle插件指定应用程序的版本?

java - 在 install4j : addInstallerEventListener throws NotSupportedInElevationException

java - Install4j 中所有屏幕的标准操作