c# - fody - Integrado un*.exe en un dll
import dll c# (5)
Claro que lo es. Puede agregar cualquier archivo como RC_DATA en la aplicación como recurso. ¡Pero creo que tendrás que extraerlo primero al disco antes de llamarlo!
¿Qué IDE / Idioma estás usando?
[EDITAR]
¡Lo siento! Mencionaste que estás usando C #.
- Agregue un archivo de recursos a su aplicación (haga clic derecho en IDE y seleccione "Agregar nuevo elemento").
- Use la barra de herramientas en el editor de recursos para agregar un archivo existente.
- A continuación, extraiga el archivo ejecutable cuando sea necesario llamando al código, algo así como: System.IO.File.WriteAllBytes (@ "C: / MyEXE /", Resource1.MyEXE);
¿Alguien sabe cómo puedo incrustar un archivo exe en un dll?
Tengo una herramienta que es un archivo exe al que llamo desde el código c #.
Lo que pasa es que quiero tener 1 dll que contenga esta herramienta (archivo exe) y el dll que contiene mi código c #.
¿Es posible incrustar este archivo exe dentro de los recursos?
Thx por adelantado
Puede cargar un Ensamblaje desde un byte []. Esto se puede obtener a través de ManifestResourceStream de un recurso incrustado.
Vale la pena tener en cuenta que sus usos pueden no estar muy felices de que lo haga. Incrustar un ejecutable que no tienen control sobre una DLL que extraerá y ejecutará probablemente haga que las personas se preocupen por la ejecución de un troyano en su máquina.
Es mejor dejar .EXE en el sistema de archivos y ser transparente sobre lo que está haciendo su aplicación.
En una nota lateral, recuerde que cuando extrae un archivo de sus recursos al disco y luego ejecuta el código en él, puede activar la Prevención de ejecución de datos de Windows; básicamente, Windows intenta detectar automáticamente si se supone que algo es código o datos, y si se parece a los datos (lo que haría un recurso), evitará que esos datos se ejecuten como código.
Esto se convierte en un problema particularmente pegajoso si su ensamblado .NET se va a utilizar en una red en lugar de en una unidad local; existen todo tipo de configuraciones de seguridad .NET que pueden evitar que esto funcione correctamente.
Otra opción, y sin conocer los detalles de su proyecto, tome esto con un grano de sal: agregue un archivo .exe.readme a su instalación que describa a los usuarios curiosos o personas de TI por qué hay un ejecutable que no esperaban en el directorio de instalación :)
Una alternativa puede ser no incrustar el .exe en sí mismo, sino incluir su funcionalidad en el dll, y usar rundll32 [ 1 ] para ejecutarlo.