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:
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:
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.
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:
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!
"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.
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!
Este comentario ha sido eliminado por el autor.
ResponderBorrarTe super agradezco, ya hacia bastante que buscaba saber esto y no daba con nadie que supiera!
ResponderBorrarSera 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#
Se me ocurre que puede ser un poco complicado, ya que para ser ejecutado, el archivo debe ser un ejecutable.
BorrarHabría que investigar un poco mas.
Te mantendré al tanto sobre el tema.
Saludos!
Gracias, estaré al pendiente...
ResponderBorrarEjecutar Un Ejecutable Incluído Como Recurso O Resource En C >>>>> Download Now
ResponderBorrar>>>>> 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