¿Cómo comprimir un archivo ejecutable?

Upx gui

Tengo la necesidad, un tanto ridícula, de proporcionar a un usuario final una forma MUY fácil de enganchar un directorio de programa de Archivos de Programa en su sistema en un archivo autoextraíble que puedan utilizar para replicar el directorio en otros sistemas.

Por desgracia, los instaladores de Windows a menudo instalan varios archivos en una variedad de ubicaciones, ponen información crítica en las entradas del Registro de Windows, y tienen otros mecanismos de registro y anti-piratería de tal manera que el programa no funciona en la nueva máquina.

Vea “¿Es posible clonar sólo el software de una máquina?”, “Copiar todos los programas y archivos instalados en un disco duro (que tiene Windows 7 de 32 bits) y clonarlo/transferirlo a otro ordenador que tiene Windows 7 de 64 bits”, “¿Hay alguna forma de clonar un disco duro NTFS pero dejando algunos archivos fuera?”, etc.

Si de alguna manera sabes a ciencia cierta que tu aplicación en particular no tiene esas dependencias externas y que funcionará bien en la nueva máquina después de copiar sólo la carpeta, entonces tal vez podrías:

Si sólo buscas una aplicación, entonces crear un zip autoextraíble con 7zip puede ser una opción. Si estás buscando una librería para escribir tu propia aplicación, entonces podrías buscar en ionic zip y utilizar la variable de entorno para la carpeta de archivos de programa para encontrar esa carpeta (pero entonces sólo estás comprimiendo una carpeta, ¿qué hay de otras carpetas dependientes y entradas del registro?) O si estás dispuesto a duplicar sistemas enteros, podrías hacerlo fácilmente con ghost/wim.

Comprimir archivos

Dentro del ecosistema Windows, tenemos a nuestra disposición tres tipos de archivos ejecutables: .COM, .EXE y .BAT. Los primeros están relacionados exclusivamente con los archivos del sistema. Los segundos son los archivos ejecutables de cualquier aplicación que queramos instalar o ejecutar en nuestro ordenador, mientras que los terceros, los .BAT, son una serie de instrucciones que podemos ordenar al ordenador cuando lo ejecutamos.

Los archivos .EXE, por lo general, siempre han sido los utilizados para la transmisión de virus, malware y otros, por lo que, por regla general, si nos llegan a través del correo electrónico, lo más probable es que acaben en la carpeta de SPAM, aunque a veces, y por el riesgo que conlleva, nunca nos llegan porque nuestro servidor de correo se encarga de borrarlos.

Si bien es cierto que la mejor forma de compartir archivos o aplicaciones evitando este problema es a través de una aplicación que se encargue de comprimir los archivos en formato ZIP, un compresor integrado de forma nativa en Windows 10, no siempre es una opción, sobre todo en los equipos más antiguos, donde no existe una aplicación que se encargue de comprimir y descomprimir los archivos.

Reducir el tamaño del archivo exe en línea

La compresión de ejecutables es cualquier medio para comprimir un archivo ejecutable y combinar los datos comprimidos con el código de descompresión en un único ejecutable. Cuando se ejecuta este ejecutable comprimido, el código de descompresión recrea el código original a partir del código comprimido antes de ejecutarlo. En la mayoría de los casos, esto ocurre de forma transparente, por lo que el ejecutable comprimido puede utilizarse exactamente igual que el original. Los compresores de ejecutables suelen denominarse “empaquetadores en tiempo de ejecución”, “empaquetadores de software”, “protectores de software” (o incluso “empaquetadores polimórficos” y “herramientas de ofuscación”).

Un ejecutable comprimido puede considerarse un archivo autoextraíble, en el que un ejecutable comprimido se empaqueta junto con el correspondiente código de descompresión en un archivo ejecutable. Algunos ejecutables comprimidos pueden ser descomprimidos para reconstruir el archivo de programa original sin ser ejecutados directamente. Dos programas que pueden utilizarse para ello son CUP386 y UNP.

La mayoría de los ejecutables comprimidos descomprimen el código original en la memoria y la mayoría requieren algo más de memoria para ejecutarse (porque necesitan almacenar el código descompresor, los datos comprimidos y el código descomprimido). Además, algunos ejecutables comprimidos tienen requisitos adicionales, como los que escriben el ejecutable descomprimido en el sistema de archivos antes de ejecutarlo.

Pyinstaller upx

Petite es un compresor gratuito de ejecutables (EXE/DLL/etc) Win32 (Windows 95/98/2000/NT/XP/Vista/7/etc). Los ejecutables comprimidos se descomprimen por sí mismos en tiempo de ejecución y pueden utilizarse como las versiones originales sin comprimir. Petite también añade la detección de virus a los ejecutables comprimidos; se comprobarán a sí mismos para detectar infecciones cada vez que se ejecuten.

Se ofrecen dos versiones de Petite: una versión con interfaz gráfica de usuario y una versión de consola con línea de comandos. La versión GUI permite un uso rápido y sencillo de Petite, y la versión de línea de comandos permite a los desarrolladores automatizar el uso de Petite en los procesos de compilación y makefiles de los compiladores. Se dan instrucciones sencillas para utilizar Petite con proyectos de Visual C++, y también debería ser bastante sencillo utilizar Petite con otros compiladores e IDEs. Petite también puede usarse como una extensión del shell, de modo que se puede comprimir un archivo simplemente haciendo clic con el botón derecho del ratón en el Explorador de Windows.

Santiago Paez