Best practices für die Einstellungen zu speichern

Ich habe eine ziemlich große C++ - Anwendung (unter Windows, andere Plattformen geplant), die derzeit speichert alle Einstellungen (auch eine Art von Adressen in der Windows-registry.

Manchmal ist dies ungünstig, da die Benutzer Schwierigkeiten haben, ein ändern der Einträge in der registry. Ich würde gerne Einstellungen versioniert, also Einstellungen immer mit dem aktuellen code. Im moment haben wir version reg-Dateien, aber Sie sind nie sicher, wenn alle reg-Dateien Hinzugefügt wurden, die auf den zielmaschinen. Mit C# können Sie festlegen, default-Werte in app.config, aber nicht überschreiben die vorhandenen Einstellungen. Ich weiß nicht, ob so ein Mechanismus oder Bibliothek existiert für C++.

Möchte ich die folgenden "features":

  • Einstellungen können versioniert werden
  • Einfaches update auf den Ziel-Rechnern (kann durch den Benutzer)
  • Sicherzustellen, dass auf aktualisieren werden nur neue Einstellungen Hinzugefügt werden und keine vorhandenen Einstellungen mit Standardwerten überschrieben
  • Einfache änderung der Einstellungen für Benutzer
  • Gleichen workflow unter Win XP und Win 7

Soweit ich es sehe, gibt es 3 Möglichkeiten zum speichern von Einstellungen unter Windows:

  • Registry
  • Ini-Datei
  • XML-Datei

Nur eine Anwendung unserer suite nutzt Qt in dem moment, aber Boost zur Verfügung stehen würde.

Adressen, wir werden Sie in irgendeiner Art von XML-Adressbuch, sondern auch für die anderen Einstellungen sind wir nicht sicher, was ist die beste Praxis.

  • Ich würde vorschlagen, andere alternativen: YAML/JSon für Menschen lesbaren format, SQLite für einfache embedded. Bezüglich ini Dateien, die Sie interessieren könnten How to parse-ini-Datei mit Boost.
  • +1 für Boost / ini-Dateien, wenn Sie können KI, SS.
  • Wenn Sie mehrere Schichten von Einschlüssen, würde ich für die XML/JSON-Dateien. Ansonsten INI könnte die einfachste Lösung sein.
  • +1 für JSON oder .ini. Mit der Registrierung ist ein Wartungs-Albtraum.
  • danke für Eure inputs, aber was ist meine Anforderung #3?
InformationsquelleAutor Simon | 2012-06-25
Schreibe einen Kommentar