2011-12-15 2 views
1

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

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

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

Так мои вопросы:

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

ответ

1

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

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

context.isUpdateInstallation() 

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^