Hallo zusammen,
ich habe folgendes Problem und keine Ahnung, ob es am Programm oder falschen Verknüpfung in der Registry liegt.
Sachverhalt:
Mein Programm funktioniert problemlos und hat eine integrierte Datensicherung. Nun habe ich seit der letzten Installation via Inno-Setup die Dateiendung *.gds in der Registry als "Datensicherungsdatei für mein Programm" hinterlegt. Durch einen Doppelklick auf die Datei soll sich mein Programm öffnen (Parameter werden übergeben) und die Datensicherung eingearbeitet werden. Wird auch alles super in Windows angezeigt und auch der Aufruf funktioniert.
Die Datensicherungen können von verschiedenen Benutzern ausgetauscht werden und liegen daher zuerst meist auf einem USB-Stick, auf CD oder in einem temp. Verzeichnis vor
Das Problem ist folgendes:
Dadurch, dass die Datensicherungsdatei meist an irgendeinem beliebigen Ort ist (nur eben nicht im Programmverzeichnis) ... bricht der Programmstart mit einem Fehler ab. Es müsste irgendwie an das Programm ein "Ausführen in"-Parameter übergeben werden.
Zum Vergleich: In den Eigenschaften des Desktop-Icons ist ja das Programmverzeichnis bei "Ausführen in" vermerkt. Ist dort nichts eingegeben, funktioniert der Programmstart auch nicht. War bisher auch kein Problem. ABER JETZT!
Wo liegt das Problem? Kann ich beim Doppelklick auf eine Windows-Datei und beim Einlesen der Parameter "irgendwie" sicherstellen, dass die Datei auch im Arbeitsverzeichnis ausgeführt wird?
Ich hoffe, ich habe das Problem einigermaßen schildern können. Ich denke, es ist kein Inno-Problem (Anzeige funktioniert, Klick funktioniert, Programm startet auch).
Zur Info: So ist der Dateityp registriert:
Delphi-Quellcode:
[Registry]
;Mit dieser Anweisung wird ein Registryschlüssel namens ".gds" erzeugt
Root:
HKCR; Subkey: ".gds"; ValueType:
string; ValueName: ""; ValueData: "GDS.File"; Flags: uninsdeletevalue
;TYpenSchlüssel erstellen
Root:
HKCR; Subkey: "GDS.File"; ValueType:
string; ValueName: ""; ValueData: "Datensicherung der Gebietskartei"; Flags: uninsdeletekey
;Icon Zuordnen
Root:
HKCR; Subkey: "GDS.File\DefaultIcon"; ValueType:
string; ValueName: ""; ValueData: "
{app}\gebiete.exe,1"
;Aktion beim Klicken festlegen
Root:
HKCR; Subkey: "GDS.File\shell\open\command"; ValueType:
string; ValueName: ""; ValueData: """
{app}\gebiete.exe"" ""restorebackup"" ""%1""";
;Beschreibung der Aktion festlegen
Root:
HKCR; Subkey: "GDS.File\shell\open"; ValueType:
string; ValueName: ""; ValueData: "Öffnet die Gebietskartei und startet die Datenwiederherstellung";
Danke für einen Tipp!
Und vielen Dank vorab!
Christian