Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei nicht gefunden Meldung (https://www.delphipraxis.net/114579-datei-nicht-gefunden-meldung.html)

haentschman 27. Mai 2008 19:19


Datei nicht gefunden Meldung
 
...diesmal steh ich auf dem Schlauch. :(

- in meiner Software habe ich ein Onlineupdate integriert.
- das Programm incl. Update ist auf mehreren verschiedenen Rechnern (incl. Vista) getestet und funktioniert problemlos.

:gruebel: einer macht eine Ausnahme !

der Ablauf des Update:
1. update.ini wird downgeloadet
2. Versionsüberprüfung
3. bei neuer Version Download update.exe
4. update.exe wird gestartet - Hauptprogramm wird beendet

- nach dem Start der update.exe (auf dem Ausnahmerechner) erscheint ein Fenster mit schlicht "Datei nicht gefunden". :shock: :gruebel:
- nach dem Programmstart wird nur die Quelle und das Ziel der zu erneuernden Datei aus der update.ini gelesen und der Dowload beginnt.
- ansonsten gibt es vor dem Download keine Dateioperationen.
- zu Download kommt er aber gar nicht.
- die update.ini ist auf der Platte wo sie hingehört :gruebel:
- die Versionsinformationen liest er aus der update.ini aus :gruebel:

Meine Frage:

- da der Rechner (wo es ausnahmsweise nicht läuft) 400 km weit weg ist, kann ich schlecht dort was machen.
- wie kann ich den Fehler in der update.exe eingrenzen, da es hier auf verschiedenen Rechnern läuft :gruebel:
- hätte ich dort den Debugger wäre das ein Leichtes :(

:?: wie würdet Ihr so etwas angehen

Danke für Infos...

Die Muhkuh 27. Mai 2008 19:21

Re: Datei nicht gefunden Meldung
 
Hi,

loggst Du mit? Wenn nicht, bei einen kleinen simplen Log ein und schaue, auf welche Datei die update.exe zugreifen will.

rotfc 27. Mai 2008 19:26

Re: Datei nicht gefunden Meldung
 
Der Fehler dürfte bei 1. liegen, da Dein Update-Programm vermutlich keine Schreibrechte im Ordner hat. Die UAC von Vista macht mir auch viel Spaß...

marabu 27. Mai 2008 19:28

Re: Datei nicht gefunden Meldung
 
Hallo,

ich vermute, dass die Datei zwar herunter geladen, aber nicht an der Stelle abgelegt wird, an der du denkst. Beim späteren Lesezugriff findet allerdings keine Umleitung durch das OS statt und deshalb die Fehlermeldung.

Grüße vom marabu

haentschman 27. Mai 2008 19:29

Re: Datei nicht gefunden Meldung
 
Zitat:

Wenn nicht, bei einen kleinen simplen Log ein
... keine schlechte Idee. :thumb:

- ich bräuchte aber die Datei nur im Fehlerfall auf meinem FTP.
- :gruebel: wie werte ich die Exception aus, wenn ich nicht weiß, wo sie auftritt, damit die Datei dann übertragen wird.

Zitat:

Der Fehler dürfte bei 1. liegen, da Dein Update-Programm vermutlich keine Schreibrechte im Ordner hat. Die UAC von Vista macht mir auch viel Spaß...
unter Vista mit eingeschalteter UAC läufts. (Programm fordert Adminrechte an, da auch Dateien im Programmordner getauscht werden müssen ). Wo es nicht geht ist XP SP2 :gruebel:

haentschman 27. Mai 2008 19:37

Re: Datei nicht gefunden Meldung
 
Zitat:

ch vermute, dass die Datei zwar herunter geladen, aber nicht an der Stelle abgelegt wird, an der du denkst.
- die Datei liegt genau da, wo sie sein soll und von wo sie geladen wird
( zu diesem Zeitpunkt gibt es nur 2 Dateien, welche downgeloadet wurden update.exe, update.ini und beide liegen im richtigen Ordner )

INI laden für Versionsüberprüfung
Delphi-Quellcode:
Ini:= TIniFile.Create (InstallPfad + '\update.ini');
... Versionsüberprüfung im Hauptprogramm funktioniert

INI laden für Quelle / Ziel auslesen in update.exe
Delphi-Quellcode:
Ini:= TIniFile.Create (InstallPfad + '\update.ini');
... die einzige Dateioperation vor dem Download.
... update.ini liegt im InstallPfad

Danke für Euer Interresse... :thumb:

DeddyH 27. Mai 2008 19:40

Re: Datei nicht gefunden Meldung
 
Wie sieht "Installpfad" denn aus?

Die Muhkuh 27. Mai 2008 19:42

Re: Datei nicht gefunden Meldung
 
Hi,

Du kannst z.B. ein TApplicationEvents auf die Form setzen. Diese hat ein Ereignis "OnException". Das wird bei jeder Exception ausgelöst. Du könntest z.B. die Exceptionnachricht abspeicheren und hinterher auswerten.

haentschman 27. Mai 2008 19:44

Re: Datei nicht gefunden Meldung
 
Delphi-Quellcode:
InstallPfad:= GetCurrentDir;
im OnCreate des Hauptformulars sowohl Hauptprogramm als auch update.exe

Zitat:

Du kannst z.B. ein TApplicationEvents auf die Form setzen.
...kenn ich noch nicht :oops: probiere ich aus

Danke...

rotfc 27. Mai 2008 19:46

Re: Datei nicht gefunden Meldung
 
Zitat:

Zitat von haentschman
unter Vista mit eingeschalteter UAC läufts. (Programm fordert Adminrechte an, da auch Dateien im Programmordner getauscht werden müssen ). Wo es nicht geht ist XP SP2 :gruebel:

Glaub ich einfach nicht, daß es unter Vista mit der UAC geht.

Überprüf doch mal. welche Rechte Dein Programm braucht und welche Rechte Dein User hat.

haentschman 27. Mai 2008 19:49

Re: Datei nicht gefunden Meldung
 
Zitat:

Glaub ich einfach nicht, daß es unter Vista mit der UAC geht.
Mit Manifest...erstaunlicher Weise doch. Ich hatte wesentlich mehr Schwierigkeiten erwartet.

DeddyH 27. Mai 2008 19:52

Re: Datei nicht gefunden Meldung
 
GetCurrentDir ist IMHO nicht die sauberste Lösung. Nimm doch stattdessen mal
Delphi-Quellcode:
ExtractFilePath(ParamStr(0));

haentschman 27. Mai 2008 19:56

Re: Datei nicht gefunden Meldung
 
...wenn ich richtig verstehe, könnte es mit

GetCurrentDir statt ExtractFilePath(ParamStr(0)) auf verschiedenen Systemen Probleme geben. Dann würde der INI Pfad logischerweise nicht stimmen. Probiere ich auch mal aus. Dumm ist nur, das ich bei mir nie Fehler hatte und somit den Unterschied nicht erkenne :(

Trotzdem Danke

DeddyH 27. Mai 2008 20:01

Re: Datei nicht gefunden Meldung
 
Nur, dass ich das richtig verstanden habe: der Code steht in der Update.exe und diese sucht die Ini in ihrem eigenen Verzeichnis?

[edit] Schlechtschreibung [/edit]

rotfc 27. Mai 2008 20:02

Re: Datei nicht gefunden Meldung
 
Zitat:

Zitat von haentschman
Zitat:

Glaub ich einfach nicht, daß es unter Vista mit der UAC geht.
Mit Manifest...erstaunlicher Weise doch. Ich hatte wesentlich mehr Schwierigkeiten erwartet.

Genau :-)

Lass die Manifest-Datei weg.

haentschman 27. Mai 2008 20:06

Re: Datei nicht gefunden Meldung
 
Zitat:

Nur, dass ich das richtig verstanden habe: der Code steht in der Update.exe und diese sucht die Ini in ihrem eigenen Verzeichnis?
...richtig. Beide werden ins gleiche Verzeichnis downgeloadet und die update.exe erwartet die INI im gleichen Verzeichnis, was auch so war zum Zeitpunkt des Fehlers.

DeddyH 27. Mai 2008 20:07

Re: Datei nicht gefunden Meldung
 
Dann versuch mal meine Variante mit ExtractFilePath.

haentschman 27. Mai 2008 20:10

Re: Datei nicht gefunden Meldung
 
habe ich in der update.exe schon umgestellt. Bei mir funktioniert es wie gewohnt :-D
... mal sehen, wo der Rauch bei meinem Kollegen aufsteigt :-D

Danke erst mal

haentschman 10. Jun 2008 18:23

Re: Datei nicht gefunden Meldung
 
Guten Abend alle miteinander... :hi:

Update:

- nachdem mein Kollege es endlich mal geschaft hat das Update zu testen...

...alles wie gewoht ohne Probleme mit ExtractFilePath(ParamStr(0)) :cheer:

Danke noch mal...man lernt nie aus :-D

Luckie 10. Jun 2008 21:21

Re: Datei nicht gefunden Meldung
 
Ich dachte eigentlich, dass es sich langsam rumgesprochen hat, dass GetCurrentDirectory nicht den Anwendungspfad, sondern das aktuelle Verzeichnis lioefert. Wenn es auch das Anwendungsverzeichnis ist, dann ist das reiner Zufall.

Den Verdacht hatte ich übrigens schon beim Lesen der Fehlermeldung.

haentschman 11. Jun 2008 18:52

Re: Datei nicht gefunden Meldung
 
Hallo Luckie...

Zitat:

Beide werden ins gleiche Verzeichnis downgeloadet und die update.exe erwartet die INI im gleichen Verzeichnis
- es ging eigentlich immer um das aktuelle Verzeichnis.
- die .exe und die .ini liegen im selben Verzeichnis beim Update.

bis bald...

Luckie 11. Jun 2008 20:24

Re: Datei nicht gefunden Meldung
 
Zitat:

Zitat von haentschman
Hallo Luckie...

Zitat:

Beide werden ins gleiche Verzeichnis downgeloadet und die update.exe erwartet die INI im gleichen Verzeichnis
- es ging eigentlich immer um das aktuelle Verzeichnis.
- die .exe und die .ini liegen im selben Verzeichnis beim Update.

bis bald...

Ja. aber wie schon gesagt, GetCurrentDirectory liefert eben das aktuelle Verzeichnis für das Laufwerk und eben nicht unbedingt das Verzeichnis des Programmes. Da kannst du die Datreien noch so oft in das gleiche Verzeichnis kopieren wie die Anwendung, das ändert nichts an der obigen Tatsache.

haentschman 12. Jun 2008 20:23

Re: Datei nicht gefunden Meldung
 
Zitat:

Ja. aber wie schon gesagt, GetCurrentDirectory liefert eben das aktuelle Verzeichnis für das Laufwerk und eben nicht unbedingt das Verzeichnis des Programmes. Da kannst du die Datreien noch so oft in das gleiche Verzeichnis kopieren wie die Anwendung, das ändert nichts an der obigen Tatsache.
Hallo erst mal... :-D

...wir sind da einer Meinung.

:gruebel: jetzt habe ich verstanden, wie du das meinst. In seltenen Fällen kann es vorkommen, daß das aktuelle Verzeichnis nicht dem des gestarteten Programmes entspricht.

...und wie (fast) immer hast du Recht... :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz