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
.
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
).
MfG Dalai