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

发布于 2024-12-21 07:44:06 字数 335 浏览 2 评论 0原文

在 install4j 中,我们可以为文件设置覆盖策略“如果更新,否则询问”或“始终询问”等。

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

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

所以我的问题是:

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

In install4j, we can set the Overwrite policy for a file "If newer, otherwise ask", or "Always ask", etc..

I want to upgrade an application which has a .properties configuration file that end users can edit. In newer versions, some properties will be added, but we don't want to update customized existing properties.

So I'd set the Overwrite policy to "never", and create a custom action to merge the new properties in. I could use the "Append text to a file", but I'd like to do it more dynamically, by comparing the old and the new file, and only append those properties whose keys do not exist in the old file.

So my questions:

  1. Can I detect if the action is called during an install or an upgrade?
  2. How can I get the content of the new file if it didn't overwrite the old file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

栖迟 2024-12-28 07:44:06

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

使用

context.isUpdateInstallation()

是的,您可以在条件表达式或其他脚本中

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

如果未安装文件,则无法访问其内容。我建议执行以下操作:

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

Can I detect if the action is called during an install or an upgrade?

Yes, you can use

context.isUpdateInstallation()

in condition expressions or other scripts.

How can I get the content of the new file if it didn't overwrite the old file?

If a file is not installed, the content is not accessible. I would suggest the following:

  1. Install the properties file to a different path
  2. In the case of a new installation, copy it to the target path with a "Copy files" action
  3. In the case of the upgrade installation, merge the properties files
  4. In all cases, delete the template file from step 1 with a "Delete files" action
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文