Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#9

AW: In welches Verzeichnis Benutzerdaten speichern?

  Alt 20. Okt 2015, 20:49
Unter Windows kann man einfach die Umgebungsvariablen benutzen.
Das sollte man eher nicht, genau wie der Zugriff auf die Registry für diesen Zweck Unsinn ist.

Zitat:
Delphi-Quellcode:
// System.SysUtils.GetEnvironmentVariable
GetEnvironmentVariable('ALLUSERSPROFILE') // C:\ProgramData
GetEnvironmentVariable('APPDATA') // C:\Users\<NAME>\AppData\Roaming
GetEnvironmentVariable('LOCALAPPDATA') // C:\Users\<NAME>\AppData\Local
Für all diese Verzeichnisse gibt's entsprechende CSIDLs, die man in den SHGet* Funktionen einsetzen kann.

- Wenn es sich um Dateien handelt, die für den Benutzer wichtig sind, z.B. Konfigurationsdateien mit seinen persönlichen Einstellungen, speichere ich sie im Dokumentenpfad (z.B. C:\Users\USERNAME\Documents\MEIN_APP_NAME\
Eine Speicherung dort empfinde ich als frech. Warum? Documents ist MEIN Verzeichnis für MEINE Dokumente, nicht für den Krempel, den Programme meinen da ablegen zu müssen. Gerade Spiele tun sich hier als sehr unrühmlich hervor, weil die teilweise mehrere Gigabytes an Savegames & Co dort ablegen. In Documents gehören Dokumente, keine Savegames, keine Anwendungsdaten und ähnliches Zeug.

Sowas hindert mich auch daran, meine Daten von Anwendungsdaten (die der Programme) zu trennen. Weiterhin wird es schwieriger, die Datenpartition möglichst klein zu halten, wenn Documents auf eine andere Partition verlegt wurde (was man nebenbei gesagt immer tun sollte).

Eine Ausnahme gibt es natürlich: Mit der Software erstellte Dateien, also z.B. Dateien, die mit der Anwendung verknüpft sind. Aber eben keine Konfigurationsdaten, denn die gehören in %AppData%.

Zitat:
Hier gehe ich davon aus, dass der User seinem Dokumentenpfad erhöhte Aufmerksamkeit bei der Datensicherung schenkt (wer macht Vollbackups, z.B. mit Acronis?) und darum auch die Bezeichnung "wichtig".
Wenn du dir Sorgen machst, dass der Benutzer kein Backup der Konfigurationsdaten deiner Software machst, ist das fehl am Platz, denn das ist das Problem des Nutzers. Stell im Zweifel lieber eine Anleitung bzw. eine Liste von Verzeichnissen zusammen, die der Nutzer sichern soll, wenn er sich dafür interessiert. Oder bau eine Backup-Möglichkeit in die Software ein, die eine Kopie an einem durch den Nutzer definierten Ort ablegt.

Zitat:
- Weniger wichtige Dateien werden in C:\Users\USERNAME\AppData\Local\MEIN_APP_NAME\ gespeichert. Das sind dann z.B. Exportdateien die jederzeit wieder erzeugt oder hergestellt werden können.
Sind die Dateien groß? Dann ist das richtig. Sind die Dateien relevant für den Nutzer in Domänen? Dann ist der Ort falsch, Roaming wäre besser geeignet.

MfG Dalai

Geändert von Dalai (20. Okt 2015 um 20:51 Uhr)
  Mit Zitat antworten Zitat