PDA

Ver la Versión Completa : Ejecutable envía problema en windows xp


novato_erick
27-07-2011, 01:45:48
Gracias por atender las solicitudes anteriores en este foro:

Agradezco a oscarac y ecfilsa por siempre responder a mis dudas.

Esta vez es algo diferente, después de haber realizado las modificaciones y ejecutado en mi pc de Desarrollo la aplicación "Creo" que está lista para ser instalada en otra maquina el cual no tenga instalado el Delphi (Terminal Cliente).

Mi aplicación consiste en un sistema Cliente Servidor utilizo los componente estandar de delphi, el unico es fastReport(este no) ver 4.10.18 tambien utilizo Firebird 2.5 y para conectar un dbExprees:

en el componente dbe de conexión tengo esto: 192.168.10.1:c:\bd.fdb
probé utilizando el nombre del servidor: desarrollo:c:\db.fdb

no tengo ningun problema desde mi maquina de desarrollo compila muy bien

pero al llevarme el exe al la otra terminal adivinen: "windows a detectado un problema y la aplicacion debe cerrarse" y la frase muy comun de windows: "desea enviar" si o no.

los dll por lo general copio en sistem32 mida.dll, fbclient.dll, dbxfb.dll.

Alguien tiene alguna idea de como resolver este problema?


Saludos a todos

Caral
27-07-2011, 01:50:24
Hola
Es curioso, no deberia de dar ningun problema si en un ordenador funciona en el otro deberia igual.
Si los dll estan en sistem32 y la direccion IP es la correcta deberia de funcionar.
Ahora:
Si la direccion esta en el codigo tal vez por ahi este el problema.
Yo usaria un INI.
Saludos

novato_erick
27-07-2011, 01:58:11
La conexión no esta en el código para nada desde las propiedades del mismo componente dbexpress asigno la ruta.


que sugerencia me harias con respecto al *.ini


Gracias...

Caral
27-07-2011, 02:04:22
Hola
Si la conexion esta en el componente, esta DENTRO del codigo, osea del EXE.
No conozco los componentes DBExpress pero me imagino que usara la direccion por medio de un String, como otros, si es asi, sigo insistiendo, la mejor manera es un archivo INI.
Revisa el archivo adjunto, es un INI.
Saludos

novato_erick
27-07-2011, 16:52:30
caral

disculpa por no haber respondido el día de ayer ya que me quede dormido tratando de resolver el problema de mi ejecutable.

Lo que queda es crear una unidad para realizar el archivo ini eso es lo que sugieren. Estoy equivocado?

favor ilumina....

Saludos

Caral
27-07-2011, 17:05:37
Hola
Si me explicas como haces la conexion con la BD (ya que no conozco los componentes ) podre guiarte con el INI.
Saludos

novato_erick
27-07-2011, 17:30:20
simplemente uso el componente TsqlConnection de DBX

propiedades: connected := True
connectionName fbConnection
driver firebird
database: servertxt:c:\dbascii.fdb
pasword: micontraseña
username: sysdba


Creo que es lo que necesita


Saludos y gracias

maeyanes
27-07-2011, 18:38:13
Hola...

No se trata solo de copiar las dll dentro del directorio System. En el caso de Firebird tienes que instalar el cliente. Para esto, ejecuta el instalador de Firebird y cuando te muestre las opciones para instalar, selecciona que solo se instale el cliente. Con esto deberías resolver tu problema.



Saludos...

novato_erick
27-07-2011, 18:43:09
ya lo realice, instale el ejecutable de la versión 2.5 de firebird. y nada...

Aun no he podido resolver el problema..

Gracias..

maeyanes
27-07-2011, 18:53:19
Ah!

Las otras dll también las tienes que registrar:


regsvr32 nombredll.dll




Saludos...

novato_erick
27-07-2011, 19:06:54
no entiendo

regsvr32 nombredll.dll

maeyanes
27-07-2011, 19:10:50
Hola...

Desde una ventana de línea de comandos, has lo siguiente:


cd c:\Windows\System32 [Enter] (O la ruta donde pusiste las DLL que mencionaste)

regsvr32 midas.dll [Enter]

regsvr32 dbxfb.dll [Enter]


