ExtractFilePath(Application.ExeName)

Hallo,
ich habe da mal wieder ein Problem.
ich lege den Pfad des Programmes mit
ProgrammPfad:=ExtractFilePath(Application.ExeName);
fest. Mit ProgrammPfad+‚meineDatei.dat‘ lege ich dann fest wo 'meineDatei.dat gespeichert werden soll.
Bei Win95 bis XP klappt das auch. Nur VISTA speichert sie an anderer Stelle. Da ich es von einem Bekannten von ferne testen lasse kann ich nicht sagen wohin.

Woran liegt das und was kann ich tun, das meineDatei.dat im Programmordner gespeichert wird bzw. wo könnte mein Fehler liegen ?

Danke schon mal
Mike

Bei Win95 bis XP klappt das auch. Nur VISTA speichert sie an
anderer Stelle. …

Hallo Mike,

das ist kein Bug, sondern ein Feature: Vista weigert sich, Konfigurationsdateien u.ä. im Programmordner zu speichern, da soll der User garkeine Schreibrechte haben, und nach MS-Philosophie ist sowieso die Registry zu benutzen.

Daher werden INI-Dateien u.ä. in Wirklichkeit irgendwo bei den „Eigenen Dateien“ gespeichert. Ich glaube nicht, dass man das ohne weiteres abschalten kann - wie gesagt, der User darf ja dort, wo du es haben wolltest, nichts schreiben.

Gruss Reinhard

Hi Mike,

Woran liegt das und was kann ich tun, das meineDatei.dat im
Programmordner gespeichert wird bzw. wo könnte mein Fehler
liegen ?

Du solltest die vom Programm generierten Daten im Anwendungsdaten-Ordner speichern, den kannst Du über die Registry auslesen, AFAIK der Wert ‚AppData‘ im Registry-Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders. Dort legst Du einen Ordner an und speicherst darin was Du brauchst.

Ciao
Rudy

Du solltest die vom Programm generierten Daten im
Anwendungsdaten-Ordner speichern, den kannst Du über die
Registry auslesen, AFAIK der Wert ‚AppData‘ im
Registry-Schlüssel
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders. Dort legst Du einen Ordner an und speicherst darin
was Du brauchst.

Ich befasse mich zwar langsam mit der Registry aber so richtig klar ist mir das alles noch nicht.

Den Anwendungsdaten-Ordner habe ich nun gefunden. Jetzt ist mir nicht ganz klar wie ich dort einen eigenen Ordner während der Installation anlegen kann, da ich eine oder auch mehrere Dateien mitliefere, die dann zur Laufzeit geändert werden sollen.

Die Installationsroutine welche ich benutze bietet auch den Punkt:
Registry. Kann ich damit was anfangen ?
Ich habe mal einen Screenshot hinterlegt:

http://www.mizeh.de/TemporaereGrafiken/Screenshot.gif

Vielleicht kann mir ja jemand weiterhelfen.

Ich werde auch noch ein wenig rumsuchen. Vielleicht finde ich ja selbst noch etwas, was mir weiterhilft.

Danke auf jeden Fall schon mal
Mike

Hi Mike,

Den Anwendungsdaten-Ordner habe ich nun gefunden. Jetzt ist
mir nicht ganz klar wie ich dort einen eigenen Ordner während
der Installation anlegen kann, da ich eine oder auch mehrere
Dateien mitliefere, die dann zur Laufzeit geändert werden
sollen.

Ist zwar mehrere Jahre her, seit ich einen Installer gemacht habe - und ich weiß auch nicht, welche Version bzw. welchen Installer Du verwendest - aber mit meinem damaligen Installshield kann ich mich erinnern, dass man dort die Dateien in Pakete organisiert hat, für die man dann einzeln einen Zielordner wählen konnte. Der Installer bot hier Konstanten, die sich dann automatisch an das System angepasst haben. Dann konnte man auch eigene definieren und denen zur Laufzeit dann einen Startwert zuweisen, indem man ein paar Zeilen VB-ähnlichen Codes in ein vordefiniertes Event programmiert hat. Also alles recht einfach.

Die Installationsroutine welche ich benutze bietet auch den
Punkt: Registry. Kann ich damit was anfangen ?

Du musst ja keine Registrierungseinträge anlegen, sondern den Wert von Appdata auslesen und es schaffen, dass das Dateipaket dort in einem Unterordner abgelegt wird. Vielleicht bietet Dein Installer auch bereits eine vordefinierte Konstante für den Anwendungsdaten-Ordner? Dann reicht es ja, wenn Du den Ordner á la APPDATA\Meine Anwendung definierst - zumindest der Installer, mit dem ich gearbeitet habe, hat die Ordner alle automatisch erstellt. Details kannst Du aus der Hilfe des Installers lesen.

Hoffe das hilft etwas weiter… sonst eröffne am besten einen Extra-Thread in Programmierung allgemein, die Experten hier, die sich mit Installern gut auskennen, lesen nicht zwangsweise hier mit :smile:

Ciao
Rudy

Rudy,
je mehr ich mich mit der Registry beschäftige um so mehr fange ich an ihren Sinn und Nutzen zu kapieren.
Und du hast mir schon oft dabei geholfen.

Das mit dem Ordner im Anwendungsdateordner habe ich jetzt so gelöst, dass ich ein kleines Programm schreibe welches mir den Ordner nach der Installation anlegt und auch die Dateien,die ich brauche, erzeugt.
Und dann gibt es auch noch ein kleines Programm welches nach (bzw.während) der Deinstallation seinen Müll wieder aufräumt.

Ich denke die paar KB machen den Kohl auch nicht mehr fett :wink:

Danke für deine bisherige Hilfe. Du hörst hier sicher noch öfter von mir, wenn ich nicht weiterkomme.

Tschüss bis dann
Mike