Board index » delphi » Minimalist deployment of Interbase client applications

Minimalist deployment of Interbase client applications


2005-12-21 02:30:43 AM
delphi25
Hello.
What are the absolute minimum requirements for deploying an Interbase
client application on a "clean" (non-development) machine? My
application was built on Borland C++ Builder 6.0 and uses only the
following components: TIBDatabase, TIBTransaction and TIBQuery. During
development, I used a database name with the TCP/IP scheme, like:
localhost:D:\Ney\Amplestur\DB\ClienteEspecial.gdb
and it worked just fine. However, when I tried running the application
from another machine, substituting the IP of the IB server machine for
'localhost', the connection does not complete (setting the TIBDatabase
component's Connected property to true fails). I wrote a little
installer using NSIS [1] which copies the executable and the gds32.dll
to the installation directory. What else am I missing?
Thank you very much,
--
Ney Andr?de Mello Zunino
 
 

Re:Minimalist deployment of Interbase client applications

What is the exact text of the error message you get?
Are there any errors created in the interbase.log file when the remote
client tries to connect?
Have you opened port 3050 in the firewall on the IB server machine?
Do you have antivirus software running on the server?
Can you ping the server from the client?
--
Bill Todd (TeamB)
 

Re:Minimalist deployment of Interbase client applications

Hi Ney.
Look at ibinstall.defined.net/dl_bin_borl.htm
You must to install the IB Server in order to run your app on "LOCALHOST".
gds32.dll is only the client module.
PS. Sorry for my poor english.
Ricardo Carmo
"Ney Andr?de Mello Zunino" <XXXX@XXXXX.COM>escreveu na mensagem
Quote
Hello.

What are the absolute minimum requirements for deploying an Interbase
client application on a "clean" (non-development) machine? My
application was built on Borland C++ Builder 6.0 and uses only the
following components: TIBDatabase, TIBTransaction and TIBQuery. During
development, I used a database name with the TCP/IP scheme, like:

localhost:D:\Ney\Amplestur\DB\ClienteEspecial.gdb

and it worked just fine. However, when I tried running the application
from another machine, substituting the IP of the IB server machine for
'localhost', the connection does not complete (setting the TIBDatabase
component's Connected property to true fails). I wrote a little
installer using NSIS [1] which copies the executable and the gds32.dll
to the installation directory. What else am I missing?

Thank you very much,

--
Ney Andr?de Mello Zunino
 

Re:Minimalist deployment of Interbase client applications

Como eu e o Bill entendemos sua pergunta diferentemente, deixe-me deixar
claro o que eu pensei:
Se vc quer distribuir sua aplicação, de forma que ela possa rodar em outro
computador, como uma app standalone, sem um segundo computador como servidor
de banco de dados, então o Interbase deve ser instalado de forma completa
nesse computador, ou seja, modulos cliente e servidor (como eu disse antes,
gds32.dll ?apenas o modulo cliente).
Agora, se vc quer que esse outro computador rode sua aplicação, estando o
Interbase Server instalado em outra maquina, vc não pode utilizar LOCALHOST
na propriedade DatabaseName, porque isso diz ao modulo cliente para procurar
pelo servidor na própria máquina.
Resumindo:
Aplicação cliente rodando no micro <A>, e Interbase Server rodando no micro
<B>, temos
DatabaseName = <IP do servidor>:C:\...\SeuArquivo.gdb, e apenas o módulo
cliente do Interbase (gds32.dll e outros poucos arquivos);
Aplicação cliente rodando no micro <A>, standalone (fora da rede, ou sem um
outro micro <B>):
DatabaseName = LOCALHOST:C:\...\SeuArquivo.gdb, mais os módulos cliente e
servidor do Interbase.
P.S: J?sei, deveria ter escrito em inglês, mas releve ok? (brincadeira)
Ricardo Carmo.
"Ney Andr?de Mello Zunino" <XXXX@XXXXX.COM>escreveu na mensagem
Quote
Hello.

What are the absolute minimum requirements for deploying an Interbase
client application on a "clean" (non-development) machine? My
application was built on Borland C++ Builder 6.0 and uses only the
following components: TIBDatabase, TIBTransaction and TIBQuery. During
development, I used a database name with the TCP/IP scheme, like:

localhost:D:\Ney\Amplestur\DB\ClienteEspecial.gdb

and it worked just fine. However, when I tried running the application
from another machine, substituting the IP of the IB server machine for
'localhost', the connection does not complete (setting the TIBDatabase
component's Connected property to true fails). I wrote a little
installer using NSIS [1] which copies the executable and the gds32.dll
to the installation directory. What else am I missing?

Thank you very much,

--
Ney Andr?de Mello Zunino
 

Re:Minimalist deployment of Interbase client applications

It sounds like the server is ok. You do not have to run IB as a service
for remote connections to work. As long as IB is running when you try
to connect everything should work.
I think the problem is on the client. You said you installed the IB
client manually on the client machine. Are you sure that you made the
entry in the Services file correctly? The line should look like:
gds_db 3050/tcp #InterBase default server
If it is the last line in the file make sure there is a blank line
after it. If the services file is correct install IBConsole on the
client and try the communication diagnostics.
Also, make sure that the version of InterBase you are running is the
7.5.1 server version. The Developer Edition that ships with Delphi
2005/6 does not allow remote connections.
--
Bill Todd (TeamB)
 

Re:Minimalist deployment of Interbase client applications

Ricardo Carmo writes:
[primeiro entendimento]
Quote
Agora, se vc quer que esse outro computador rode sua aplicação, estando o
Interbase Server instalado em outra maquina, vc não pode utilizar LOCALHOST
na propriedade DatabaseName, porque isso diz ao modulo cliente para procurar
pelo servidor na própria máquina.
Sim, este segundo ?o entendimento correto de minha solicitação. O que
tenho ?uma aplicação cliente que deve conectar-se a um servidor
Interbase rodando em outra máquina. Durante o desenvolvimento, cliente e
servidor estavam na mesma máquina e, por isso, usei 'localhost' no
endereço. Sei que não faz sentido usar esse nome em uma outra máquina,
pois seria uma referência a ela própria.
O que pode ter acontecido ?que podes ter entendido que eu coloquei
substitu?o IP por 'localhost' quando fui rodar a aplicação na máquina
cliente. Na verdade, disse o contrário: que coloquei o IP da máquina com
o Interbase Server no lugar de 'localhost'. Observa que, em inglês, a
construção com o verbo substituir ?ao contrário do que temos em
português, eg.: "substitute water for wine" significa usar água no lugar
de vinho e não o contrário. Pegadinha de inglês. :)
Quote
Resumindo:
Aplicação cliente rodando no micro <A>, e Interbase Server rodando no micro
<B>, temos
DatabaseName = <IP do servidor>:C:\...\SeuArquivo.gdb, e apenas o módulo
cliente do Interbase (gds32.dll e outros poucos arquivos);
Justamente! A máquina cliente deveria ter a gds32.dll e "outros poucos
arquivos". A pergunta ? que arquivos são esses?
Quote
P.S: J?sei, deveria ter escrito em inglês, mas releve ok? (brincadeira)
Hehehe... Lembras, ? :) Deixa quieto. Claro que me sinto mais
confortável escrevendo em português também, mas ?que existem grupos
cujas regras decretam um idioma (em geral o inglês) como oficial.
Um abraço,
--
Ney Andr?de Mello Zunino
 

Re:Minimalist deployment of Interbase client applications

Bill Todd writes:
Quote
What is the exact text of the error message you get?
The Interbase error code given is 335544721 which, according to the
"Language Reference" document means "unable to complete network request
to host '<host>'". It seems to imply, then, that no request was actually
making it to the server machine, but that is funny, because I can indeed
establish other kinds of communication between them e.g. ping.
Quote
Are there any errors created in the interbase.log file when the remote
client tries to connect?
Running the application on the client machine does not produce anything
in the Interbase log.
Quote
Have you opened port 3050 in the firewall on the IB server machine?
Not explicitly, because I am used to having the firewall warn me about
an external connection attempt, which did not take place. But after
reading your post I did open the Windows (XP Pro + SP2) Firewall and
created an exception rule for TCP connections on port 3050. No luck
still. I tried running netstat -a and there indeed is an entry for
gds_db which is said to be LISTENING. Is there anywhere where I can
check/set the port on which the server will be listening?
Quote
Do you have antivirus software running on the server?
Yes, but in a on-demand basis. So, practically, no.
Quote
Can you ping the server from the client?
Yes, as mentioned above.
For what it might be worth, I have not been running the server
automatically, as the system starts. I have been manually launching it
through the Interbase Server Manager application.
Best regards,
--
Ney Andr?de Mello Zunino
 

Re:Minimalist deployment of Interbase client applications

Ok, here is the simplest possible configuration on the client. I took a
clean install of Win2k Pro, created a dirctory, put IBConsole.exe and
gds32.dll in that directory, added the gds_db entry to the services
file and was able to connect.
--
Bill Todd (TeamB)
 

Re:Minimalist deployment of Interbase client applications

Bill Todd writes:
Quote
It sounds like the server is ok. You do not have to run IB as a service
for remote connections to work. As long as IB is running when you try
to connect everything should work.
Ok, good.
Quote
I think the problem is on the client. You said you installed the IB
client manually on the client machine. Are you sure that you made the
entry in the Services file correctly? The line should look like:

gds_db 3050/tcp #InterBase default server
Oops. I am sorry Bill, but I have not installed an IB client on the
machine where the application is to run. All my installer has put there
is the gds32.dll, which I thought was all that would be needed in order
to connect to the remote Interbase server. As a matter of fact, my
original question was indeed to know what was the absolute minimum
requirements on a client machine in order for it to be able to connect
to remote Interbase servers. Your message seems to indicate that my
current client-side setup is insufficient.
Quote
Also, make sure that the version of InterBase you are running is the
7.5.1 server version. The Developer Edition that ships with Delphi
2005/6 does not allow remote connections.
The Interbase Server Properties tells me my version is "WI-V6.5.0.28".
Right below that, it lists the server's capabilities, which include
TCP/IP client support, so I think I should be fine in that regard.
Thank you very much for your help so far and I hope your patience will
allow you to give me that last push in order to sort out the issue.
Regards,
--
Ney Andr?de Mello Zunino
 

Re:Minimalist deployment of Interbase client applications

Bill Todd writes:
Quote
Ok, here is the simplest possible configuration on the client. I took a
clean install of Win2k Pro, created a dirctory, put IBConsole.exe and
gds32.dll in that directory, added the gds_db entry to the services
file and was able to connect.
Thank you very much, Bill! The services file (of which I had no
knowledge before this thread) was the key! I simply appended the gds_db
entry to it and the application was able to connect to the server!
Thank you very much for your assistance!
Best regards,
--
Ney Andr?de Mello Zunino
 

Re:Minimalist deployment of Interbase client applications

Quote
o Interbase Server no lugar de 'localhost'. Observa que, em inglês, a
construção com o verbo substituir ?ao contrário do que temos em
português, eg.: "substitute water for wine" significa usar água no lugar
de vinho e não o contrário. Pegadinha de inglês. :)
Deixa pra l? Detesto pegadinhas.
Quote
Justamente! A máquina cliente deveria ter a gds32.dll e "outros poucos
arquivos". A pergunta ? que arquivos são esses?
Aquele link que eu passei em meu primeiro "reply" tem alguns instaladores
do IB, e tem também scripts que geram esses instaladores. ?s?olhar os
scripts.
Ricardo.
 

