Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Daten-Verzeichnisse? (https://www.delphipraxis.net/170586-daten-verzeichnisse.html)

PeterPanino 24. Sep 2012 23:13

Daten-Verzeichnisse?
 
Hallo! Um eigene Dokumente, Daten und Einstellungen abzuspeichern, bieten sich in Windows (7, Vista) m.M.n. offenbar diese beiden Verzeichnisse an:

\Users\$User$\AppData\Roaming

\Users\$User$\Documents


1. Welche Verzeichnisse sollte man benutzen?

2. Welche Verzeichnisse benutzt ihr für eure Programme?

3. Weiß jemand, ob es in Windows 8 wieder neue Pfade gibt?

4. Welche Funktionen benutzt ihr in euren Programmen, um diese Pfade zu erhalten?

5. Welch Pfad-Variablen sollte man in Inno Setup verwenden, um die selben Pfade wie im eigenen Programm zu erhalten, und das verlässlich in allen Betriebssystemvarianten ab XP aufwärts?

Dalai 25. Sep 2012 05:08

AW: Daten-Verzeichnisse?
 
Tu bitte dir selbst und anderen einen Gefallen und verwende die entsprechenden API-Funktionen statt fester Pfade: SHGetFolderPath() (ab Win2k verfügbar) oder SHGetKnownFolderPath() (ab Vista verfügbar), natürlich mit den entsprechenden CSIDL bzw. KNOWNFOLDERID als Parameter.

Und noch eine Bitte: halte deine Programmdaten aus Eigene Dateien (dein Beispiel Documents) raus! Ich hasse es, wenn Programme (vor allem Spiele) meinen, ihren Kram dort abkippen zu müssen, obwohl es passende Verzeichnisse im System dafür gibt: Anwendungsdaten/AppData (CSIDL_APPDATA bzw. FOLDERID_RoamingAppData). Warum hasse ich das? Nun, es sagt schon der Name der Verzeichnisse: AppData ist für die Daten der Applikation, Eigene Dateien (My Documents) ist für meine Daten, nicht für die Daten der Anwendungen, d.h. dort lege ich meine Dokumente, Skripte oder was auch immer ab.

Zu deinen konkreten Fragen.
Zitat:

1. Welche Verzeichnisse sollte man benutzen?
CSIDL_APPDATA/FOLDERID_RoamingAppData oder meinetwegen auch die Pendants im AllUsers-Verzeichnis CSIDL_COMMON_APPDATA/FOLDERID_ProgramData. Wobei es immer darauf ankommt, was es für Daten/Einstellungen sind, denn manchmal eignen sich die Verzeichnisse CSIDL_LOCAL_APPDATA/FOLDERID_LocalAppData eher, weil sie eben nicht "roaming" sind, also in einer Domäne nicht auf dem Server landen.

Zitat:

2. Welche Verzeichnisse benutzt ihr für eure Programme?
Bisher habe ich keine so großen Projekte geschrieben, dass es sich lohnen würde, mich an meine eigene Empfehlung zu halten ;). Stattdessen lege ich meine INIs neben den Executables ab, wobei meine "wichtigen" Programme immer die Möglichkeit bieten, via Parameter einen alternativen Speicherort anzugeben.

Zitat:

3. Weiß jemand, ob es in Windows 8 wieder neue Pfade gibt?
Mit Vista ist zwar die Funktion SHGetKnownFolderPath() hinzugekommen, aber die Funktion SHGetFolderPath() funktioniert auf allen Windows-Versionen seit Win2k. Neue Pfade gibt es IIRC auch nicht, aber letztlich ist das egal, denn bei Benutzung der (richtigen) API-Funktionen kommt das System immer im richtigen Pfad raus (sofern nicht irgendwas am Windows kaputt ist ;)).

Zitat:

4. Welche Funktionen benutzt ihr in euren Programmen, um diese Pfade zu erhalten?
Die Beantwortung dieser Frage sollte sich aus der bereits jetzt sehr langen Antwort ergeben :-D.

