Ultimamente tenho recebido alguns e-mails com dúvidas relacionadas à distribuição de aplicações desenvolvidas com banco de dados Firebird. Embora eu tenha respondido os e-mails, achei importante compartilhar essa informação aqui no blog também! Caso outros desenvolvedores tenham a mesma dúvida e encontrem o blog via mecanismos de busca, espero que este artigo sirva como orientação.
Introdução
Infelizmente, não basta apenas copiar os arquivos para o PC do usuário. Além do executável e do arquivo do banco de dados, é necessário distribuir as bibliotecas e os arquivos de configuração utilizados pela aplicação. A seguir, apresento duas modalidades de distribuição de uma aplicação desenvolvida em Delphi com banco de dados Firebird. É bom ressaltar que essas modalidades funcionam apenas para projetos desenvolvidos com os componentes da paleta dbExpress. Para outros conjuntos (IBX, FireDAC, UniDAC…), as bibliotecas podem ser diferentes.
1) Instalação do client do Firebird no computador do usuário
Nessa modalidade, é necessário levar o instalador do Firebird para executar no computador do cliente. Porém, ao invés de rodar a instalação completa, certifique-se de apenas de selecionar a opção que instala os arquivos essenciais (instalação mÃnima), conforme a imagem abaixo:
Instalação mÃnima do Firebird
Esse tipo de instalação já é o suficiente para registrar o Firebird no Windows como serviço ou aplicação e adicionar um Ãcone no painel de controle para controlar o status de execução. Como padrão, a instalação já configura o Firebird para ser executado ao iniciar o Windows.
Além da instalação, o desenvolvedor precisa incluir os seguintes arquivos na distribuição do software:
- Executável da aplicação (.exe);
- Banco de dados (.fdb);
- Biblioteca de conexão: dbexpint.dll no Delphi 7 ou dbxfb.dll no Delphi XE+;
- Biblioteca do Firebird: gds32.dll no Delphi 7 ou fbclient.dll no Delphi XE+;
- midas.dll;
- Arquivos de configuração, caso necessários (INI, TXT, XML).
2) Utilização da versão embarcada do Firebird
Também conhecida como “embedded” (embarcado em inglês), essa modalidade dispensa a instalação do Firebird Client no computador do cliente. Ao invés disso, o desenvolvedor distribui uma biblioteca especial que se comporta como servidor no sistema operacional. Esse pacote do Firebird pode ser encontrado gratuitamente neste link (arquivo compactado).
Caso o desenvolvedor opte por essa modalidade, os arquivos abaixo devem ser distribuÃdos:
- Executável da aplicação (.exe);
- Banco de dados (.fdb);
- Biblioteca de conexão: dbexpint.dll no Delphi 7 ou dbxfb.dll no Delphi XE+;
- midas.dll;
- icudt30.dll;
- icuuc30.dll;
- Arquivos de configuração, caso necessários (INI, TXT, XML).
E o mais importante: na pasta do Firebird Embedded há um arquivo chamado fbembed.dll. Se estiver utilizando o Delphi 7, renomeie este arquivo para gds32.dll ou, no caso do Delphi XE+, renomeie para fbclient.dll. Feito isso, inclua esse arquivo na distribuição também.
Pronto! Ao empregar uma das modalidades acima, a aplicação já poderá ser executada no cliente!
Diferença entre as modalidades
Certa vez, li em alguns sites que o Firebird embarcado é mais lento que o Firebird Client, porém, ainda não tive a oportunidade de medir o desempenho das duas versões. Portanto, não garanto que essa informação é verÃdica. Até o momento, só tenho utilizado o Firebird Client nas minhas distribuições.
Caminho do banco de dados
Alguns desenvolvedores “fixam” o caminho do banco de dados no TSQLConnection
(componente de conexão) em tempo de projeto. Isso implica que, ao distribuir a aplicação para o computador do cliente, é necessário que a mesma hierarquia de pastas utilizada no computador do desenvolvedor seja criada no computador do usuário. Logo, se o desenvolvedor utilizar o diretório C:\Meus Sistemas\Aplicativo\Banco.fdb
 e o fixar no TSQLConnection