Con esto estás registrando las dll's en windows y tu aplicación ya debería ejecutarse sin problemas. A menos que el problema esté en otro lado, claro está...



Saludos...

novato_erick
27-07-2011, 19:19:54
---------------------------
RegSvr32
---------------------------
Se descargó dbxfb.dll, pero no se encontró el punto de entrada DllRegisterServer.

No se puede registrar este archivo.
---------------------------
Aceptar
---------------------------

El midas.dll se registro correctamente

el dbxfb.dll mostro el mensaje anterior.



Saludos;

maeyanes
27-07-2011, 19:21:33
Hola...

Pues dbxfb.dll no se puede registrar, según el mensaje no tiene un punto de entrada para registrarse. De todas maneras, trata de ejecutar de nuevo tu aplicación.


Saludos...

novato_erick
27-07-2011, 19:25:48
Gracias por tus aportes ante mano.

Ejecute mi aplicación y nada...

sigue mandando el mismo error de error de programa.

Es Extraño que en mis tres equipo de desarrollo no tengamos problema al ejecutarlo.. todo esta en en la terminal que no tiene dephi.

vere que sigo haciendo, si encuentro la solución. mientras tanto recibiré mas sugerencias...

Saludos

Casimiro Notevi
27-07-2011, 19:26:16
Me parece que estás intentado resolver algo dando "palos de ciego" porque todavía no sabes realmente cual es el problema que tienes.

No das mucha información, así que para empezar, algo simple, ¿has instalado el cliente de firebird?

maeyanes
27-07-2011, 19:32:16
Hola...

Casimiro, según comentó más arriba, ya instaló el cliente de Firebird en la PC.

Ahora, si ya registró la dll de midas y sigue con el mismo problema, podría ser que aún le falten algunas dll's por instalar/registrar.

novato_erick busca en el visor de eventos de Windows XP los errores que se producen al ejecutar tu aplicación, ahí podrías encontrar más información sobre que te está produciendo el error.


Saludos...

novato_erick
27-07-2011, 19:34:11
Gracias Casimiro esta bien el jalon de orejas...

Empiezo de nuevo:

Esta instalado el Cliente de firebird 2.5 en la maquina que deseo ejecutar mi apliación.

Instale por si acaso en el c:\windows\system32\dbxfb.dll y midas.dll (Esto porque antes una microaplicacion de prueba instalada anteriormente en una terminal sin delphi me recomendaron que hiciera y funciono).

Mi aplicación llama a la base de datos usando un componente DBX de la siguiente manera:

driver: firebird
DataBase: 192.168.17.2:C:\BDASCII.FDB
password: mipassword
username: sysdba

Como dije anteriormente: la aplicacion corre en mis maquina de desarrollo pero no he podido lograr que corra en una sin delphi.

Claro la maquina sin delphi, ya esta dentro del dominio de la red del servidor windows server8 y su respectivo ip.


Saludos

novato_erick
27-07-2011, 19:48:06
Envia este error:


Tipo de suceso: Error
Origen del suceso: Application Error
Categoría del suceso: Ninguno
Id. suceso: 1000
Fecha: 27/07/2011
Hora: 01:15:07 p.m.
Usuario: No disponible
Equipo: HOGAR
Descripción:
Aplicación con errores: inventarios.exe, versión: 0.0.0.690, módulo con error: kernel32.dll, versión 5.1.2600.3119, dirección de error 0x00012a5b.

Para obtener más información, vea el Centro de ayuda y soporte técnico en http://go.microsoft.com/fwlink/events.asp.
Datos:
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 69 6e 76 ure inv
0018: 65 6e 74 61 72 69 6f 73 entarios
0020: 2e 65 78 65 20 30 2e 30 .exe 0.0
0028: 2e 30 2e 36 39 30 20 69 .0.690 i
0030: 6e 20 6b 65 72 6e 65 6c n kernel
0038: 33 32 2e 64 6c 6c 20 35 32.dll 5
0040: 2e 31 2e 32 36 30 30 2e .1.2600.
0048: 33 31 31 39 20 61 74 20 3119 at
0050: 6f 66 66 73 65 74 20 30 offset 0
0058: 30 30 31 32 61 35 62 0d 0012a5b.
0060: 0a .