Mit Inno Setup kenn ich mich (jedenfalls aus Entwicklersicht) nicht aus, daher kann ich dazu keinen Rat geben. Die Inno Setup Doku sollte aber die entsprechenden Infos bereithalten, denn die Variablen dürften von Inno Setup je nach OS-Version passend ersetzt werden (denke ich mir in meinem jugendlichen Leichtsinn :lol:).

MfG Dalai

Uwe Raabe 25. Sep 2012 08:11

AW: Daten-Verzeichnisse?
 
Die Konstanten für Inno Setup stehen alle in der Hilfe unter Constants. Hier ein Auszug:

Zitat:

{localappdata}
The path to the local (nonroaming) Application Data folder.

{userappdata} & {commonappdata}
The path to the Application Data folder.

{userdocs} & {commondocs}
The path to the My Documents folder (or on NT 4.0, the Personal folder).

BasilBavaria 30. Sep 2012 10:59

AW: Daten-Verzeichnisse?
 
Hai!

Fast alle Leute die ich kenne nutzen nicht die Win-Standardvorgaben, sondern haben Datenverzeichnisse auf einer anderen Partition wie D:\Daten\Schreibkram\Datei.txt.

Ich lasse daher immer zwei Möglichkeiten:
  1. Eigener Pfad im installationsverzeichnis - \MeinProg\Daten\Datei.txt
  2. Alternativer Datenpfad auf Wunsch

Dies macht in der Regel glücklicher und insbesondere bei Variante #2 auch Datensicherungen einfacher, da der Anwender einfach komplett D: oder D:\Daten sichern kann ohne sich vorher alle möglichen Verzeichnisse von den Platten zusammensuchen zu müssen.

Der Basil

himitsu 30. Sep 2012 11:40

AW: Daten-Verzeichnisse?
 
Man kann natürlich einfach die gewünschten Verzeichnisse umleiten, welche von Windows bereitgestellt.
Daher gibt es in Windows auch die APIs, wo man das aktuelle Daten-Verzeichnis auslesen kann, da Windows und/oder der User Diese beliebig verschieben kann.

Dalai 30. Sep 2012 12:14

AW: Daten-Verzeichnisse?
 
Zitat:

Zitat von BasilBavaria (Beitrag 1185074)
Fast alle Leute die ich kenne nutzen nicht die Win-Standardvorgaben, sondern haben Datenverzeichnisse auf einer anderen Partition [...]

Habe ich auch, zumindest für Eigene Dateien, Eigene Bilder & Co., aber das Windows-Profil inkl. Anwendungsdaten lasse ich dort, wo Windows es hinlegt.

Eigene Dateien & Co kann man umbiegen, bis einschließlich XP ging das sogar sehr einfach, jedenfalls einfacher als unter Win7, weil es dort nicht nur ein Verzeichnis ist sondern derer gleich 4 oder so, auch auf eine andere Partition/Platte. Aber das bedeutet nicht, dass man im eigenen Programm dadurch Nachteile bekäme - höchstens dann, wenn man feste Pfade verwendet statt der API-Funktionen.

Nicht dass wir uns falsch verstehen: eine benutzerdef. Angabe, losgelöst vom System, ist sicher nicht schlecht (im Gegenteil), aber wenn ich erst bei jedem Programm anfangen müsste, den Speicherort umzubiegen, käme ich gar nicht mehr zum Arbeiten.

MfG Dalai

BasilBavaria 3. Okt 2012 11:14

AW: Daten-Verzeichnisse?
 
Zitat:

... aber wenn ich erst bei jedem Programm anfangen müsste, den Speicherort umzubiegen, käme ich gar nicht mehr zum Arbeiten.
MfG Dalai
Und wie oft macht man das? Einmal! Normalerweise direkt nach oder während der Installation bzw. dem ersten Aufruf.
Und ansonsten muss man sich halt einmal durch die wichtigen Programme robben und die Pfadangaben ändern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz