-
24.08.11 09:38 #1Kloppo2011 Tutorials.de Gastzugang
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.
DankeGeändert von Kloppo2011 (29.08.11 um 09:17 Uhr)
-
24.08.11 10:34 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
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ßIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
24.08.11 11:27 #3Kloppo2011 Tutorials.de Gastzugang
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
-
24.08.11 11:47 #4SE Tutorials.de Gastzugang
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.
-
24.08.11 12:12 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
24.08.11 12:43 #6Kloppo2011 Tutorials.de Gastzugang
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 :1 2
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!
-
24.08.11 13:13 #7
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Deswegen sind INI Dateien auch die falsche Wahl, bzw. die Registry der richtige Platz Einstellungen (pro User / System) zu verwalten.
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ßIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
24.08.11 14:03 #8Kloppo2011 Tutorials.de Gastzugang
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!
-
24.08.11 15:09 #9Kloppo2011 Tutorials.de Gastzugang
Wie kann ich denn nun den aktuell angemeldeten User mit C++ auslesen in meiner Anwendung? Ich stehe gerade auf der Leitung!
-
24.08.11 15:21 #10
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
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ßGeändert von deepthroat (24.08.11 um 15:26 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
24.08.11 15:54 #11Kloppo2011 Tutorials.de Gastzugang
OK auslesen klappt, aber mein Setup packt mir bei allerliebe die Datein die ich angebe nicht unter den jeweiligen User ins Verzeichnis AppData! Und ich zhab absolut keine Ahnung warum!
Geändert von Kloppo2011 (24.08.11 um 16:23 Uhr)
-
Hallo,
Ist es denn überhaupt notwendig für jeden Benutzer getrennte Einstellungen abzulegen? Sonst wärs ja die einfachste Möglichkeit die Konfigurationsdateien im selben Ordner wie die exe abzulegen.
Da wir bis jetzt noch nichts von deinem Setup gesehen haben wird es uns ziemlich schwer fallen nur anhand dieses Aussage den Fehler zu erkennen. Wie wärs wenn du mal den Code posten würdest mit dem dus grade versuchst?OK auslesen klappt, aber mein Setup packt mir bei allerliebe die Datein die ich angebe nicht unter den jeweiligen User ins Verzeichnis AppData! Und ich zhab absolut keine Ahnung warum!
-
25.08.11 08:46 #13Kloppo2011 Tutorials.de Gastzugang
Hey,
also die Konfigurationseinstellungen in den selben Ordner abzulegen wie die .exe geht nicht, da dort scheinbar etwas mit den Rechten nicht passt. Der Benutzer muss die Dateien lesen und schreiben können.
Also ich versuche unter Visual Studio 2010 ein Setup zu erstellen, was soweit auch funktioniert. Nun weise ich diesem Setup einen weiteren speziellen Oderner zu "Ordner für Anwendungsdaten des Benutzers". So und nun erstelle ich das Setp und installiere es nur leider erstellt er mir die Dateien nicht im Ordner für Anwendungsdaten des Benutzers. Irgendeine Idee?
-
25.08.11 09:31 #14Kloppo2011 Tutorials.de Gastzugang
So läuft jetzt auch! Fragt mich aber nicht wieso, ich weiß es nicht!
Danke
-
25.08.11 10:30 #15Kloppo2011 Tutorials.de Gastzugang
Hey,
ich habe noch ganz andere Frage und zwar, wenn ich direkt Paramter beim Start mitgeben will, also der main-Funktion, steht ja in argv[0] der Pfad der exe. Nun will ich einen Paramter mitgeben also argv[1]. Wenn ich auf diesen Zugreife mit argv[1] dan schmeißt mir mein Programm beimcompilieren Fehler aus, ist auch klar, weil ich ja auch noch keine .exe habe der ich den Paramter übergeben habe. Wie umgehe ich das Problem?
Ähnliche Themen
-
Setup mit Inno Setup erstellen
Von timee im Forum .NET CaféAntworten: 6Letzter Beitrag: 17.03.09, 17:11 -
Setup erstellen
Von Angelika_25 im Forum .NET CaféAntworten: 6Letzter Beitrag: 17.09.08, 13:45 -
Setup erstellen
Von Angelika_25 im Forum .NET CaféAntworten: 3Letzter Beitrag: 14.07.08, 16:41 -
Setup erstellen
Von LoKi1 im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 24.11.04, 14:57 -
Setup erstellen
Von tobias_wuerms im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 10.11.04, 17:33



2Danke

Zitieren

Login






