Firebird 5 client without install lazarus / 16-Databases ---------------------------------------------------------------------- calm_sea · 2024-03-25 07:37 Hi everyone. My client application does not reside on the server. If I also install Firebird on the client it works, but if I only copy fbclient.dll to windows\system32 or in any case in the path it doesn't work. What is the minimum set of files to include so as not to have to install firebird on the client too? I couldn't find anything on the documentation. ---------------------------------------------------------------------- rvk · 2024-03-25 07:54 It happens that such instructions (for 'embedded' Firebird 5) was just posted yesterday  https://forum.lazarus.freepascal.org/index.php/topic,64344.msg512202.h tml#msg512202 And if you DO have a real server... well... then you just need to run the client installation. It copies a lot more than just fbclient.dll. (Also, with copying a fbclient.dll to windows\system32 you might up copying the wrong bitness, crippling any Firebird application. Quote from: MAndreato on March 24, 2024, 12:31:34 pmHi, I share my experience on using embedded Firebird 5 in a Lazarus application (Window 10). I hope this could helps, maybe it could be even more useful to update the https://wiki.freepascal.org/Firebird. Download Firebird kit from https://firebirdsql.org/. I used "Firebird-5.0.0.1306-0-windows-x64.zip" for this testcase. Create a new Lazarus project and in its folder extract the following files/folders from the zip: /intl/pluginsfbclient.dllfirebird.conffirebird.msgib_util.dllicu*.*msv cp140.dllvcruntime140.dllEMPLOYEE.FDB <-- sample database to use in the application (path in the zip: /examples/empbuild/)In the Lazarus project, add the following components: IBConnection1SQLTransaction1 --> set its Database property to IBConnection1SQLQuery1 --> set its Transaction property to SQLTransaction1DataSource1 --> set its DataSet property to SQLQuery1DBGrid1 --> set its DataSource property to DataSource1 and adjust it to the formAdd also Button1 and populate its OnClick event with the following code: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i procedure TForm1.Button1Click(Sender: TObject);begin  IBConnection1.HostName:= '';  IBConnection1.UserName:= 'SYSDBA';  IBConnection1.Password:= 'masterkey';  IBConnection1.DatabaseName:= ExtractFileDir(ParamStr(0)) + '\EMPLOYEE.FDB';  IBConnection1.Connected:= True;  SQLQuery1.SQL.Text:= 'select RDB$Relation_Name from RDB$RELATIONS where RDB$Relation_Name not like ''%$%''';  SQLQuery1.Open;end; That's all: press F9 to compile+run the application and then press Button1 --> the grid should connect to EMPLOYEE.FDB through the embedded engine and list all its tables (this is obviously just a small proof of concept). ---------------------------------------------------------------------- rvk · 2024-03-25 08:03 Also see: https://firebirdsql.org/rlsnotesh/install2-win- clientonly.html Both client and server depend on the C/C++ runtimes. And if you really only want to do a client install with copying a dll, don't copy to the Windows directory (unless you know what you are doing). Just place the dlls (and other needed files) in the same directory as your .exe file. ---------------------------------------------------------------------- calm_sea · 2024-04-03 12:06 No way. Everything works well only if I run at least the Firebird minum install client only  I'll do it in this way. The reason I tried to avoid it, is that I wanted to make a client entirely on a USB stick without any install ---------------------------------------------------------------------- rvk · 2024-04-03 12:13 Quote from: calm_sea on April 03, 2024, 02:06:11 pmNo way. Everything works well only if I run at least the Firebird minum install client only  I'll do it in this way. The reason I tried to avoid it, is that I wanted to make a client entirely on a USB stick without any install You would at least need the requirements of Firebird itself. And that's the C/C++ runtimes. Without those installed it won't work. BTW. Instead if running the Firebird minimal client install, you can also install those requirements yourself silently. The minimal install does the same thing. Part of win32/FirebirdInstall.iss: Code: INI  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i [Run]; due to the changes required to support MSVC15 support for earlier versions is now broken.#if Int(msvc_runtime_major_version,14) >= 14Filename: msiexec.exe; Parameters: "/qn /norestart /i ""{tmp}\vccrt{#msvc_runtime_library_version}_Win32.msi"" /L*v ""{tmp}\vccrt{#msvc_runtime_library_version}_Win32.log"" "; StatusMsg: "Installing MSVC 32-bit runtime libraries to system directory"; Check: HasWI30; Components: ClientComponent;#if PlatformTarget == "x64"Filename: msiexec.exe; Parameters: "/qn /norestart /i ""{tmp}\vccrt{#msvc_runtime_library_version}_x64.msi"" /L*v ""{tmp}\vccrt{#msvc_runtime_library_version}_x64.log"" ";  StatusMsg: "Installing MSVC 64-bit runtime libraries to system directory"; Check: HasWI30; Components: ClientComponent;#endif#endifhttps://github.com/Fi rebirdSQL/firebird/blob/master/builds/install/arch- specific/win32/FirebirdInstall.iss I'm not sure how to use C/C++ runtimes without installing them. ---------------------------------------------------------------------- zoltanleo · 2024-04-03 17:57 Quote from: calm_sea on March 25, 2024, 08:37:56 amHi everyone. My client application does not reside on the server. If I also install Firebird on the client it works, but if I only copy fbclient.dll to windows\system32 or in any case in the path it doesn't work. What is the minimum set of files to include so as not to have to install firebird on the client too? I couldn't find anything on the documentation. Hi calm_sea You don't have to copy some files. You can unzip the zip archive into some folder. Then run the server as an application with a free port. And you can specify this port in the connection string. E.g. Code: Bash  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i $\: c:\fb5\bin\firebird.exe -a -p 12345... Connection string: 127.0.0.1/12345: This will allow the server to work in full mode without the need to install the server in the system ---------------------------------------------------------------------- rvk · 2024-04-03 18:05 Quote from: zoltanleo on April 03, 2024, 07:57:09 pmYou don't have to copy some files. You can unzip the zip archive into some folder. Then run the server as an application with a free port. And you can specify this port in the connection string. The problem is that those DLL files from Firebird need the C/C++ runtime from Microsoft. These are often already installed by other software but on a clean fresh Windows system they are not installed and in that case the Firebird DLLs only work after installing that C/C++ runtime. ---------------------------------------------------------------------- zoltanleo · 2024-04-03 18:20 Quote from: rvk on April 03, 2024, 08:05:36 pmThe problem is that those DLL files from Firebird need the C/C++ runtime from Microsoft. These are often already installed by other software but on a clean fresh Windows system they are not installed and in that case the Firebird DLLs only work after installing that C/C++ runtime. I agree. There are features here, starting with Fb4. ---------------------------------------------------------------------- regs · 2025-08-07 16:27 Quote from: rvk on April 03, 2024, 08:05:36 pmThe problem is that those DLL files from Firebird need the C/C++ runtime from Microsoft. These are often already installed by other software but on a clean fresh Windows system they are not installed and in that case the Firebird DLLs only work after installing that C/C++ runtime. SQLite also requires MSVC. SQLite also requires ICU to support more than just ASCII. Although those are internationalized forks, like SQLite3MC. Official SQLite library only support ASCII and doesn't support anything outside basic Latin. So this is not the problem. The problem is in everything else - dozens of additional files, like conf, msg, plugins, intls. Older embedded was just a single dll file. ---------------------------------------------------------------------- regs · 2025-08-07 17:05 You might be right. But ICU requires MSVCP. And SQLite is pratically unusable without it. Firebird come pre-bundled with ICU and requires same version of runtime as ICU.