Setup erstellen und dateipfade mitgeben

K

Kloppo2011

Hey Leute,

ich habe eine Frage und zwar habe ich mir ein Setup erstellt. Nun möchte ich bzw. muss ich die Pfade zu den Datein auf die innerhalb meines Programmes zugegriffen wird ändern. Ich möchte ja ungern einen festen Pfad hinterlegen, sondern zumindest das Laufwerk offen halten.

Danke
 
Zuletzt bearbeitet von einem Moderator:
Hi.

Normalerweise sollte man Informationen generell lieber in die Registry schreiben.

Installationspfade (Uninstaller) sollten auch in die Registry.

Womit hast du denn dein Setup erstellt?

Ansonsten kannst du immer den aktuellen Pfad deiner .exe mit Hilfe der GetModuleFileName Funktion ermitteln.

Gruß
 
Ich habe mein Setup mit Visual Studio 2010 erstellt und greife aus meinem Programm lesen und schreibend auf eine Ini und eine Textdatei zu. Diese werden ins Verzeichnis C:\Programm Files\Name des Tools\config installiert. Aber es kann ja auch sein, dass jemand das Tool nach D installiert. Oder in sonst irgendeinen Pfad. Kann man den Installationspfad im Programm auslesen und dann den Ordner config anhängen um auf die beiden Datein zuzugreifen?

Grüße
 
Schau dir doch mal ein normales Setup an : dort wirst du nach dem Installationspfad gefragt. Dieser wird dann ausgelesen und als relativ-root für das Setup gesetzt. Und genau so musst du auch dein Setup programmieren. Mach es meinet wegen mit nem TextField das du dynamisch an einen Directory-Tree hängst. Dann liest du das selektierte Verzeichnis aus dem Directory-Tree aus und zeigst ihn über das TextField an. Welches von beiden du nun ausliest um den root-Pfad zu bekommen ist dabei egal, wobei ich hier auf das TextField gehen würde da der User ja auch einen eigenen Pfad eingeben kann.
 
Ich habe mein Setup mit Visual Studio 2010 erstellt und greife aus meinem Programm lesen und schreibend auf eine Ini und eine Textdatei zu. Diese werden ins Verzeichnis C:\Programm Files\Name des Tools\config installiert. Aber es kann ja auch sein, dass jemand das Tool nach D installiert. Oder in sonst irgendeinen Pfad. Kann man den Installationspfad im Programm auslesen und dann den Ordner config anhängen um auf die beiden Datein zuzugreifen?
Du kannst ihn aus der Registry auslesen.

Du kannst den Pfad deiner .exe mit der GetModuleFileName Funktion auslesen.

Gruß
 
Jup alles schön und gut leider, brauche ich ein Verzeichnis in dem der Benutzer auch schreibrechte hat und das ist leider in Program Files nicht der Fall.
Ich würde es jetzt unter den Anwendungsdaten des Benutzers probieren, aber wie lese ich den aktuellen Benutzer aus und geben ihn in meinem Code mit?
Hier mein Code:
Code:
std::string inipath("c:/Users/heinz/AppData/Local/Graph_Generator/config.ini");
std::string codespath("c:/Users/heinz/AppData/Local/Graph_Generator/ColourCodes.txt");

Anstelle von Heinz muss da nun natürlich der jeweilige Benutzernamen stehen, der das Programm öffnet, aber was passiert, wenn ich es unter einem anderen Benutzer installiere als nutze? Unter den Anwendungsdaten für alle Nutzer kann auch nur gelesen werden.

Shit!
 
Jup alles schön und gut leider, brauche ich ein Verzeichnis in dem der Benutzer auch schreibrechte hat und das ist leider in Program Files nicht der Fall.
Deswegen sind INI Dateien auch die falsche Wahl, bzw. die Registry der richtige Platz Einstellungen (pro User / System) zu verwalten.
Ich würde es jetzt unter den Anwendungsdaten des Benutzers probieren, aber wie lese ich den aktuellen Benutzer aus und geben ihn in meinem Code mit?
Hier mein Code:
Code:
std::string inipath("c:/Users/heinz/AppData/Local/Graph_Generator/config.ini");
std::string codespath("c:/Users/heinz/AppData/Local/Graph_Generator/ColourCodes.txt");

Anstelle von Heinz muss da nun natürlich der jeweilige Benutzernamen stehen, der das Programm öffnet, aber was passiert, wenn ich es unter einem anderen Benutzer installiere als nutze? Unter den Anwendungsdaten für alle Nutzer kann auch nur gelesen werden.
Du könntest die Umgebungsvariable "%userprofile%" bzw. "%appdata%" verwenden.

Du könntest die SHGetFolderPath Funktion verwenden.

All das würde sich durch Einsatz der Registry erledigen, da du nur auf HKEY_CURRENT_USER\... zugreifen müßtest.

Gruß
 
Das Problem mit der Registry ist nur halt auch das ich während der Programmlaufzeit bis zu 800 Einträge in die Ini-Datei schreibe und ich ja eh noch auch die Textdatei habe die gelesen und geschrieben werden muss!
 
Wie kann ich denn nun den aktuell angemeldeten User mit C++ auslesen in meiner Anwendung? Ich stehe gerade auf der Leitung!
 
Wie kann ich denn nun den aktuell angemeldeten User mit C++ auslesen in meiner Anwendung? Ich stehe gerade auf der Leitung!
Wozu willst du denn den User ermitteln? Es reicht doch den Pfad des Users zu ermitteln. (Man kann Profile auch ganz woanders ablegen, mitnichten ist c:\users\xxx\appdata immer der entsprechende Pfad für einen User - schon gar nicht unter Windows XP. D.h. der Benutzername nützt dir in der Situation doch gar nichts.)

\edit: Nichtsdestotrotz: es gibt eine Funktion GetUserName - welch eine Überraschung.. ;-]

Gruß
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück