Ejecutar un Ejecutable incluído como Recurso o Resource en C#

Un usuario en un grupo al que estoy metido en Facebook, hizo una consulta muy interesante que no se me había ocurrido. La consulta era:
"Como puedo hacer para ejecutar un archivo ejecutable, que tengo incluído como recurso, dentro de mi aplicación?"
Me puse a investigar y esto es lo que salió:

PRIMER PASO: Incluir el archivo dentro del proyecto.

Primero incluimos el ejecutable en nuestro proyecto. Yo lo agrego en una carpeta llamada Recursos:
En este caso yo elegí el Block de Notas de Windows como Ejemplo.
IMPORTANTE: Tener en cuenta que el bloc de notas NO FUNCIONA ejecutandolo asi. Esto es solo a modo ilustrativo.

Luego cambiamos la propiedad Build Action del archivo a Embedded Resource

SEGUNDO PASO: Extraer el archivo incluido en el proyecto, a una ruta de nuestra elección.

El siguiente código lo obtuve de este sitio. Es un método que nos permite copiar un archivo incluido como Embedded, a una ruta que indiquemos. Por supuesto que le modifique el nombre, los nombres de variables y strings para que se muestre en español

public static void CopiarRecurso(Assembly pAssembly, string pNombreRecurso, string pRuta)
        {
            using (Stream s = pAssembly.GetManifestResourceStream(pAssembly.GetName().Name + "." + pNombreRecurso))
            {
                if (s == null)
                {
                    throw new Exception("No se puede encontrar el recurso '" + pNombreRecurso + "'");
                }
                
                byte[] buffer = new byte[s.Length];
                s.Read(buffer, 0, buffer.Length);
                using (BinaryWriter sw = new BinaryWriter(File.Open(pRuta, FileMode.Create)))
                {
                    sw.Write(buffer);
                }
            }
        }

Los parametros que necesitas son: El Assembly o Ensamblado en donde está el Recurso, el nombre del recurso, y la ruta donde deseamos extraerlo.

Y lo ejecuto con la siguiente linea:
CopiarRecurso(Assembly.GetExecutingAssembly(), "Recursos.notepad.exe", "notepad.exe");
En el primer parametro le estoy indicando que quiero extraer mi recurso desde el Assembly o Ensamblado actual.
Luego le digo el nombre del recurso. Como lo puse dentro de una carpeta "Recursos", el nombre completo del recurso es Recursos.notepad.exe (En realidad el nombre completo es el namespace completo + la carpeta + el nombre del archivo, pero el método ya se encarga de agregarselo.).
Por último le paso el nombre del archivo con el que quiero que me lo guarde. Al no pasarle una ruta, me va a generar el ejecutable, dentro de la misma carpeta en la cual está ejecutandose mi aplicación, pero podemos indicarle una ruta.

TERCER PASO Ejecutar el archivo

El último paso es ejecutar nuestro archivo.
Esto lo hacemos con la clase Process y ProcessStartInfo que se encuentran en el namespace System.Diagnostics

Este código nos permite ejecutar el archivo:
            ProcessStartInfo info = new ProcessStartInfo("notepad.exe");
            Process.Start(info);

Eso es todo. A continuación les dejo el proyecto de prueba para que se lo descarguen, jueguen y practiquen con él. Está en .net 3.5 para la versión de Visual Studio 2012

Descargar Proyecto

Buena Programación!

Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  2. Te super agradezco, ya hacia bastante que buscaba saber esto y no daba con nadie que supiera!

    Sera que también es posible correr una aplicación incrustada en nuestros recursos pero sin la necesidad de extraerlo?
    Tengo un exe que se puede controlar por comandos de cmd y me gustaría poder hacer un launcher e incrustar ese exe y controlarlo desde mi programa, es por eso que pregunto!

    Muchas gracias, saludos!
    PD: para c++ o c#

    ResponderBorrar
    Respuestas
    1. Se me ocurre que puede ser un poco complicado, ya que para ser ejecutado, el archivo debe ser un ejecutable.
      Habría que investigar un poco mas.
      Te mantendré al tanto sobre el tema.

      Saludos!

      Borrar
  3. Ejecutar Un Ejecutable Incluído Como Recurso O Resource En C >>>>> Download Now

    >>>>> Download Full

    Ejecutar Un Ejecutable Incluído Como Recurso O Resource En C >>>>> Download LINK

    >>>>> Download Now

    Ejecutar Un Ejecutable Incluído Como Recurso O Resource En C >>>>> Download Full

    >>>>> Download LINK 4d

    ResponderBorrar

Publicar un comentario

Entradas populares