Chris
27-07-2011, 19:56:29
Primero, no es necesario ningún proceso de instalación del cliente de Firebird. De hecho, ni siquiera existe tal tipo de instalación. El cliente de Firebird es simplemente un biblioteca de carga dinámica. Ésta puede estar en la misma ruta que tu *.exe o bien en alguna ruta del sistema como: C:\Windows; C:\Windows\System32; etc. Lo recomendado es que utilices una copia de la DLL que resida junto a tu ejecutable.

Por otro lado, si dices que en los equipos de desarrollo el programa no presenta ningún problema es porque seguro te está faltando instalar y/o registrar algo en el equipo cliente. Sin saber mucho de dbExpress supongo que tiene que ver con él. Fíjate en la siguiente línea de la configuración:
driver firebird
El sistema requiere que Firebird (https://sites.google.com/site/dbxfirebird/) sea algo configurado y entendible para dbExpress. Talvez eso deba ser lo que te está faltando. No solo con copiar DLLs se puede considerar como instalado a un componente de Software.

Saludos,
Chris

maeyanes
27-07-2011, 20:03:29
Hola...

Chris, si es recomendable instalar el cliente desde el instalador de Firebird, ya que este también instala los runtime de Visual Estudio.

También se puede hacer como indica este enlace: http://www.destructor.de/firebird/minimumclient.htm


Saludos...

Casimiro Notevi
27-07-2011, 20:05:29
driver: firebird
DataBase: 192.168.17.2:C:\BDASCII.FDB
password: mipassword
username: sysdba



Usuario: No disponible
Equipo: HOGAR



¿Cambiaste el password en el firebird?

novato_erick
27-07-2011, 20:06:46
Chis


driver firebird

El sistema requiere que Firebird sea algo configurado y entendible para dbExpress. Talvez eso deba ser lo que te está faltando. No solo con copiar DLLs se puede considerar como instalado a un componente de Software.


mi componente de conexion DBX

tiene las siguientes propiedades:
Driver: Firebird
DataBase: 192.168.17.2:c:\MIDB.FDB
Password: mipass
libreryName:dbxfb.dll //Este no pude registrarlo
VendorLib:fbclient.dll

Saludos

novato_erick
27-07-2011, 20:08:45
no Casimiro no cambie el password en firebird es el mismo 'masterkey' pero es una manera de decir que tiene el pass... lo de usuario vacio y maquina hogar son lo de la terminal el cual no tiene nombre de usuario y contraseña para entrar entra directo


Saludos

Casimiro Notevi
27-07-2011, 20:22:24
Por casualidad, si el programa tiene alguna opción para imprimir, ¿tienes alguna impresora instalada en ese equipo cliente?

novato_erick
27-07-2011, 20:27:17
gracias por responder a todos; Casimiro El equipo cliente si tiene impresora instalada.

Saludos

oscarac
27-07-2011, 20:31:20
mmmm
no se.. se me ocurre que puedas instalar delphi en esa computadora y depurar el programa en cuestion para ver donde es que salta ese error...

novato_erick
27-07-2011, 20:35:49
Hola oscarac esa aplicacion corre en 3 equipos de desarrollo sin ningun problema, el asunto esta es instalarlo en una terminal sin delphi, en la carpeta del ejecutable esta el exe, los dll, menos la db que esta es en un servidor remoto cual ruta es DataBase: servertxt:c:\dbascii.fdb
192.168.17.2:c:\dbascii.fdb que viene a ser lo mismo.

lo que no he probado es realizar el archivo ini pero coral me envio un miniini para probar y na...

bueno estoy que me despellejo (literalmente).

vere que otra cosa hago...


Saludos

Chris
27-07-2011, 20:52:01
Ya has instalado el DBExpress (http://webscripts.softpedia.com/scriptDownload/dbExpress-Download-45286.html) en la maquina cliente?

novato_erick
27-07-2011, 20:53:41
Asi es Cris... dbxfb.dll es el dll que llama el dbexpress...

Saludos

Chris
27-07-2011, 21:00:59
Chris, si es recomendable instalar el cliente desde el instalador de Firebird, ya que este también instala los runtime de Visual Estudio.

También se puede hacer como indica este enlace: http://www.destructor.de/firebird/minimumclient.htm

Talvez esta documentación sea contradictoria a la oficial. En la documentación oficial de Firebird indican que lo más recomendable es distribuir y almacenar las bibliotecas fbclient.dll y las necesarias VS Runtime junto a tu aplicación. Lo anterior es para evitar el DLL Hell (http://en.wikipedia.org/wiki/DLL_Hell) de Windows. Así evitas que la actualización y/o degradación de una aplicación externa pueda interferir con la tuya.

Saludos,
Chris

Chris
27-07-2011, 21:02:00
Asi es Cris... dbxfb.dll es el dll que llama el dbexpress...

Saludos

Entiendo. A lo que me refiero es que si has utilizado un instalador oficial o simplemente has copiado los archivos DLL a System32?

novato_erick
27-07-2011, 21:03:44
no he utilizado el instalador ofical del dbexpress en la maquina cliente solo copie el dll en system32

Saludos

Chris
27-07-2011, 21:06:23
no he utilizado el instalador ofical del dbexpress en la maquina cliente solo copie el dll en system32

Saludos

Deberías intentar utilizar el instalador oficial. Ya te he dicho que no siempre un componente de software solo se instala copiando archivos. Menos uno de este tipo. También hay en juego valores de registro y una infinidad de cosas que sean aparte de copiar archivos.

Trata de instalar en el cliente el dbExpress con su instalador oficial y vuelve hacer la prueba.

Saludos,
Chris

novato_erick
27-07-2011, 21:07:48
Dale cris intentare ya que fui a la pagina oficial de dbExpress y ellos siguieren los dll que se deben de poner en la aplicacion para que puedan correr delphi.

les escribo cualquier resultado


Gracias...

maeyanes
27-07-2011, 21:10:57
Hola...

Talvez esta documentación sea contradictoria a la oficial. En la documentación oficial de Firebird indican que lo más recomendable es distribuir y almacenar las bibliotecas fbclient.dll y las necesarias VS Runtime junto a tu aplicación. Lo anterior es para evitar el DLL Hell (http://en.wikipedia.org/wiki/DLL_Hell) de Windows. Así evitas que la actualización y/o degradación de una aplicación externa pueda interferir con la tuya.

Saludos,
Chris

Yo lo que he hecho y sin problemas es instalar el cliente desde el instalador oficial de Firebird o instalo el cliente desde el propio instalador de mi aplicación (que sería el caso que menciona la documentación oficial).


Saludos...

novato_erick
27-07-2011, 21:34:59
Bueno instale el DBExpress en la maquina cliente y nada

seguí este link http://www.clubdelphi.com/foros/showthread.php?t=74788

aparentemente a casimiro Notevi le daba algún tipo de problema con su aplicación.. pero la mía no ha resuelto.

Caral
27-07-2011, 22:16:12
Hola
Bueno, yo sigo con lo del ini, si bien quieres hacerlo:
Me imagino que tendras un datamodule, si no es asi, podras colocar este codigo en el evento Oncreate del form principal.
Para comenzar tienes que colocar en el uses IniFiles.

Ahora en el evento OnCreate del form o del datamodule pones esto:


Var BaseDeDatos, User, Pass : String;
IniFile: TIniFile;
begin
fbConnection.Connected:= False;
// Obtiene la ruta y el nombre de la base de datos
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiIni.ini');
BasedeDatos := IniFile.ReadString('BD','Path','');
User:= IniFile.ReadString('US','Name','');
Pass:= IniFile.ReadString('PS','Clave','');
If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
fbConnection.DatabaseName:= BasedeDatos;
fbConnection.Driver:= 'Firebird'; // no estoy seguro que sea asi, si no, quitale las comillas.
fbConnection.pasword:= User;
fbConnection.username:= Pass;

fbConnection.Connected:= True;

end;

Ahora abre el archivo ini y cambias esto asi:

[BD]
Path="192.168.17.2:c:\MIDB.FDB"
[US]
Name="SYSDBA"
[PS]
Clave="micontraseña"

Lo Guardas, salvas y lo colocas en el mismo directorio en donde este el EXE (osea el programa).


A ver como va, te repito, desconozco tus componentes, esto me parece que deberia de funcionar, pero no estoy seguro, de todos modos, no se pierde nada.
Saludos

novato_erick
27-07-2011, 22:39:17
me sucede lo siguiente:


IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiIni.ini'); // me manda error aqui (ExtractFilePath(Application.ExeName)
BasedeDatos := IniFile.ReadString('BD','Path','');
User:= IniFile.ReadString('US','Name','');
Pass:= IniFile.ReadString('PS','Clave','');
If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
dmconexion.sqldb.DatabaseName:= BasedeDatos;// dice valor no declarado a pesar que ya lo declare en uses el modulo de conexion y me estanco
dmconexion.sqldb.Driver:= 'Firebird'; // es asi.
dmconexion.sqldb.pasword:= User;//a partir de la segunda llamada al dmconexion me dice que no esta declarado y ya esta...
dmconexion.sqldb.username:= Pass;//

dmconexion.sqldb.Connected:= True;

Caral
28-07-2011, 00:22:22
Hola
Y que error ?.
Colocaste el archivo ini en el mismo directorio que el exe?.
Colocaste en el uses el IniFiles ?
El archivo ini se sigue llamando MiIni o es otro nombre ?
Saludos

novato_erick
28-07-2011, 05:09:44
hola

Disculpa por no haber respondido Caral tube una reunion de trabajo, el cual no fue nada alentador la noticia que les di a mis jefes. en pocas palabras me toca trasnocharme a ver que podre hacer.

bueno respondiendo a tus preguntas caral, no me manda error, sin embargo y Modulo de datos que maneja la conexion DBX se llama dmConexion este lo llamo desde mi archivo llamado ini.pas usando en la clausula uses el en donde voy a poner el procedimiento de creacion del archivo ini.

en embargo en poner la linea despues de:


IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiIni.ini'); // Undeclaraded Identifier ExtractFilePath, Application, ExeName
BasedeDatos := IniFile.ReadString('BD','Path','');
User:= IniFile.ReadString('US','Name','');
Pass:= IniFile.ReadString('PS','Clave','');
If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
dmconexion.sqldb.DatabaseName:= BasedeDatos;// dice valor no declarado a pesar que ya lo declare en uses el modulo de conexion y me estanco
dmconexion.sqldb.Driver:= 'Firebird'; // TsqlConnection does not contain a member named 'Driver'
dmconexion.sqldb.pasword:= User;//TsqlConnection does not contain a member named 'Pasword'
dmconexion.sqldb.username:= Pass;//TsqlConnection does not contain a member named 'UserName'

dmconexion.sqldb.Connected:= True;



El archivo ini sigue teniendo el mismo nombre

Estas son las respuestas con los errores que me envía delphi.

maeyanes
28-07-2011, 15:13:09
Hola...

Para usar el objeto Application en una unidad, debes agregar la unidad Forms a la lista de unidades (uses) de esa unidad.


Saludos...

novato_erick
22-08-2011, 17:15:46
Hola a Todos

Después de un mes tratando de resolver muchos inconvenientes poder ejecutar mi aplicación en una terminal que no fuese de desarrollo y tener instalado Delphi he podido he podido lograrlo.

La característica principal de mi aplicación (Aun en desarrollo) es que utilizo el componente TRibbon que viene desde Delphi 2010.

El problema radicaba en archivos dll por ejemplo USP10.DLL; Este se encuentra en el system32 no nos habiamos percatado que increiblemente no puedes instalar offices 2007 en ServicePack 1 o incluso en algunos ServicePack 2 si no tienes los parches adecuados. Esto se soluciona instalando el SP3..

Bueno ahí radica la solución en que mi ejecutable que contiene componente TRibbon no podia iniciar enviando un error en el Kernell.dll el cual llama los otros dll asociados y que tenían que ser actualizados con SP3. y bueno lo demás es historia... Ejecuto la aplicación :D...

Ahora me falta realizar pruebas con W7 espero no tener problemas..

Saludos y Gracias a los que habían Colaborado para solucionar este problema.


novato_erick

oscarac
22-08-2011, 17:18:42
pues valio la pena esperar 1 mes ;);)

novato_erick
22-08-2011, 17:23:06
JAJAJAJ No que va... si estuviera trabajando con una empresa diferente a la que estoy me hubieran votado hace rato ajajajaja... Lo bueno que en Panamá no hay gente que desarrolle en delphi...


He buscado y nada...


Saludos...