Laden...

Speicherort der Konfigurationsdatei eines Tools ohne Installation: %AppData% o. doch Programmverz?

Erstellt von barzefutz vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.711 Views
B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 11 Jahren
Speicherort der Konfigurationsdatei eines Tools ohne Installation: %AppData% o. doch Programmverz?

Hallo,

ich habe eine Frage. Wenn meine Anwendung Benutzereinstellungen abspeichern soll, wo sollte man diese am Besten ablegen? Der Tenor ist ja, soweit ich informiert bin, dass die Einstellungen in %AppData% gespeichert werden sollen, und ich verstehe auch warum das der bevorzugte Weg ist. Es gibt aber auch Fälle, die dagegen sprechen. Was ist zum Beispiel, wenn meine Anwendung ein kleines, nicht installierbares Tool ist und keinen Uninstaller hat? Wenn der Benutzer die Anwendung wieder löscht, ärgert er sich womöglich darüber, wenn Reste in %AppData% oder der Registry zurückbleiben. Wäre es da nicht besser, die Einstellungen im selben Ordner wie die Anwendung abzuspeichern? Wie würdet ihr vorgehen?

309 Beiträge seit 2008
vor 11 Jahren

Wäre es da nicht besser, die Einstellungen im selben Ordner wie die Anwendung abzuspeichern?

Klares Nein wenn die Anwendung im "Program Files"-Ordner liegt, da seit Windows Vista nur mit Adminrechten zugriff auf den Programmorder möglich ist.
Wenn ein Programm trotzdem auf den Programmordner zugreift werden die Zugriffe in den "Virtual Store" (c:\users\benutzername\appdata\local\virtualstore\program files.. ) umgeleitet.
Und damit hast du wieder das gleiche "Problem";

Wenn das Programm allerdings z.B. vom USB-Stick laufen soll und die Daten nicht Rechnerspeziefisch sind, dann macht es allerdings Sinn.

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 11 Jahren

Aber das Programm wird ja nicht in den Programme-Ordner installiert. Der Speicherort ist beliebig. Der Benutzer lädt es runter und würde es z.B. nach C:\Users\Stefan\Tools\MyTool extrahieren. Was wäre dann?

309 Beiträge seit 2008
vor 11 Jahren

Hab mein Posting gerade konkretisiert. 😉

Und was wenn der User es doch manuell nach Program Files kopiert? Oder einen anderen Order der nur mit Adminrechten erreichbar ist.

Ich halte einen Installer (und der dazugehörigr Uninstaller) immer für guten Stil, außer für wirkliche Mikro-Programme die keine Konfig-Daten speichern.

Und Tools für den USB-Stick, wie oben geschrieben.

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 11 Jahren

Ja das mit dem VirtualStore wäre natürlich sehr hässlich. OK, ich sehe es ein, die Nachteile überwiegen 🙂

Aber das mit den "Überbleibseln" beim Löschen des Tools finde ich immer noch hässlich. Das kann man wohl nur mit einem Uninstaller lösen.

H
15 Beiträge seit 2009
vor 11 Jahren

Wenn der Benutzer trotz Sicherheitsabfrage unaufgefordert Kram in den Programmordner kopiert, ist er doch selbst Schuld bzw. sollte sich möglicher Konsequenzen bewusst sein.

Bei so mittelkleinen Tools ist es auch einigermaßen üblich, eine Standardversion mit Installer, "ordentlichen" Einstellungen etc. und eine portable Version mit Config im selben Ordner, die wie beschrieben zum Entpacken aufn USB-Stick oder so gedacht ist, anzubieten. So kann der Nutzer selbst entscheiden, welches Verhalten er wünscht.

1.820 Beiträge seit 2005
vor 11 Jahren

Hallo!

Alternativ könnte man auch prüfen, wo das Programm liegt und dann entscheiden, wo die Config gespeichert werden soll.

Nobody is perfect. I'm sad, i'm not nobody 🙁

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo barzefutz,

grundsätzlich sollten (änderbare) Einstellungen immer in AppData liegen. Aber natürlich ist die Frage nach möglichen Ausnahmen berechtigt. Und der Wunsch, dass sich ein einfaches Tool per xcopy deployen lässt, ist legitim, siehe z.B. Structuring a .NET Application For Easy Deployment, Abschnitt "Single File Deployment".

Wenn allerdings das Tool eine (änderbare) Konfigurationsdatei mitbringt oder anlegt, dann ist es eigentlich kein "Single File Deployment" mehr.

Und egal wo die Datei gespeichert wird: Der Benutzer muss sich darum kümmern, dass sie wieder entfernt wird, auch dann, wenn sie im gleichen Verzeichnis wie die exe gespeichert wird.

Andererseits ist es auch bei per Setup-Programm installierten Anwendungen nicht unüblich, dass Uninstaller Konfigurationsdateien nicht (oder nur auf ausdrücklichen Wunsch) löschen. Die Überlegung ist vermutlich, dass wenn der Benutzer das deinstallierte Programm neu installiert, er gleich wieder seine bevorzugten Einstellungen hat. Und so dumm ist die Überlegung nicht. Denn Speicherplatz als solcher kostet nichts und ein Verzeichnis unter AppData (wo man eh selten oder nie herein schaut) stört in der Praxis so gut wie nicht.

Wenn man sich mit dieser Überlegung anfreundet, dann ist es auch für ein einfaches Tools ohne Installationsprogramm besser, die Konfigurationsdatei in AppData abzulegen. Zum einen stört sie dort nicht und zum anderen ist nur dort sichergestellt, dass sie bei einer "Neuinstallation" auch gefunden wird, selbst wenn das Tool bei der "Neuinstallation" in ein anderes Verzeichnis kopiert wird.

Ich glaube, von dem Gedanken, eines sauberen Laufwerks, auf dem sich nur befindet, was aktuell ist und benötigt wird, muss man sich heutzutage eh verabschieden.

herbivore