2012-02-02 183 views
3

我正在尝试将使用Firebird v2.5数据库的应用程序部署到客户机。Firebird客户端安装

我想使用最低安装,而不需要运行任何其他安装程序。从我收集的内容中,我需要做的就是将“FBClient.dll”复制到目标应用程序文件夹(其中包含firebird数据库文件)。我已经尝试过这一点,它仍然报告有关无法找到正确的.net数据提供者的错误。

例如

C:\Program Files (x86)\MyApp\myApp.exe 
C:\Program Files (x86)\MyApp\fbDatabase.fdb 
C:\Program Files (x86)\MyApp\fbclient.dll 

产生的误差是:

无法找到或加载注册.NET Framework数据提供。

而且已经复制,重命名,包括fbclient.dll作为fbembed.dll

我也尝试了一堆其他文件复制到app目录,以及fbclient.dll放置到c: \,c:\ windows,c:\ windows \ system。

我也尝试安装客户端安装,也没有喜悦。

有没有一种方法,我可以使用firebird数据库,而无需手动编辑machine.config文件或使用gac,并通过我在开发机器上安装firebird的地狱?我想要一个用户可以安装的应用程序,而不要求它由开发人员安装。

请注意,我正在编写的应用程序是针对单个机器,单用户环境,谁知道如何双击安装按钮,注意跨越一个gnat,如果需要做双击以上安装然后按下GO,只会觉得无聊,按取消,忘记按钮。

我的文件“FirebirdSql.Data.FirebirdClient.dll”添加到应用程序文件夹,我不再获得数据提供程序错误,而不是我得到以下

"Unable to complete network request to host \"DevMachine\"." 

at FirebirdSql.Data.Client.Managed.Version10.GdsConnection.Connect() 
at FirebirdSql.Data.FirebirdClient.ClientFactory.CreateManagedDatabase(FbConnectionString options) 
at FirebirdSql.Data.FirebirdClient.ClientFactory.CreateDatabase(FbConnectionString options) 
at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() 

我试图用连接以下

string file = @"C:\Program Files (x86)\MyApp\Test.FDB;"; 
FbConnection con = new FbConnection("User=SYSDBA;" + "Password=masterkey;" + "Database=" + file + "DataSource=Dev-VS-W7VM;" + "Port3050;" + "Dialect=3;" + "Charset=ISO8859_1;"); 
     try 
     { 
      con.Open(); 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.ToString()); 
     } 

我已经在我的项目,安装文件夹包含FirebirdSql.Data.FirebirdClient(.. \ MyApp的) 预先感谢您。

+0

详细有所欠缺这里。当然你可以使用复制/粘贴来提供准确的错误信息。如果你不能使用复制/粘贴,然后复制它vertbatim。 – 2012-02-02 19:07:46

+0

如果您直接使用客户端API,将FBClient.dll复制到您的应用程序文件夹中只是一个解决方案。如果您通过C#使用它并使用Firebird .NET数据提供程序,则仍需安装该数据提供程序并将其注册为可用程序集。 (其中,顺便说一句,正是错误消息告诉你 - 的.NET数据提供程序无法找到或加载) – 2012-02-02 19:33:52

+0

我想办法解决使用Firebird数据库,而无需使用GAC或乱用机.config文件在目标机器上。一个独立的解决方案是必需的,一个简单的安装程序,任何插孔可以安装。 – Craig 2012-02-02 19:54:30

回答

2

你必须虎视眈眈一个zip和FirebirdSql.Data.FirebirdClient.dll复制到bin文件夹。

我不知道你怎么写你的应用程序,它不工作的文件(可能是安装的.msi):)

+0

我正在取得进展,我没有想到随应用程序一起复制这个文件。没有数据提供者错误,只是因为某种原因现在不能连接,需要进一步调查为什么。 – Craig 2012-02-02 21:08:51

+0

确保您的项目引用此dll。你的代码如何与db通信?你怎么可能编译你的代码,但你没有这个.dll? – IamDeveloper 2012-02-03 08:54:16

+0

字符串文件= @ “C:\ Test.FDB;”; FbConnection CON =新FbConnection( “用户= SYSDBA;” + “密码= masterkey;” + “数据库=” +文件+ “数据源= DevMachine;” +“ Port3050;“+”Dialect = 3;“+”Charset = ISO8859_1;“); 尝试 { con.Open(); } 赶上(例外五) { MessageBox.Show(e.ToString()); } – Craig 2012-02-03 17:00:31

1

数据库文件驻留旁边的应用程序的EXE模块。因此,您需要在本地服务器运行或嵌入式服务器上使用数据。对于嵌入式服务器的一组文件被最小(相对specifed到应用程序文件夹):要满刻度服务器

\UDF (folder with UDF needed if any) 
\Intl (with contents from FB installation) 
fbembed.dll 
firebird.msg 
ib_util.dll 
icudt30.dll 
icuin30.dll 
icuuc30.dll 
Microsoft.VC80.CRT.manifest 
msvcp80.dll 
msvcr80.dll 

(即而不是嵌入的)一个文件列表是:

\UDF (folder with UDF needed if any) 
\Intl (with contents from FB installation) 
fbserver.exe or fb_inet_server.exe 
fbclient.dll 
firebird.msg 
ib_util.dll 
icudt30.dll 
icuin30.dll 
icuuc30.dll 
Microsoft.VC80.CRT.manifest 
msvcp80.dll 
msvcr80.dll 
security2.fdb 
firebird.conf (if non default parameters used) 

但那么你就需要在建立服务记录FB 或启动您的应用程序开始之前的应用程序。

安装Firebird作为服务可以使用 instsvc.exe实用程序。相应的命令:

instsvc install -s -a 
    instsvc start 
+0

我将所有这些文件都放在应用程序目录中。我不想运行firebird作为服务,既不将它安装为服务器。 – Craig 2012-02-08 17:30:07

0

你也应该采取的两件事情护理:

  1. 文件名必须是本地文件,而不是从另一台服务器的共享文件夹。

  2. 追加在文件名之前火鸟服务器IP。如果你总是在firebird服务器上运行你的应用程序,或者你正在使用嵌入fbclient.dll,那么它应该像

    FbConnection con = new FbConnection(“User = SYSDBA;”+“Password = masterkey;”+“Database = localhost:“+ file +”DataSource = Dev-VS-W7VM;“+”Port3050;“+”Dialect = 3;“+”Charset = ISO8859_1;“);

一些fbclient.dll版本将允许你不添加本地主机,还是连接的本地文件,或者使用\\servername\c:\filename格式而不是localhost:c:\filename,但它已被弃用,不应该再工作(并可以根据Windows版本运行)。