, este mesmo caminho deverá ser criado no computador que executará a aplicação. Dependendo do nome das pastas, isso pode soar um pouco inadequado, não acha?
Para resolver isso, há duas alternativas eficientes. A primeira delas é configurar a aplicação para ler o banco de dados no mesmo diretório em que está o executável, utilizando o comando ExtractFilePath
. No exemplo abaixo, se o executável estiver em C:\Aplicativo
, ele irá procurar por C:\Aplicativo\Banco.fdb
:
1 2 3 4 5 6 |
var CaminhoBD: string; begin CaminhoBD := ExtractFilePath(Application.ExeName) + 'Banco.fdb'; SQLConnection1.Params.Values['Database'] := CaminhoBD; end; |
A segunda forma compreende a utilização de arquivos INI para manter a aplicação dinâmica, ou seja, é possÃvel alterar o caminho do banco de dados sem a necessidade de modificar o executável. Por exemplo, o desenvolvedor pode configurar a aplicação para ler o arquivo INI, obter o caminho do banco de dados e atribuÃ-lo ao TSQLConnection
durante a inicialização.
Na prática, a estrutura do arquivo INI poderia ser dessa forma:
1 2 |
[Configuracoes] CaminhoBD=C:\Aplicativo\Banco.fdb |
No Delphi, em algum evento de inicialização (recomendo o evento OnBeforeConnect
do TSQLConnection
), basta utilizar este código:
1 2 3 4 5 6 7 8 9 10 11 12 |
var ArquivoINI: TIniFile; CaminhoBD: string; begin ArquivoINI := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Arquivo.ini'); try CaminhoBD := ArquivoINI.ReadString('Configuracoes', 'CaminhoBD', EmptyStr); SQLConnection1.Params.Values['Database'] := CaminhoBD; finally ArquivoINI.Free; end; end; |
Para mais detalhes sobre como manipular arquivos INI pelo Delphi, confira o artigo neste link.
Bônus: Inno Setup
Se você utiliza o Inno Setup para criar instaladores das suas aplicações, saiba que existe uma linha de comando do Firebird que permite a instalação silenciosa sem intervenção alguma do usuário:
1 |
Firebird.exe /SP- /SILENT |
Basta configurar essa linha de comando para ser executada durante a instalação da aplicação. No entanto, claro, é necessário que o instalador do Firebird seja incluÃdo no instalador da aplicação principal, resultando em um arquivo um pouco maior.
Pessoal, espero que artigo tenha sido útil!
Obrigado pela visita e até a próxima semana!
Parabéns pelo artigo André! Uma boa dica também é colocar o banco de dados no diretório Dados de Aplicativos, eg: “C:\ProgramData\MinhaEmpresa\MeuAplicativo”, principalmente por questões de permissão no Windows (usar a função SHGetFolderLocation pra obtê-la). Outra dica interessante é a utilização de máquinas virtuais com Windows “limpo” antes de enviar para o cliente.
Abraço!
http://www.tiegestao.com.br
Olá, Danilo!
A dica da utilização de máquinas virtuais é plenamente viável! Tinha até me esquecido dessa ideia. Inclusive já fiz uso de máquinas virtuais várias vezes para testar a instação e comportamento do software antes de colocá-lo em produção. Essa “simulação” é bem importante.
Obrigado pela contribuição! Abraço!
Existe algum meio para distribuição de sistema Java Swing com Postgres ?
Meus parabéns pelo trabalho realizado André Luis,conheci sua página hoje mas de agora em diante vou acompanhar sempre.
Um abraço.
Olá, Luciano! Em primeiro lugar, obrigado pela visita!
Luciano, ainda não tive a oportunidade de desenvolver uma aplicação em Java com PostgreSQL, então desconheço os arquivos que são necessários na distribuição. De qualquer forma, notei que muitos desenvolvedores utilizam o InnoSetup para criar instaladores. Talvez essa possa ser a forma mais fácil.
Abraço!
Parabéns André! Excelente artigo. Tenho uma aplicação em Delphi que não roda em rede e faz uso da base de dados Firebird 2.5. Queria migrar para versão embarcada do firebird justamente pela questão das dificuldades do cliente em instalar o aplicativo. Como seria esta questão das versões como: 32-bit embeded, 64-bit embeded. Digo, isto funciona apenas para a minha máquina que vou embarcar esta base de dados? Abração
Olá, Walterlandy! Ótima pergunta!
Se o sistema operacional do seu cliente é 32 bits, então você deve distribuir a versão embarcada nessa plataforma. Na verdade, a maior diferença está nas DLLs que acompanham o pacote embarcado do Firebird. Você pode, então, criar distribuições do seu aplicativo nas duas plataformas, caso necessário. Mesmo assim, vale a pena realizar alguns testes utilizando uma máquina virtual, por exemplo.
Obrigado pelo comentário!
André, tudo ok!
Seguinte meu amigo, baixei a versão embarcada para 64bits. Fiz tudo direitinho, mas na hora de testar na máquina do cliente que por sinal é de 64bits, apresentou este erro:
Exception EIBInterbaseError in module Mapa.exe
at00126E2E. unsupported on-disk structure for file
C:\MAPA\BANCO.FDB; found 11.2, support 11.1
Na máquina do cliente está instalado o Interbase Versão 6.0. Seria a versão do Interbase que deveria ser mais atual?
Abração
Olá, Walterlandy! Esse erro é justamente por causa da incompatibilidade de versões. Vou lhe mandar um e-mail com algumas orientações, ok?
Abraço!
Bom dia Andre! Gostaria de saber se esse artigo se aplica tambem a uma distribuição de uma aplicação desenvolvida com .NET e Firebird. Desenvolvi uma pequena agenda com o Visual Studio 2012 e FB e gostaria de distribuir para uma pessoa. Agradeço a atenção e abraços irmão!
Fala, Grande Reginaldo!
Eu acredito que os arquivos utilizados na distribuição de aplicativos .NET são diferentes. Aliás, as bibliotecas do Firebird provavelmente podem ser as mesmas, já que no site não há distinção da linguagem de programação, porém, as bibliotecas internas do .NET (como a biblioteca de conexão) certamente será diferente.
Uma boa forma de testar é utilizar uma máquina virtual para rodar o aplicativo desenvolvido. Na verdade, é uma forma mais “radical” de descobrir os arquivos necessários, mas é funcional.
Abraço!
Bom dia André!
Parabéns pelo Post. Principalmente a orientação em que nos é ensinado sobre como direcionar a instalação silenciosa do Firebird.
Muito Obrigado.
Olá, Sócrates! Obrigado pelo feedback!
Grande abraço!
Bom dia André, primeiramente parabéns por compartilhar de um modo simples o seu conhecimento, está sendo de grande ajuda.
Uma dúvida, estou fazendo uma aplicação básica com Xe3+Firebird 2.5 Embedded, no meu pc roda normalmente, o banco funciona normalmente, meu problema está sendo na distribuição, segui seu passo a passo e criei o arquivo .ini, está na mesma pasta do meu .exe + o banco + as .dll’s que você passou, ao abrir a aplicação surge um erro dizendo, unavailable database.
Qual caminho devo seguir para corrigir o erro?
Obrigado.
Olá, William! Obrigado pela visita e pelo feedback sobre o blog!
Vou lhe mandar um e-mail solicitando mais detalhes sobre o problema, ok?
Abraço!
Obteve resposta em relação a esse erro?
Olá, Humberto, tudo bem?
No caso do William, bastou renomear o arquivo fbembed.dll (que acompanha a versão embarcada) para fbclient.dll no momento da distribuição. Esse arquivo atuará como “servidor” quando a aplicação for iniciada.
Abraço!
Bom dia André, você enviou o e-mail? Não recebi,
Obrigado.
Sim, William. Enviei utilizando o servidor do blog e talvez possa ter entrado na caixa de Spams. Vou reenviá-lo pelo Gmail, ok?
Abraço!
Caro André, mais uma vez estou frequentando seu espaço!
Estive lendo outros posts, mas como são avançados para mim, não ouso comentar…
Aliás, sobre firebird ainda não sei praticamente nada, porém, ao pesquisar nos buscadores pelo firebird embedded, obviamente o seu blog estava entre os sites encontrados.
Estou começando a desenvolver uma pequena agenda só para aprendizado, e vou utilizar o firebird. Estou pretendendo utilizar o embedded pois em algumas máquinas que poderei rodar a agenda, não há permissão de instalação de qualquer software.
Dois achados hoje! O Firebird Embedded (ótimo para o que pretendo) e a alusão a ele no blog!
Grande abraço e parabéns por mais este post de excelente conteúdo!!!
Olá, Jadilson! É uma grande honra ter mais um comentário seu no blog!
Isso mesmo, Jadilson, o Firebird embedded é útil para situações como a que você mencionou: sistemas operacionais configurados para não permitir a instalação de novos softwares. A versão embedded fornece uma DLL que assume o papel de servidor e dispensa a instalação do SGBD.
Grande abraço!
Parabéns pelo artigo. Simples e objetivo !
Olá, Ricardo! Obrigado pelo feedback sobre o artigo!
Grande abraço!
André é necessário mesmo criar um novo arquivo.ini para a configuração do banco?
Usando os arquivos:
dbxconnections.ini
dbxdrivers.ini
E configurando no: dbxconnections.ini o caminho do banco ja não seria sufuciente?
Estou testando assim em uma máquina virtual mas, mesmo assim continuo com problemas para acessar o banco.
Olá, Adilson. A diferença ao usar o arquivo dbxconnections.ini é que, ao invés de informar o caminho do banco de dados, você estará informando um driver de conexão. Logo, as instruções necessárias para carregar o banco de dados também serão diferentes, como seguem abaixo:
SQLConnection.Close;
SQLConnection.ConnectionName := 'NOME_DO_DRIVER';
SQLConnection.DriverName := 'Firebird';
SQLConnection.LoadParamsOnConnect := True;
SQLConnection.LoginPrompt := False;
SQLConnection.Open;
E, claro, vale lembrar que, neste caso, os arquivos dbxconnections.ini e dbxdrivers.ini deverão acompanhar a distribuição do aplicativo.
Abraço!
Olá André, Parabéns pelas dicas. To com um programa com banco paradox, e quero passar para o firebird. Tem como converter o banco paradox em firebird ou melhor ter um banco firebird pronto e ir transferindo os dados tabela por tabela.
Olá, Emerson, tudo bem?
Infelizmente não tenho conhecimento de alguma ferramenta que automatize a conversão de banco de dados Paradox para Firebird. De qualquer forma, mesmo se conhecesse, eu optaria por desenvolver um aplicativo exclusivo para realizar a migração de dados (também conhecidos como “De-Para”). Através dele, seria possÃvel transformar alguns dados da origem para serem gravados no destino como, por exemplo, conversões para maiúsculas, concatenações e/ou adaptações, semelhante a um processo de ETL. Além disso, o desenvolvedor poderia exportar o andamento da migração em um arquivo de log, como também controlar possÃveis exceções.
Espero ter ajudado! Abraço!
Bom dia amigos, excelente publicação. Já criei meu instalador pelo Inno Setup, onde ele instala a aplicação + firebird + drivers ODBC, tudo de forma silenciosa sem intervenção do usuário. Preciso agora embutir no Inno Setup o registro da midas.dll mas não estou conseguindo. Podem me ajudar?
Olá, Marcello, tudo bem?
Na época em que gerei os instaladores para as minhas aplicações, eu sempre configurava o Inno Setup para copiar a biblioteca “midas.dll” para a mesma pasta do executável sem algum comando adicional para registrá-la. Acredito que o registro dessa DLL não seja necessário. Experimente fazer o teste!
Abraço!
Boa tarde Marcello. Como alternativa ao midas.dll, eu declaro na seção uses do meu form principal a unit midaslib, e tem funcionado corretamento comigo, sem a necessidade de copiá-la no diretório do meu projeto.
Ótima dica, Juliano!
Conheci essa opção há pouco tempo e realmente me ajudou.
Muito obrigado pela colaboração!
Abraço!
Pessoal, eu estava querendo saber como verificar se já existe uma versão do Firebird instalada no micro (pois a instalação é silenciosa), então achei o seguinte para se colocar no projeto do Inno Setup, testei e deu certo aqui:
[Run]
Filename: {tmp}\SETUP_LINX\firebird-2.0.4\Firebird-2.0.4.13130_0_win32.exe; Description: Firebird Server; WorkingDir: {tmp}; StatusMsg: Aguarde… Instalando / Configurando Firebird 2.0.4; Parameters: “/VERYSILENT /NOICONS /COMPONENTS=””SuperServerComponent, ServerComponent, DevAdminComponent, ClientComponent”” /FORCE /COPYFBCLIENT”; Flags: waituntilterminated 32bit skipifdoesntexist; Components: Sistema; Check: VerificaFirebirdInstalado
[Code]
function VerificaFirebirdInstalado : Boolean;
begin
Result := not RegKeyExists(HKEY_LOCAL_MACHINE, ‘SYSTEM\CurrentControlSet\Services\FirebirdServerDefaultInstance’)
if not Result then
begin
MsgBox(‘Já existe uma instância do Firebird instalada’#13’neste computador. O firebird não será instalado.’, mbInformation, MB_OK);
end
{endIf};
end;
Obrigado por compartilhar, Marcello! Ótima dica!
Grande abraço!
Resumida e a melhor definição sobre como usar arquivos ini inclusive pude adaptar com FireDAC e Firebird no Delphi XE6. E olha que vasculhei muito na net. Coloquei minha contribuição para o conhecimento da coletividade em meu perfil no facebook.
https://www.facebook.com/timanagement/posts/774535579283876:0
Opa, Alexandre, fico contente que o artigo tenha lhe ajudado!
Agradeço pelo feedback e por compartilhar o artigo no Facebook!
Grande abraço!
Boa tarde André Luiz
parabéns pela dica a qual segui, usando arquivo.ini
[SISINFO]
PATH_BANCO=C:\SISINFO\FB\dbSISINFO.gdb
PASSWORD=masterkey
USER_NAME=SYSDBA
Quando executo da a seguinte mensagem:
—————————
Application Error
—————————
Exception EDatabaseError in module SISINFO.EXE at 000F28B1.
Unable to complete network request to host “@1”.
Failed to establish a connection.
Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente.
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements
Error Code: 401.
O que estou fazendo errado?
Obrigado.
Olá, Mauro!
Em primeiro lugar, obrigado pela visita e pelo comentário no blog!
Mauro, eu acho que pode ser uma dessas causas:
1) A propriedade Connected do TSQLConnection deve estar configurada como False em tempo de projeto para que a conexão seja feita em tempo de execução.
2) Talvez o problema seja o evento que você esta utilizando para fazer a conexão. Eu sugiro o evento OnBeforeConnect.
Espero que lhe ajude!
Bom Dia, André Luis.
Realmente, a propriedade Connected do TSQLConnection estava configurada como True.
Acertou na “mosca”
Obrigado.
Boa Noite, André.
Realmente a distribuição do aplicativo com a instalação silenciosa do Firebird, para mim, tem sido um problema. No caso do terminal cliente, basta colocar a dll gds32.dll ou fbclient.dll em ‘C:\Windows\System32\’. Normalmente funciona. Mas quando a instalação é do servidor usando o instalador normal no win7 ou 8 sempre tive de configurar como aplicação e não colocar o link no painel de controle.
Como serviço não funciona e o link no painel de controle causa um erro (não abre o painel), configuro o servidor manualmente. Ainda não consegui usar o embedded porque não achei como configurar esses parâmetros nem com o Inno ou InstallShield.
Eu uso um arquivo INI para configurar o local do servidor para os terminais cliente, assim realmente fica mais fácil a instalação.
Há pouco tempo alguns Bancos estão usando o Firebird em suas aplicações. Isso tem causado problema, talvez pela versão. Eu ainda uso a 1.5 e não gostei da 2.5, então estou tendo que desinstalar as duas versões do FireBird e reinstalar a minha. Um dos bancos é Banco do Brasil.
Detalhe: como comecei a criação do software muitos anos atrás, iniciei usando Paradox. Com o tempo mudei para o Firebird usando o componente BDE e ainda uso. Entre mudar para o DBX, Interbase ou agora o FireDac XE7, fica difÃcil decidir. Entre o BDE e o DBX a performance não muda muito. O componente Interbase estou usando em alguns programas que exigem maior velocidade. Os testes com o FireDac + Firebird não foram satisfatórios para mudar todo o acesso a base de dados.
Realmente estou pensando em mudar para outro tipo de SGBD, para facilitar a distribuição, performance e compatibilidade com aplicações para mobile.
Obrigado pela atenção e as dicas que tem dado.
PS: Eu já passei por varias situações colocadas aqui.
Olá, Gerson!
Obrigado pelo depoimento. O Firebird realmente possui uma incompatibilidade com as versões mais novas do Windows, exigindo que a configuração seja feita manualmente. A respeito da versão embedded, no InnoSetup ou InstallShield, basta copiar os arquivos embarcados para a mesma pasta do executável. A DLL fbclient.dll se comportará como servidor quando a aplicação for iniciada.
Bom, Gerson, quando eu migrei do BDE para dbExpress, observei um relativo ganho de performance, principalmente nas consultas. O FireDAC, por sua vez, traz uma arquitetura mais robusta com SGBDs, mas ainda não tive oportunidade de utilizá-lo para monitorar o desempenho. Quando possÃvel, pretendo testá-lo e elaborar um artigo sobre essa tecnologia.
Abraço!
Ola, boa tarde, André.
Desculpe pela extensão deste comentário e de outros, mas esta matéria é realmente relevante.
Abraço!
Olá, André.
Qual ferramenta você recomenda para trabalhar com FB?
Olá, Gerson!
Eu gosto muito do IBExpert. É bem prático e produtivo. Clique aqui para conhecê-lo melhor!
Abraço!
Olá, André, tudo bem?
Estou usando o IBExpert, realmente é muito bom, obrigado pela dica.
Mas, outro detalhe quase nesse tópico, como usar MySQL com FireDac, criei uma base teste no freewha, mas não consegui acessar a base.
Bem foi a primeira tentativa, nunca usei MySql.
Abraço!
Olá, Gerson!
Ainda não tive a oportunidade de fazer uma conexão com o MySQL usando os componentes do FireDAC. Se eu souber de algum tutorial ou alguma dica, envio no seu e-mail!
Abraço!
Obrigado.
Ele dá uma mensagem de erro inconsistente, mesmo definindo o local da library, tipo “c:\Windows\system32\libmysql.dll”. Retorna algo assim: “c:\Windows\system32\bin\c:\Windows\system32\libmysql.dll, caminho inválido”. Parece mais erro do componente. Mesmo não sabendo usar acho estranho.
Provavelmente existem outros componentes para isso, com Firebird tudo bem, mas é recomendado o FireDac (pode ser modismo). Temos que experimentar.
Abraço!
Que estranho, Gerson.
Pela mensagem, o caminho da biblioteca indicado no componente de conexão está incorreto. Observe que há 2 caminhos concatenados, pois o “C:\” aparece 2 vezes. Eu começaria por verificar essa propriedade e corrigi-la.
Outra alternativa é colocar as bibliotecas do MySQL na mesma pasta do executável para facilitar a vÃnculo.
Boa sorte!
Procurei nos componentes e no código, não achei nada duplicado, coloquei a biblioteca junto com o app, corrigi o caminho, nada.
Mas quando executei o XE7 como adm, esse erro não foi mostrado mais, vou mudar a Hospedagem do BD e tentar novamente.
Obrigado.
Certo, Gerson!
Olá, André.
Na pesquisa que estou fazendo, para um melhor SGBD, e melhorar o FB, descobri que a partir da versão 2.5.4 do Firebird foi incluÃda uma terceira opção, além de “Super Server” e “Classic”, temos o “Super Classic”.
Esta opção não aparece no menu inicial, mas depois de selecionar “Classic”, tem a opção pelo “Super Classic”.
Qual a vantagem?
Enquanto o “Super Server” só consegue trabalhar com uma CPU, em um Quad-Core, o “Super Classic” trabalha com todas, distribuindo o processamento em todas as CPUs disponÃveis. Testei e realmente funciona.
Ainda não fiz grandes testes de performance (rede com vários usuários). Devo instalar para uso em um i5 3º geração, 4 GB memória, 160 GB HD SSD, XP SP3, rede e Switch Gigabit.
Nesta máquina, com FB 2.5.0 “Super Server”, o uso de CPU atual é 57% em media, com 15 terminais. Vou colocar a 2.5.4, pois foi essa que testei.
Vou fotografar o uso de CPU antes e depois em plena carga (loja cheia). Vamos ver.
Abraço!
Olá, Gerson!
Bem interessante a sua pesquisa! Obrigado por compartilhar!
Quando instalo o Firebird em meus clientes, realmente reparo nas diferentes opções de instalação disponÃveis, mas nunca tive a oportunidade de procurar a diferença entre elas. De acordo com a sua pesquisa, o “Super Classic” pode trazer bons ganhos de performance quando utilizado em um ambiente multiusuários ou que tenha uma grande massa de dados. A vantagem, claro, é a redução de tempo nas solicitações ao banco de dados.
Boa sorte na continuidade da sua pesquisa! Abraço!
Oi André!
Escuta, se no cliente o sistema operacional for de 64bits, então levo a versão embarcada de 64bit? Da mesma forma vale para o de 32bits?
Exatamente, Walter!
A versão embarcada 32bits é diferente da versão 64bits. Veja que no site do Firebird os downloads são agrupados por plataforma:
http://firebirdsql.org/en/firebird-2-5-1/
Abraço!
Olá André,
Considerando que eu já tenho o servidor Firebird (dedicado) e a minha aplicação (client) instalada com todas as suas respectivas DLLs faltando somente o cliente do Firebird, daà se eu copiar para essa máquina somente a DLL gds32.dll do Delphi 7 vai funcionar? Fiz uns testes dessas forma mas não deu certo. Tem como fazer assim?
Grato e aguardo seu comentário.
Olá, amigo, tudo bem?
Embora eu nunca tenha feito este teste, acredito que realmente não funcionará. Será necessário instalar o cliente do Firebird para que os demais arquivos essenciais e as chaves no registro sejam criados.
Abraço!
Olá André, bom dia.
Entendido.
Apesar do seu comentário, eu já ouvi falar que alguns desenvolvedores trabalham assim, mas com dito anteriormente, eu não consegui (ainda).
Muito obrigado pela sua atenção e parabéns pela matéria.
Certo!
Se você encontrar uma orientação de como fazer dessa forma, me avise!
Será um aprendizado para mim também.
Obrigado. Abraço!
Pode deixar.
Forte abraço!
Olá André, bom dia, estou com uma problema espero que possa me ajudar fiz uma aplicação Delphi Berlin, FireDac e Firebid 3.0 quando tento rodar esta aplicação em outra maquina ela roda mas os DBgrids ficam brancos e nao apresentam nenhum erro de conexão, declarei MidasLib na uses do meu projeto ja coloquei dlls FBClient 32 e 64 mas ainda permanece o problema, não sei mais o que fazer, tem alguma idéia do que seja?
Boa noite, Gabriel, tudo bem?
Que situação estranha. Vou entrar em contato, ok?
Abraço!
oi Andre
Parabens muito bom seus artigos.
Andre voce sabe me informar como consigo a lista contendo todas as exceptions do firedac?
Abracos
Olá, José, tudo certo?
Não tenho certeza, mas acho que há uma lista de erros no método “FDGetErrorMessage” da unit FireDAC.Stan.Error. Confira lá!
Abraço!
Amigo André, preciso tirar uma dúvida. Bom dia.
Tenho um servidor que atualiza os pdvs. Por exemplo:
PDV1_COMPUTADOR=LOCALHOST
PDV1_DATABASE=C:\Sadm_Gestor\PDV\BD\DATPDV.FDB
Mas o problema é na outra máquina em rede:
PDV2_COMPUTADOR=LOCALHOST
PDV2_DATABASE=\\192.168.15.240\f\Sadm_Gestor\PDV\BD\DATPDV.FDB
caminho do banco está ok, mais acho que o localhost está errado, tenho que colocar localhost mesmo?
digo para acessar outra máquina.
Olá, FabrÃcio, como vai?
O “localhost” deve ser informado somente no servidor. Nos terminais da rede, se você informar “localhost”, a aplicação tentará conectar-se a um banco de dados na própria máquina, ao invés de buscar o servidor. Portanto, para que isso não ocorra, deve-se substituir o “localhost” pelo IP do servidor obedecendo a sintaxe:
Veja um exemplo de conexão:
Abraço!
Obrigado pela resposta. No meu caso fiz assim Server: 192.168.0.240 e caminho c:\aplicativo\banco.fdb ,
São varios pdvs e um servidor enviando atualizações e trazendo também. Essa configuração está dentro de um arquivo Ini. Deus abençoe.
Legal, FabrÃcio.
A configuração é essa mesma! 😉
Boa sorte no projeto. Abraço!
Olá, excelente artigo!
Estou com um problema e pensei que talvez alguém possa me ajudar. Fiz uma programa usando delphi 7 e interbase 6.5, todavia não estou conseguindo executá-lo sem antes fazer o login no ibconsole. Isto acontece tanto na minha máquina (a que eu fiz o programa) quanto no pc que eu a instalei.
Alguém tem uma solução pra isso?
Detalhe: meu notebook usa o sistema operacional windows 7 e a máquina que eu instalei o programa possui o windows 8.1.
Obrigado!
Olá, Filipe, tudo bem?
Experimente configurar a propriedade LoginPrompt do seu componente de conexão (TIBDatabase ou TSQLConnection) para False.
Obrigado pelo feedback!
Abraço!
Olá André, parabéns e obrigado por compartilhar seu código. Estou desenvolvendo uma aplicação em Delphi com Firebird e quero que ela seja capaz de ser executada a partir de qualquer lugar que ela seja instalada, desde que a base de dados e todas as DLLs necessárias estejam na mesma pasta do executável. Eu gostaria de definir essas configurações via código, sem usar o arquivo INI, já que o executavel irá procurar pelo banco de dados dentro de \Database\banco.fdb. O Firebird que estou usando é a versão Embedded, pois minha aplicação não precisa ser usada em rede. Minha intenção é que a aplicação possa ser executada de um pendrive por exemplo, para isso gostaria de pedir sua ajuda pois não estou conseguindo. Estou usando componentes FireDAC. Se preferir, meu email é [email protected]. Desde já agradeço pelo seu tempo.
Opa, muito obrigado, Bruno!
Vou entrar em contato com você para ajudá-lo na codificação dessa funcionalidade.
Abraço!
Olá André.
Muito bom esse teu post. Quero parabenizá-lo por ele.
Agora quero te perguntar, como seria essa conexão em um cliente, usando o FireDAC do XE+? Quais os arquivos necessários que eu teria que copiar para
a maquina do cliente e quais as configurações necessárias a mais para funcionar a aplicação?
Se puder me responder eu agradeço desde já.
Abraços.
Olá, Reginaldo, tudo bem?
Ainda não tive a oportunidade de distribuir uma aplicação em produção com o FireDAC mas, mesmo assim, acredito que apenas a DLL cliente do banco de dados será necessária. No Firebird, por exemplo, esse arquivo é chamado fbclient.dll.
O nome da DLL pode ser encontrado na aba “Info” da janela FireDAC Connection Editor (TFDConnection).
Abraço!
Bom dia, André. Obrigado pelo seu retorno, realmente pelos teste que fiz foi necessário somente o fbclient.dll.
O que percebi, foi que na máquina client tive que instalar o Firebird como Aplicação para poder funcionar. Posso estar equivocado mas foi desse maneira que funcionou.
Mesmo assim obrigado pelo contato e sucesso.
Olá, Reginaldo!
Eu que agradeço por retornar ao blog e escrever este comentário!
Já presenciei alguns casos em que o Firebird só funcionava como aplicação também. Eu acredito – mas não tenho certeza – que isso está relacionado com as novas polÃticas de segurança do Windows ou com bloqueios do Firewall/antivÃrus.
Abraço!
Boa noite, André. Tenho um programa que fiz há muito tempo, ainda no tempo do dbf, clipper e depois Delphi 7. Hoje o programa esta em Delphi 10.2, uso o SQLite como banco de dados e na aplicação uso o FireDAC para acessar os dados. Na minha CPU não tenho problema, ele roda ok. Mas se instalar em outra CPU ele não me da acesso ao FireDAC. O Nome do programa é Arvore.exe.
Mensagem: “Exception ESQliteNativeException in modulo arvore.exe at 00274C26 [FireDAC][Phys][SQlite] Error: Unable to open database file.”
Se puder me ajudar fico muito grato.
Olá, MaurÃcio, tudo bem?
A princÃpio, a mensagem indica que o arquivo do banco de dados não foi encontrado ou o driver para SQLite não está instalado. Além disso, este erro também pode estar relacionado com polÃticas de segurança do Sistema Operacional, como Firewall ou UAC, ou programas de terceiros, como antivÃrus.
Em alguns casos especÃficos, é necessário executar a aplicação como Administrador para que ela tenha acesso à algumas camadas do SO.
Verifique essas configurações que mencionei. Caso não tenha sucesso, envie um e-mail para [email protected].
Abraço!
Bom dia estou com o mesmo problema e não consegui achar a solução se puderem me ajudar agradeço muito estou correndo contra o tempo.
Desculpem o incomodo!
Olá, Cristiano.
Vou entrar em contato!
Bom dia, André!
Excelente explicação. Conseguir realizar toda a operação tranquilamente, meu programa está rodando em rede tranquilo. Mas como eu Utilizo o Delphi XE8, teve uma pequena modificação no código de localizar o Arquivo.INI.
Ao invés de ficar Application.ExeName, ficou ParamStr(0). Não sei bem o porque o Delphi XE8 não tem o ExeName, mas achei bom passar essa experiência para frente! Abraço!
Olá, Roberto, tudo bem? Obrigado pela contribuição!
A propriedade
Application.ExeName
existe em todas as versões do Delphi. Talvez faltou a referência à unitVcl.Forms
, no qual fornece acesso à essa propriedade.De qualquer forma, na minha opinião, a função
ParamStr
é mais viável. Continue usando ela!Abraço!
Olá, André, tudo bem sim! Realmente faltou a referência à unit! Fiz um teste aqui e funcionou, mas voltei com o ParamStr!
Obrigado pela dica! Abraço!
Obrigado pelo retorno, Roberto.
Abração!
Andre, parabéns pelo conteúdo, me ajudou bastante.
Estou com um probleminha na distribuição do meu sistema. Uso database firebird com firedac.
No computador base, ele roda 100%.
Em outra maquina, instalando, ele dá erro (254).
Gostaria que você pudesse me ajudar, por que ja pesquisei, preenchi o driverid, criei um arquivo .ini, copiei o fbclient.dll para junto do executável. E mesmo assim dá erro.
Preciso de ajuda, por favor.
Olá, Tiago, boa noite!
Vou entrar em contato com você para solicitar mais detalhes.
Abraço!
André,
Quando se trabalha com esse tipo de aplicação não precisa colocar “localhost/3050: ” e depois o caminho?
Olá, Victor!
Não é necessário adicionar “localhost/3050” ao caminho do banco de dados, desde que a porta 3050 esteja liberada no firewall do sistema operacional.
Abraço!
Quando se trabalha com a opção embarcada tem algum limite de acesso de pessoas ao mesmo tempo?
E tem alguma forma de inserir as DLLs dentro do executável?
Boa noite, Victor.
Não existe um limite de acesso de usuários na opção embarcada. Porém, vale ressaltar que, quantos mais usuários estiverem conectados ao banco de dados, menor será a performance. Neste caso, eu sugiro que use a opção não embarcada ou, em ambientes com mais concorrência, migrar para um SGBD mais robusto.
Respondendo à segunda pergunta, infelizmente não é possÃvel acoplar as DLLs dentro do executável. A única exceção é a “midas.dll”, que pode ser embutida no executável ao declarar a referencia “MidasLib” na seção uses do projeto.
Abraço!
Amigo após a instalação do flame Robin para trabalhar com firebird, ele não aparece o local host e não deixa criar e nem registrar uma base de dados, por que isso ocorre no flame Robin?
Olá, Edivaldo, boa noite!
Infelizmente não tenho experiência com o Flame Robin. Para Firebird eu tenho usado somente o IBExpert e EMS.
Experimente utilizar um deles. Dessa forma conseguiremos identificar se o problema está no Flame Robin ou no localhost do PC (talvez a configuração do hosts).
Abraço!
Valeu amigo, muito obrigado.