Page 1 of 1

Copying the required dlls for the database client system dir

Posted: 29.09.2008, 03:24
by rfwoolf
In the installation instructions it says:
Copy the required dlls for your database client to the windows system directory (usually Windows\
System or winnt\system32) or use the database client installer.
and so I went to my Firebird install directory, and copied and pasted "fbclient.dll" into the WINDOWS\SYSTEM folder.
Only then did it work.

I now need to be able to do this for my the customer when I install the software.

Do you know if these dll files HAVE TO go into the system folder? Can't I tell ZEOSlib to look in the FireBird folder?
If I tell my install program to just put the dll into the "SYSTEM FOLDER" will this do the job? Or is there anything I need to look out for like in Vista etc?

Thanks :p

Posted: 29.09.2008, 11:52
by mdaems
You can also put them in the same directory as your exe or add the directory containing the dll's to the PATH environment variable. Pointing Zeoslib to a dll isn't possible yet.

Mark

Posted: 29.09.2008, 21:38
by fcodebue
You can check default install dir with registry key

HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances

into the string DefaultInstance you can find full path of firebird server installation.
However you can use command line tool

instclient i[nstall] [ -f[orce] ] fbclient.dll

to automatic copy it into system directory

Posted: 30.09.2008, 01:00
by rfwoolf
Okay so I can please confirm - if the DLL is inside the same directory as the EXE it will see it?

Posted: 30.09.2008, 22:27
by seawolf
Yes, if it is called fbclient.dll

Posted: 04.10.2008, 15:55
by rfwoolf
Thank you :) I will still have to test this on a "virgin" machine. Thanks for the help as always :)

Posted: 04.10.2008, 17:18
by nostradumbass
I would like to build upon this question with a question of my own:

If I want to give the user (application) the ability to choose between Firebird embedded or Firebird server ? Then which Dll file should I copy to the application folder ? The one that is distributed with the embedded (fbembed.dll, renamed to fbclient.dll) _or_ the one that is distributed with the Firebird server version (fbclient.dll) ?

Eg Sometimes the server is not available, so I want my application to connect to a local copy of the database. For this I would need to use the embedded Dll, correct?

Posted: 05.10.2008, 10:53
by seawolf
If you want to connect to Firebird server use fbclient.dll (in Firebird 2.1 is 440k located in Firebird\bin) and, on Zeos, set Zconnection.protocol to firebird-2.0

If you want to connect with Firebird embedded fbclientd.dll (in Firebird 2.1 is 2.6 Mb) and, on Zeos, set Zconnection.protocol to firebirdd-2.0

As you can understand, with fbclient you can only connect to the server, while fbclientd.dll can act as a server (in single user-mode).

If the connection is not aivalable you can use fbclient.dll, but you have to know where your database is located

Posted: 05.10.2008, 15:42
by nostradumbass
>> If you want to connect with Firebird embedded fbclientd.dll

Is this is the fbembed.dll file which the developer should rename to fbclient.dll (2.6 MB)? There is no file fbclientd.dll to be found anywhere.

>> set Zconnection.protocol to firebirdd-2.0

I see !!! Is there documentation about this specific property setting somewhere?

Posted: 05.10.2008, 20:56
by mdaems
nostradumbass wrote: Is this is the fbembed.dll file which the developer should rename to fbclient.dll (2.6 MB)? There is no file fbclientd.dll to be found anywhere.
rename it to fbclientd.dll that way you can use both protocols firebird and firebirdd in the same application. So you could even copy data from the embedded database to the remote database and back.

I don't know if the firebird embedded dll can also connect to a remote server as the mysql embedded server dll can? In that case you could think about adding only one dll to your application.

Mark

Posted: 05.10.2008, 22:11
by nostradumbass
Thanks.

Posted: 05.10.2008, 22:13
by seawolf
Yes, it can, but the problem is multi-user mode is disabled, so if someone is linked to that remote db, embedded dll returns an error