PDA

Ver la Versión Completa : Embeber un .exe


satelier.martin
31-03-2011, 18:42:35
Hola a todos, les que tengo poca experiencia con delphi pero me toco crear un herramienta que tendría que ser el launch de un cliente de un juego.

Este juego tiene su propio .exe el cual no quiero tocar sino ejecutar desde mi aplicacion la cual tiene que realizar algunas comprobaciones antes de ejecutarlo.

El problema viene con que este .exe que debo ejecutar debe estar compilado dentro de mi mismo .exe ya que no le tengo que dar la posibilidad al usuario de ejecutarlo sin antes pasar por mi .exe.

Ahora, mi pregunta es como embebo este .exe y lo ejecuto dentro de mi aplicacion.

eh leido varios hilos en el foro que realizan cosas parecidad pero no se adaptan a esto, estoy medio perdido ya que averigue por resouces de delphi un componente que era bind to exe que no lo pude instalar. :confused:

Cualquier ayuda es bienvenida.
Saludos

Chris
31-03-2011, 18:55:25
¿Embeber, Embebo? qué es eso? :p Tal vez, quieras decir Empotrar, o Empotro :)

Por lo de los recursos, vas por buen camino. Tienes que incluir el *.Exe dentro de los recursos de tu principal *.exe. Luego utilizando los descendientes de TStream (TResourceStream y TFileStream) harías el trabajo. No tengo un ejemplo a mano, pero si investigas estos componentes que te he dicho talvez se te de una pista de cómo puedes hacerlo.

Saludos,
Chris

satelier.martin
31-03-2011, 21:36:14
Cris,
Muchas gracias por responder tan rápido, pero lo que me comentas vos es lo que lei y no logro realizar. Un ejemplo seria muy bueno también.

Seguiré investigando, si logro resolverlo lo posteo.

Delfino
31-03-2011, 22:18:04
Si prefieres utilizar componentes para la tarea esta el componente JvDataEmbedded1 de la suite open source JVCL (http://jvcl.delphi-jedi.org/)

Si lo quieres hacer a mano puedes consultar esta (http://delphi.about.com/od/objectpascalide/a/embed_resources.htm) pagina donde se explica el proceso.

Neftali [Germán.Estévez]
01-04-2011, 09:55:25
Hola.
Creo que estás mezclando varias cosas y tal vez la solución que propones no sea la más adecuada.

El problema viene con que este .exe que debo ejecutar debe estar compilado dentro de mi mismo .exe ya que no le tengo que dar la posibilidad al usuario de ejecutarlo sin antes pasar por mi .exe.
Ahora, mi pregunta es como embebo este .exe y lo ejecuto dentro de mi aplicacion.


No se si esa es la mejor opción, aunque se puede hacer creando un recurso.
Si buscas en los foros encontrarás bastantes temas al respecto (recursos RC_DATA).

Esto que estás haciendo te puede reportar problemas con determinados antivirus y suites de seguridad. Tanto el tener un EXE "incrustado" en tu aplicación, como el extraerlo a disco y ejecutarlo (sobre todo esto último). Piensa que no es un comportamiento muy "fiable" desde el punto de vista de "alguien" que vigila la seguridad del equipo. :)

satelier.martin
11-04-2011, 07:24:26
Necesito hacerlo ya que debo esconder todo rastro del segundo ejecutable para que no intenten nada malicioso.

Otro tema con el componente JvDataEmbedded puedo hacer el embedded del .exe pero luego no se como ejecutarlo sin tener que bajarlo como un archivo .exe al disco el componente tiene un .Data que te devuelve una variable TStream para trabajarlo o tiene un método para guardarlo en disco, esto ultimo no lo quiero hacer por que no tienen que tener acceso a el .exe ni por un temporal.

También intente con otro programa que se llama MoleBox que permite agregar cualquier archivo al ejecutable. Agregue el .exe y use la función:

ShellExecute(Form1.Handle, nil, 'lalala.exe',nil, nil, SW_SHOWNORMAL)

Pero tampoco funciono.

Gracias por sus respuestas.

satelier.martin
12-04-2011, 17:06:48
Bueno, les comento como hice para solucionarlo.

Use un herramienta que se llama MoleBox. Esta herramienta lo que permite es en base a un .exe generar otro en el cual podes poner resource y genera un directorio virtual el cual solo puede ver su contenido el .exe resultante.

Aparte trae opciones de encriptacion y demás cosas. Luego de probar varias veces no me andaba por una configuración a la hora de compilar el .exe resultante, luego lo solucione y anda perfecto. Puedo poner las .dll .exe y demás archivos que quiera que solo lo ve el .exe resultante.

Saludos !!