Re:Minimalist deployment of Interbase client applications

I would suggest installing interbase.msg might be helpfull too. If you
never get an errors, all should be fine. If you get an error and
interbase.msg isn't there you might not get the error expected. :-)
Bill Todd writes:
Quote
Ok, here is the simplest possible configuration on the client. I took a
clean install of Win2k Pro, created a dirctory, put IBConsole.exe and
gds32.dll in that directory, added the gds_db entry to the services
file and was able to connect.

 

Re:Minimalist deployment of Interbase client applications

Quote
>P.S: J?sei, deveria ter escrito em inglês, mas releve ok?
mas ?que existem grupos
cujas regras decretam um idioma (em geral o inglês) como oficial.
Vocês podem ver que não ?cobrado tacitamente o uso do inglês.
Porém seu uso permite aos demais participantes acompanhar os problemas
e as soluções.
2. Complementando as respostas: No InterBase 7.5 o instalador possui
opção para client e/ou server.
3. Considere fortemente o upgrade de versão em face de todos os
recursos e performance atuais.
--
Paulo S Palmerio
InterBase Distributor - Brazil
 

Re:Minimalist deployment of Interbase client applications

Try putting interbase.msg in the directory with gds32.dll. I believe
gds32.dll will find it there without a registry entry but you will have
to test this to be sure.
--
Bill Todd (TeamB)
 

Re:Minimalist deployment of Interbase client applications

Quinn,
In such a minimal installation where would you install interbase.msg? or
is there a registry key pointing to it?
Quote
I would suggest installing interbase.msg might be helpfull too. If you
never get an errors, all should be fine. If you get an error and
interbase.msg isn't there you might not get the error expected. :-)

Bill Todd writes:

>Ok, here is the simplest possible configuration on the client. I took a
>clean install of Win2k Pro, created a dirctory, put IBConsole.exe and
>gds32.dll in that directory, added the gds_db entry to the services
>file and was able to connect.
>