Redudir el tamaño de un ejecutable
Primero y antes de nada, supongo que ésta ya las ha hecho porque es básica, asegúrete de eliminar toda la información de debug del ejecutable. Las opciones para desactivar esa información éstán en (Desde el entorno de Delphi):
Project/optiones/pestañas compiler y linker.
Es información que necesitas para programar, pero no en el ejecutable final.
Ésto mismo también lo puedes hacer pasándolo al ejecutable ésta aplicación (de los creadores de Exception Magic):
También puedes probar a pasarle al ejecutable ésta aplicación (de Jordan Russell) para eliminar la «relocation section» de EXE (en su página está la explicación completa):
A partir de ahí entiendo que tienes dos opciones:
- Utilizar compresores de ejecutables (hay muchos disponibles -UPX, ASPack, CExe,NeoLite, PECompack, Petite, PKlite32, Shrinker, WWPack32,EZP, FSG, JDPack, MWE, …-), con lo que tu aplicación queda igual (en cuanto a diseño), pero lo que haces es comprimirla. Al ejecutarse, tu aplicación se descomprime en memoria y se ejecuta, no tiene más secreto.
- Utilizar packages, ya sea estáticos o dinámicos; Entiendo que ésto es una decisión más de diseño. Si utilizas estáticos, es como partir tu aplicación en pequeños trozos. Al ejecutarla se cargan todos los trozos en memoria (y vuelves a tener el programa entero en memoria, pero en trozitos); Si utilizas dinámicos la programación se complica un poco y conseguirás tener en memoria cuando ejecutes sólo los que necesites. El tema de packages en general te obligará a tener otras cosas en cuenta, como, los packages a distribuir en la instalación, versiones de packages (tuyos y los que ya puedan existir en la máquina donde instales),…
Si quieres afinar mucho más en el tamaño, hay otras soluciones, pero algunas de ellas ya son a tener en cuenta en la programación:
- Utilizar las librerías KOL. Sustituyen a algunas de Delphi para «cargar» menos la memoria.
- Intentar utilizar la VCL lo menos posible (o no usarla):
http://www.luckie-online.de/Tutorials/
http://www.delphi-source.de/tutorials/nonvcl/ - Cuidado con las imágenes que se añaden a los formularios y el formato en que se añaden. Si se utilizan imágenes de forma repetida utilizar recursos y no añadirlas en diseño.
- Añadir el mínimo posible de propiedades al DFM:
http://www.undu.com/DN970301/00000064.htm
Si tienes más sugerencias, por favor envíalas a esta dirección.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Aunque ya este articulo tiene mas de 10 años, llegue a él por una referenia de clubdelphi
Lo que me provoca la duda es porque dices:
Utilizar las librerías KOL. Sustituyen a algunas de Delphi para “cargar” menos la memoria.
¿Porque cargan menos la RAM que las nativas de delphi?
Intentar utilizar la VCL lo menos posible (o no usarla)
¿ y si no uso la VCL que uso entonces ?
Estos dos aspectos en que influyen sobre el tamaño del ejecutable?
@JoAnCa
Esta es una librería que ha quedado un poco desfasada y sólo funciona con versiones antiguas de Delphi. Lo que hace es sustituir muchas librerías de Delphi por otras que consumen mucha menos memoria, en contrapartida se pierden funcionalidades.
Sólo estaría justificado en casos en los que el tamaño del ejecutable sea «crítico» y se necesiten un conjunto de componentes y funciones básico.
No están pensadas para uso general.
Al tener el ejecutable un tamaño mucho más pequeño, ocupa menos memoria, se ejecuta mucho más rápido,…
De todas formas como he dicho no es una opción que se plantee para uso general, sino para casos muy concretos y «especiales».
Un saludo.