mexico - Embalando un exe+dll en un ejecutable(no.NET)
dll sql (9)
¿Has mirado mi lista de utilidades baratas?
Se supone que hay varias herramientas económicas (es decir, bastante baratas) que unirían DLL (s) de la aplicación que no son red, como por ejemplo:
1.) Molebox Pro (eu 100) 2.) Fusion de BitArt ($ 160) 3.) Envoltura de VB ($ 100) 4.) Paquete de PE ($ 30)
Además, en "www.oreans.com" puede encontrar un paquete de programas orientados a la protección para eu 320, que, como afirman, puede vincular archivos Win32 o ".Net"; sin embargo, cuando les pedí un escenario específico, donde usaría su "XBundler For Win32 / .NET" para empacar un EXE ".Net", y luego trataría de ejecutarlo en Windos 98 (sin el framework) , dijeron que no funcionaría. :-(
Admirador EXE
Posible duplicado:
¿Cómo se puede combinar una ventana de C ++ en un exe de aplicación C #?
¿Alguien sabe de un programa que puede incluir varios DLL y .EXE en un ejecutable? No estoy hablando del caso de .NET aquí, estoy hablando de DLL generales, algunos de los cuales genero en C ++, algunos de ellos son DLL externos sobre los que no tengo control.
Mi caso específico es un programa python empaquetado con py2exe, donde me gustaría "ocultar" el otro archivo DLL empaquetándolos. La pregunta es lo suficientemente general sin embargo.
Las cosas que se vieron:
- ILMerge: específico para .NET
- NETZ : específico para .NET
- UPX : compresión DLL pero no múltiples archivos DLL + EXE
- FileJoiner :
Casi lo tengo. Puede empacar ejecutable + cualquier cosa en un exe pero cuando se abre, se iniciará el abridor predeterminado para cada archivo que se empaquetó. Por lo tanto, si el usuario usuario dlldepende instalado, lo ejecutará (porque ese es el abridor predeterminado de dll).
Tal vez eso no es posible?
Resumen de las respuestas:
La apertura de la DLL es administrada por el sistema operativo, por lo que empaquetar la DLL en ejecutable significa que, en algún momento, deben extraerse a un lugar donde el sistema operativo pueda encontrarlos. Sin bala mágica.
Entonces, lo que quiero no es posible.
A no ser que...
Cambiamos algo en el sistema operativo. Gracias a Conrad por indicarme ThinInstall , que virtualiza la aplicación y el mecanismo de carga del sistema operativo. Con ThinInstall, es posible empacar todo en un exe (DLL, configuración de registro, ...).
Echa un vistazo a Thinstall ThinApp
Eche un vistazo a BoxedApp . ¡Buena suerte!
Me dijeron que es posible pedir un enlace de objeto compartido a otro objeto compartido, así combinarlos en uno en Linux
Pero no funcionará para los dlls nativos de Windows, una cosa que me ocurre es que podemos usar el enlazador para vincular todos los objs, independientemente del proyecto al que pertenezcan originalmente. Por supuesto, necesitan tener opciones de enlace similares.
MoleBox Pro hace exactamente lo que usted quiere, pero es shareware y, a menos que compre una versión completa, los archivos ejecutables empaquetados mostrarán un cuadro de diálogo al inicio, diciendo algo así como: "Este archivo fue empaquetado por una versión de prueba de MoleBox, no lo haga distribuirlo "
Puedes descargarlo aquí: link
Lamentablemente, no he podido encontrar una solución totalmente satisfactoria y gratuita
Prueba Powerpacker . Evalaze es otra solución de virtualización gratuita. Enigma Virtual Box FREEWARE Edition
Puede agregar las DLL como recursos binarios en su EXE. Al inicio, su EXE puede extraer los recursos en una carpeta temporal y LoadLibrary()
los archivos DLL resultantes.
Puede usar valgrid, thinstall o boxedapp .... prefiero este último.
Si el ejecutable se vincula de forma estática a la DLL, es decir, no hay llamadas a LoadLibrary
, entonces no creo que haya ningún mecanismo para empaquetar la DLL en el archivo ejecutable ya que la carga de la DLL la realiza el cargador de aplicaciones del sistema operativo antes de la "principal "función siendo llamada. La única forma de evitar esto, hasta donde yo sé, es poner el exe y los dlls en otro exe. Este administrador de contenedor descomprime los archivos exe y dlls reales en una carpeta temporal e inicia el exe, eliminando los archivos cuando el ejecutable se cierra.
Si está llamando a LoadLibrary/Ex
para cargar el dll, extraiga el dll de los recursos exe en un archivo antes de llamar a LoadLibrary/Ex
.
El verdadero problema es que la función LoadLibrary
realiza muchas reparaciones de direcciones cuando la biblioteca está cargada y solo funciona cuando se carga desde un archivo.