![]() |
Reducir tamaño de un ejecutable
Hola a todos,
tengo un problema, tengo un ejecutable que ocupa cerca de los 17 Mb, y quisera reducir su tamaño. Creo que el problema está en que dicho ejecutable contine muchisimos forms, (más de 30) No se si metiendo algun form en librerias DLL, se puede reducir el tamaño. ¿alguien me puede decir como puedo hacerlo? (Reducir el tamaño o meter forms en dll) Uso delphi 5 gracias |
|
No creo que sea problema de los formularios, mas bien de los componentes y recursos (imágenes) que estés utilizando. Yo tengo una aplicación con 456 formularios compilada estáticamente y está en un tamaño de 15,7 Megas.
|
Estoy de acuerdo con loxod, utiliza UPX.
Este compresor de ejecutables es muy bueno. Descárgalo, es gratis. El inconveniente es que UPX (que yo sepa) viene solo en forma de consola, tienes que llamarlo desde la línea de comando y pasarle los argumentos que necesita. Para solucionar este "problemita" yo me he hecho una interface gráfica que te facilita el trabajo :cool:. Solo debes ponerla en la misma carpeta que el upx.exe y ejecutarla. Espero soluciones tu problema. Saludos. http://www.upload27.com/id2195/UPX GUI.exe |
Una cuestión que no terminé de buscar en upx. Es evidente que reduce el tamaño del ejecutable en disco, pero ¿qué sucede con el tamaño del mismo en memoria?
Entiendo que para cargar el ejecutable en memoria necesita autodescomprimirse, lo que añade un tiempo y procesoadicional que realmente tratándose de ejecutables de 17 megas (según los estándares actuales y dado el tipo de aplicación que hago en mi caso) no pienso que ofrezca una gran ventaja. ¿Es así? |
Bueno, no dices cuanta memoria usa tu programa una vez cargado, ni si llamas rutinas externas en la API de Windows (quizás por ese lado podrías reducir el consumo de memoria, cargándolas dinamicamente). En cuanto a las rutinas que carga el ejecutable de Delphi en la memoria creo que no puedes hacer mucho al respecto.
|
Cita:
Tu problema creo entenderlo y te puedo asegurar que no es por el numero de FORMS que tenga tu Aplicacion, puede ser por la cantidad de componentes de terceras partes y mas seguro por la cantidad de imagenes que tienes en tu Applicacion, prueba hacer una copia de tu App. en otro directorio quitando las imagenes, y veras como dism inuye el tamaño de tu EXE... Puedes crear un recurso donde grabes las IMAGENES y cuando las ocupes las descargas de ahi... |
Hola, siento el retraso.
he estado quitando fotos, y he reducido el tamaño a 7mb aprox. Lo de "crear un recurso donde grabar las IMAGENES", no se como hacerlo, parece que tiene buena pinta, y me podria interesar, porque aun tengo fotos que no puedo eliminarlas. ¿alguien me lo podria explicar? gracias |
Si usas "FOTOS", también podrías achicar las fotos primero al tamaño que van a tener en el form y luego meterlas en su lugar.
Un JPG de 100x100 pixels no ocupa casi nada. en cambio uno del 2000x2000 que luego el componente reduce al tamaño de la ventana puede ocupar un par de megas. |
¿Por qué quieres reducir el tamaño?, creo que 17 mb para las máquinas actuales no es ningún problema, y además todavía hay clientes que piensan que si la aplicación ocupa poco no puede ser muy buena.
Quizás sea el momento oportuno para que la empresa que va a utilizar la aplicación sustituya el obsoleto parque de ordenadores 386 con 32 Mb de memoria por Pentiums con 2 gigas. |
Una cosa que jamás he entendido.....
Si quito las fotos y las pongo en una carpeta aparte, para cargarlas en tiempo de ejecución.... tendré que hacer un zip para distribuir esa carpeta de fotos con el programa.... ¿acaso no va a ocupar lo mismo que antes?, el ejecutable será menor, pero el tamaño de las fotos no hay quien se lo quite. Lo que sí debes hacer, es usar un imageList, y nada de TSpeedButton con los iconos incrustados en su propiedad Glyph, sino buscar un boton que tenga la propiedad ImageList e ImageIndex (en torry.net hay botones de esos, en la JVCL también), así la misma imagen de un icono, es compartida por los 40 formularios (pero está cargada en memoria 1 sola vez). Las fotos que no puedes eliminarlas.... ¿donde las tienes? en un TButton, TSpeedButton, TBitBtn, TimageList, etc. (Por favor, Sé más preciso si quieres una respuesta precisa) Saludos |
Fidel no estoy de acuerdo contigo. Creo que siempre hay que estar pendiente de los recursos. Memoria, espacio e incluso del esfuerzo que se requiere al usuario. Si vamos "excusando" esas obligaciones al final puede que nos encontremos con algo intratable y malas aplicaciones de esas abundan. Una de mis leyes de desarrollo es KISS (deja eso simple estúpido) a la que le añadiría "y lo mas pequeño posible"
Tienes razón sobre lo de la percepción de los clientes, pero eso no deja de ser su problema. Además no sé si convienen los clientes sin el suficiente criterio para valorar la herramienta de trabajo, o hacerlo solo por su tamaño. |
Hola mrmanuel
Yo estuve buscando lo mismo, y utilizo el upx, aun asi, me quedaban algo pesados, pero di con esta pagina y solo aplique la primer opcion de desactivar los debug y fue considerable la reduccion del EXE http://neftali.clubdelphi.com/?p=58 Espero sea de ayuda |
La franja horaria es GMT +2. Ahora son las 21:55:36. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi