Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Versiones Firebird en diferentes windows y en linux con wine (https://www.clubdelphi.com/foros/showthread.php?t=66421)

rrf 18-02-2010 23:36:08

Versiones Firebird en diferentes windows y en linux con wine
 
Hola.

Estoy haciendo 2 programas en los que uno usa firebird instalado y el otro lo usa como embedded.

Supuestamente estos programas se usarían en windows (aunque no se sabe si será XP, Vista o 7) y posiblemente en Linux con Wine.

El desarrollo y las pruebas de los programas las hice en win XP SP3 usando Firebird 2.0.0 y todo funcionaba bien.

Pero cuando lo probé en windows 7 (la versión de evaluación que regalaron el año pasado antes de comercializarlo y que expira en Junio de 2010), no funcionaba Firebird.

Lo cambié a la versión 2.0.5 y tampoco funcionó. Luego con la versión 2.1.3 funcionó correctamente.

Como la 2.1.3 también funcionaba bien en win XP, pensé que simplemente debería cambiar a esta versión y todo resuelto.

Continué con las pruebas y probé en Linux (Ubuntu 9.10 con Wine, creo que la versión 1.0). Ahí falló Firebird 2.1.3. Como anteriormente había hecho pruebas con la versión 2.0.0 de Firebird y me había funcionado correctamente, repetí y me dí cuenta de que iba bien.

Con ello, la situación es que Firebird 2.1.3 funciona bien en Win XP y 7 no funciona en Ubuntu con Wine. Por otro lado, Firebird 2.0 que va bien con Ubuntu con Wine, no funciona con Win 7.

La pregunta es: ¿Hay alguna forma de hacer que una sola versión de Firebird funcione en todos los posibles sistemas operativos (de Win XP en adelante y en Linux con Wine)?.

Muchas gracias de antemano.

Ramón.

guillotmarc 19-02-2010 10:29:01

Hola Ramon.

Bajo Windows Vista y Windows 7 no funciona el protocolo local de Firebird 1, 1.5 y 2.0. En Firebird 2.1 implementaron un nuevo protocolo local para que funcione en las nuevas versiones de Windows.

Así que para Firebird 2.0x solo tienes que utilizar el protocolo de red, es decir simplemente pon un localhost: al principio de tu cadena de conexión.

Respecto a Firebird bajo Ubuntu, ¿ haces correr Firebird bajo Wine ?. Firebird tiene una versión nativa para Linux, por lo que lo mejor que puedes hacer es instalar el Firebird nativo para Linux (ya sea 2.0x o 2.1x, tienes ambos disponibles) y ejecutar tu aplicación Delphi bajo Wine, accediendo al servidor Firebird nativo de Linux (nuevamente vas a tener que acceder con el protocolo de red y no el local, es decir con un localhost: al principio de la cadena de conexión).

El problema de Firebird 2.1 en Linux es por culpa de las Microsoft C++ Runtime. En la versión (msvcr80.dll y msvcp80.dll) ya no se pueden copiar simplemente en la carpeta de tu aplicación, sino que necesitan un archivo Microsoft.VC80.CRT.manifest de registro, y se recomienda que se instalen con el vcredist_32 o vcredist_64 de Microsoft.

http://www.firebirdsql.org/rlsnotesh...ll2-win-mslibs

En Windows, se instalarían con el instalador de Microsoft, pero en Wine supongo que será mejor hacerlo con Winetricks, por lo que veo tienen un script el Microsoft C++ Runtime 2005.

http://wiki.winehq.org/winetricks

NOTA: Suerte que Microsoft ya se ha dado cuenta de la cagada y en su último C++ han vuelto a los orígenes, de forma que las dll's del runtime ya se pueden simplemente copiar junto a tu aplicación. Esperemos que las nuevas versiones de Firebird las utilicen pronto.

Saludos.

rrf 21-02-2010 15:10:12

Encontré una solución sencilla
 
Hola guillotmarc.

Muchísimas gracias por tu detallada respuesta.

Me aclaró la situación, aunque lamentablemente no pude aprovechar tu información directamente. No logré encontrar un lugar de descarga para msvcr80.dll y msvcp80.dll. Por cierto, comentarte que los archivos que utilizaban las versiones de Firebird que usé eran msvcr71.dll y msvcp71.dll

Por otra parte, probé a añadir, antes de la trayectoria hasta la base de datos, "localhost:" y "127.0.0.1:" pero siempre me salía un error indicando que no se había podido acceder a los datos porque la conexión había sido rechazada.

También estuve viendo lo de Winetricks, pero no llegué a probarlo porque hay una cosa que no mencioné en mi mensaje inicial y que hace que esta opción la desechara: el programa debe ser usado por usuarios que no conoceré personalmente y que, muy posiblemente, deberían tener unos conocimientos de informática de principiantes. Por ello, todo lo que se vaya a hacer debe hacerse de forma "automática".

También por ello, lo ideal es que la instalación en Linux bajo Wine sea idéntica a la que se haría en Windows. Y por ello Firebird, en Linux, se instalaría desde Wine.

Total, que me puse a probar otras opciones y encontré una solución que incluyo por si le sirve a alguien.


La versión 2.0.5 de Firebird
(descargable desde http://www.firebirdsql.org/index.php?op=files&id=engine ) funciona tanto en Linux (con Wine) como en Windows 7. Y funciona bien con Firebird instalado y con Firebird Embedded.

Por si a alguien le puede ser útil, comentar que el archivo "fbembed.dll" debe renombrarse a "gds32.dll" para que vaya bien en la versión embedded.

Usé Delphi 7, con las IBX versión 7.04.

De nuevo gracias guillotmarc.

Salu2 a to2.

Ramón

rrf 22-02-2010 10:53:59

Aclaración
 
Hola.

Tras releer el post, veo que hay una contradicción entre lo que comento en la anterior respuesta y la pregunta inicial.

En la pregunta inicial digo que no me funcionó Firebird 2.0.5 con Windows 7 y en la anterior respuesta digo lo contrario.

No se cual es el error. Quizás me equivoqué en la pregunta inicial y realmente no probé FB 2.0.5, sino que solo lo hice con FB 2.0.0.

Bueno, lo que sí que tengo seguro es que para escribir la anterior respuesta sí que hice las pruebas con Windows 7 (en 2 ordenadores diferentes) y me funcionó bien.

Y también lo probé en Linux (Ubuntu con Wine) y también funcionó bien.

Debo aclarar que las pruebas fueron sencillas, abrir una base de datos y una tabla y moverme por los registros simplemente.

Creo que hay pocas posibilidades de error, aunque puedo haberme despistado de algo.

Ramón


La franja horaria es GMT +2. Ahora son las 11:05:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi