Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TFDIBRestore findet fbclient.dll nicht? (https://www.delphipraxis.net/203364-tfdibrestore-findet-fbclient-dll-nicht.html)

TurboMagic 11. Feb 2020 15:44

Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC

TFDIBRestore findet fbclient.dll nicht?
 
Hallo,

seit heute hab' ich ein komisches Problem.
Meine Delphi 10.3.3 Win32 Anwendung benutzt TFDIBBackup zum Erzeugen eines Backups einer Firebird Datenbank.
Das klappt.

Nur wenn ich TFDIBRestore benutzen will, was vor ein paar Tagen in dem Programm auch schon ging,
(habe zwischenzeitlich auf 10..3.3 aktualisiert) bekomme ich immer diese Fehlermeldung:

[FireDAC][Phys][FB]-314. Cannot load vendor library [fbclient.dll or fbembed.dll]. Das angegebene Modul wurde nicht gefunden
Hint: check it is in the PATH or application EXE directories, and has x86 bitness.

Kopiere ich diese fbclient.dll aus dem bin Verzeichnis der FB Installation in den Ordner wo meine exe liegt klappt es.
Was auch nicht funktioniert ist diese nach C:\Windows\System32 zu kopieren.

Warum findet die Backup Komponente die fbclient.dll und die Restore nicht?
Beide werden im Code gleich eingestellt.

In QP hab' ich auch keinen entsprechenden Report gefunden.

mkinzler 11. Feb 2020 15:52

AW: TFDIBRestore findet fbclient.dll nicht?
 
32Bit oder 64Bit?

Bei 64Bit Windows liegt die 64Bit Version in C:\Windows\System32 und die 32Bit Version unter SYSWOW64

TurboMagic 11. Feb 2020 15:59

AW: TFDIBRestore findet fbclient.dll nicht?
 
Danke schon mal dafür!
Kopiere ich die da rein funktioniert es.

Nur bleiben Fragen offen:

1. Warum klappt TFDIBBackup, aber nicht das Restore
wenn die Datei nicht auch dort ist?

2. Wenn ich in meinem Installationsprogramm (InnoSetup)
den Firebird Installer mit drin habe rufe ich den
silent auf, u.a. mit Parameter /COPYFBCLIENT
Das sollte doch eigentlich die fbclient.dll in diesen
System-Ordner kopieren, oder liege ich da falsch?
Warum hat es das nicht getan?

Grüße
TurboMagic

TurboMagic 11. Feb 2020 16:19

AW: TFDIBRestore findet fbclient.dll nicht?
 
Ok, folgender Lösungsansatz funktioniert, sollte meiner Meinung nach aber eigentlich nötig sein:

- GetCurrentDir merken
- SetCurrentDir auf das Firebird Verzeichnis setzen (das kann per Registry Eintrag ermittelt werden)
- Backup oder Restore auslösen
- SetCurrentDir auf das gemerkte zurücksetzen

Grüße
TurboMagic

hoika 11. Feb 2020 16:30

AW: TFDIBRestore findet fbclient.dll nicht?
 
Hallo,
den Pfad der Client-Dll müsste man in der Komponente eigentlich eingeben können.
Vielleicht steht er ja in der Backup-Komponente drin und im Restore nicht.

TurboMagic 11. Feb 2020 23:39

AW: TFDIBRestore findet fbclient.dll nicht?
 
Ich habe schon nach einer Möglichkeit den anzugeben geswcuht, aber zumindest keine offensichtliche gefunden.

Ich habe dazu jetzt auch diesen QP Report erstellt: https://quality.embarcadero.com/browse/RSP-27628

hoika 13. Feb 2020 16:44

AW: TFDIBRestore findet fbclient.dll nicht?
 
Hallo,
also hier
http://docwiki.embarcadero.com/Libra...e.TFDIBRestore

steht das

Delphi-Quellcode:
FDIBRestore1.DriverLink := FDPhysFBDriverLink1;
und dazu habe ich das
gleich oben steht VendorLib
Den Wert würde ich einfach erst mal auf 'fbclient.dll' setzen.

https://entwickler-ecke.de/viewtopic.php?p=713941

TurboMagic 13. Feb 2020 17:20

AW: TFDIBRestore findet fbclient.dll nicht?
 
Hallo,

naja, das mit dem DriverLink stimmt schon, nur ist ieser konfiguriert und ich denke auf
die exakt selbe Art und weise wie in meiner Backup Klasse (die erben beide von einer
Basisklasse, welche diesen DriverLink vorbereitet).

Der Restore Vorgang liefert ja auch Log-Datei die eindeutig von der fbclient.dll oder
fbembed.dll (oder wie die genau heißt) sprechen!
Ich denke also schon, dass er die sucht, sonst würde es ja nicht funktionieren,
wenn ich den Pfad mittels SetCurrentDir setze.

Evtl. ist beim DriverLink (kann das gerade schlecht prüfen) aber das VendorHome
oder wie das Verzeichnis auch immer heißt nicht richtig gesetzt. Dadurch sucht
er dann im aktuellen Pfad.

Das wäre noch untersuchungswürdig.

Grüße
TurboMagic


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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 by Thomas Breitkreuz