Настраиваемое действие Install4j для слияния нового и старого файла свойств - PullRequest
1 голос
/ 15 декабря 2011

В install4j мы можем установить политику перезаписи для файла «Если новее, иначе спросить» или «Всегда спрашивать» и т. Д.

Я хочу обновить приложение с конфигурацией .propertiesфайл, который могут редактировать конечные пользователи.В более новых версиях будут добавлены некоторые свойства, но мы не хотим обновлять настроенные существующие свойства.

Поэтому я бы установил политику перезаписи на «никогда» и создал бы настраиваемое действие для объединения новыхСвойства в. Я мог бы использовать «Добавить текст в файл», но я хотел бы сделать это более динамически, сравнивая старый и новый файл, и добавлять только те свойства, ключи которых не существуют в старом файле.

Итак, мои вопросы:

  1. Могу ли я определить, вызывается ли действие во время установки или обновления?
  2. Как получить содержимое нового файла?если он не перезаписал старый файл?

1 Ответ

1 голос
/ 15 декабря 2011

Могу ли я определить, вызывается ли действие во время установки или обновления?

Да, вы можете использовать

context.isUpdateInstallation()

в выражениях условий или других сценариях.

Как я могу получить содержимое нового файла, если он не перезаписал старый файл?

Если файл не установлен, содержимое недоступно. Я бы предложил следующее:

  1. Установить файл свойств по другому пути
  2. В случае новой установки скопируйте его в целевой путь с помощью действия «Копировать файлы»
  3. В случае установки обновления объедините файлы свойств
  4. Во всех случаях удаляйте файл шаблона из шага 1 с помощью действия «Удалить файлы»
...