Empfohlende Ordner unter Vista und Ordner auf USB für Prgrammdateien.

27/05/2009 - 20:40 von Peter Flindt | Report spam
Hallo,
es gibt ja die Richtlinie, dass unter Vista, Win7 und im Prinzip auch
unter XP kein Programm Daten nach c:\program files\ProgrammName\
schreiben soll, sondern nach %APPDATA%\ProgrammName.

Nehmen wir mal etwas konkreter an ich hàtte einen Texteditor, also eine
EXE Datei, welche die Konfiguration in einer XML Datei speichert.
Diese XML würde dann der Installer oder das Programm selber, laut
dieser Richtlinie, in %APPDATA%\ProgramName erstellen, bzw. dort
verarbeiten. So weit so gut.
Nur was macht der Anwender wenn der den Editor jetzt von einem USB
Stick betreiben will? Der einzige logische Ort, für diese XML Datei,
wàre doch dann der der Exe Datei.

Pseudocode:
IF runfrom=USB THEN
storepath=%APPDATA%\ProgrammName
ELSE
storepath=.
also irgendwie, ich weiß nicht, als "elegant" würde ich das nicht
bezeichnen, mal abgesehen davon das mir die Umsetzung von diesem
"runfrom=USB" nicht klar ist. :|

Gibt es dazu irgendeine Guideline auf MSDN? (gerne auch Englisch)
Wie stellt MS sich das sonst vor?

Peter
 

Lesen sie die antworten

#1 Carsten Posingies
04/06/2009 - 18:56 | Warnen spam
Peter Flindt schrieb:
Nehmen wir mal etwas konkreter an ich hàtte einen Texteditor, also eine
EXE Datei, welche die Konfiguration in einer XML Datei speichert.
Diese XML würde dann der Installer oder das Programm selber, laut
dieser Richtlinie, in %APPDATA%\ProgramName erstellen, bzw. dort
verarbeiten. So weit so gut.
Nur was macht der Anwender wenn der den Editor jetzt von einem USB
Stick betreiben will? Der einzige logische Ort, für diese XML Datei,
wàre doch dann der der Exe Datei.

Gibt es dazu irgendeine Guideline auf MSDN? (gerne auch Englisch)
Wie stellt MS sich das sonst vor?



Wenn Deine Anwendung von einem USB-Stick laufen soll, wirst Du
kaum einen Installer benutzen, zumindest keine
Installationsroutine, die sich so verhàlt, wie MS es vorgibt,
sondern eher sowas wie XCOPY-Deployment, denn auch Dein
%ProgramFiles% wird wohl kaum bei allen Deinen Anwendern
defaultmàßig auf dem USB-Stick liegen.

Damit bist Du also eh schon nicht mehr konform mit den Richtlinien
seitens MS und kriegst kein Logo. Mach also einfach so, wie Du
denkst. Mach <LW>:\bin und <LW>:\etc oder
<irgendeinPfad>\DeinEditor und <irgendeinPfad>\DeinEditor\config.

Alternativ kannst Du natürlich doch eine Prüfung in der Art
durchführen, wie Du sie angerissen hast, z.B. etwas wie

//using System;
//using System.IO;
//using System.Reflection;
Assembly a = Assembly.GetEntryAssembly();
string path = Path.GetDirectoryName(a.Location);
string progsPath = Environment.GetFolderPath(
Environment.SpecialFolder.ProgramFiles);
string appDataPath;
if (progsPath.StartsWith(path))
appDataPath = Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData) + "\\";
else
appDataPath = path + "\\config";

HTH,

Carsten

Ähnliche fragen