Install4j自定义操作以合并新旧属性文件

时间:2011-12-15 15:57:31

标签: install4j

在install4j中,我们可以为文件设置覆盖策略“如果更新,请求”或“总是询问”等。

我想升级具有最终用户可以编辑的.properties配置文件的应用程序。在较新的版本中,将添加一些属性,但我们不希望更新自定义的现有属性。

所以我将Overwrite策略设置为“never”,并创建一个自定义操作来合并新属性。我可以使用“将文本附加到文件”,但我想更动态地执行,通过比较旧文件和新文件,只附加那些旧文件中不存在密钥的属性。

所以我的问题:

  1. 我可以检测在安装或升级过程中是否调用了该操作吗?
  2. 如果新文件没有覆盖旧文件,我如何获取新文件的内容?

1 个答案:

答案 0 :(得分:1)

  

我可以检测在安装或升级期间是否调用了该操作吗?

是的,您可以使用

context.isUpdateInstallation()

在条件表达式或其他脚本中。

  

如果新文件没有覆盖旧文件,我如何获取新文件的内容?

如果未安装文件,则无法访问该内容。我建议如下:

  1. 将属性文件安装到其他路径
  2. 如果是新安装,请使用“复制文件”操作将其复制到目标路径
  3. 如果是升级安装,请合并属性文件
  4. 在所有情况下,使用“删除文件”操作
  5. 删除步骤1中的模板文件