2012-02-02 2 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

Я также попытался скопировать кучу других файлов в каталог приложения, а также размещения fbclient.dll в C: \, c: \ windows, c: \ windows \ system.

Я также попытался установить установку клиента без радости.

Есть ли способ, которым я могу использовать базу данных firebird, без ручного редактирования файлов machine.config или использования gac и прохождения через ад, который я прошел, чтобы установить firebird на dev-машину? Я хочу приложение, которое пользователь может установить, не требуя, чтобы он был установлен разработчиком.

Обратите внимание, что приложение, которое я пишу, предназначено для отдельной машины, однопользовательской среды, которая знает, как дважды щелкнуть кнопку установки, с охватом внимания комара, который, если требуется, сделать более чем двойной щелчок установите, а затем нажмите 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

Немного не хватает здесь. Конечно, вы можете использовать copy/paste для получения точного сообщения об ошибке. Если вы не можете использовать copy/paste, скопируйте его vertbatim. –

+0

Копирование файла 'FBClient.dll' в папку вашего приложения является лишь решением, если вы используете API-интерфейс клиента напрямую. Если вы используете его через C# и используете поставщик данных Firebird .NET, вам все равно придется установить этот поставщик данных и зарегистрировать его как доступную сборку. (Который, BTW, это то, что сообщение об ошибке говорит вам, - что поставщик данных .NET не может быть найден или загружен.) –

+0

Я хочу решение использовать базу данных firebird без использования GAC или беспорядок с машиной .config на целевой машине. Требуется автономное решение с простой установкой, которую может установить любой разъем. – Craig

ответ

2

Вы должны грейферы с zip и скопировать FirebirdSql.Data.FirebirdClient.dll в папку бин.

Интересно, как вы написали приложение, что он работает без файла (вероятно, установлен .msi) :)

+0

Я продвигаюсь вперед, я не думал о том, чтобы копировать этот файл вместе с приложением. Отсутствие ошибки поставщика данных, по какой-то причине просто не будет подключаться, необходимо дополнительно исследовать причины. – Craig

+0

Убедитесь, что ваш проект ссылается на эту DLL. Как ваш код взаимодействует с db? Как это возможно, вы могли бы скомпилировать свой код, и все же у вас его нет .dll? – IamDeveloper

+0

string file = @ "C: \ Test.FDB;"; FbConnection con = new FbConnection ("User = SYSDBA;" + "Password = masterkey;" + "Database =" + file + "DataSource = DevMachine;" + " Port3050; "+" Dialect = 3; "+" Charset = ISO8859_1; "); try { con.Open(); } catch (исключение e) { MessageBox.Show (e.ToString()); } – Craig

1

Файл базы данных находится рядом с ехом модуля приложения. Таким образом, для работы с данными необходим локальный сервер или встроенный сервер. Для встроенного сервера минимальный набор файлов (относительно предписанных в технических заданиях папку приложения):

\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

0

Также вы должны позаботиться о двух вещах:

  1. FileName должен быть локальный файл, а не в общей папке с другого сервера.

  2. Добавление IP-адреса Firebird перед именем файла. Если вы используете приложение всегда на сервере 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, но она устарела и не должна работать больше (и может работать в зависимости от версии окон).

 Смежные вопросы

  • Нет связанных вопросов^_^