Лучшие практики для хранение настроек

У меня есть довольно большое приложение на C++ (на Windows, других платформ не планируется), которое в настоящее время хранит все настройки (даже какие-то адреса) в реестре Windows.

Иногда это неудобно, поскольку у пользователей возникают трудности с изменением записей в реестре. Я хотел бы иметь версии настроек, чтобы настройки всегда соответствовали текущему коду. На данный момент мы версионируем reg-файлы, но никогда нельзя быть уверенным, что все reg-файлы были добавлены на целевые машины. С помощью C# вы можете определить значения по умолчанию в app.config, но не перезаписывать существующие настройки. Я не знаю, существует ли такой механизм или библиотека для C++.

Я хотел бы иметь следующие «функции»:

  • Настройки могут иметь версии
  • Простое обновление на целевых машинах (может быть выполнено пользователем)
  • Убедитесь, что при обновлении добавляются только новые настройки, а не существующие настройки перезаписываются значениями по умолчанию
  • Простое изменение настроек для пользователя
  • Тот же рабочий процесс под Win XP и Win 7

Насколько я понимаю, есть 3 возможности сохранить настройки в Windows:

  • Реестр
  • Ini-файл
  • XML-файл

Только одно приложение из нашего пакета использует Qt на данный момент, но Boost будет доступен.

Что касается адресов, мы поместим их в какую-то адресную книгу XML, но что касается других настроек, мы не уверены, как лучше всего это сделать.

11
задан Cœur 9 April 2017 в 09:58
поделиться