Solución:
Al pasar de Delphi 7 a Delphi 2010., nuestros .exe crecieron, por ejemplo, de 16 megas a 35 megas.
Hice una pregunta similar a la tuya en el foro de Embarcadero hace unas semanas. (enlace) En mi OP, enumeré una serie de enlaces sobre este tema que pueden resultarle útiles.
Intentamos usar UPX para comprimir nuestros .exe. Dejarlo trabajar durante horas redujo significativamente nuestro .exe, pero probablemente no lo usaremos en producción por estas razones:
-
Tenemos bastantes .exe y no queremos esperar 1/2 día en cada compilación. (Es posible que podamos encontrar un conjunto de parámetros de fuerza no bruta para UPX que reduciría esto …)
-
Aunque el tamaño del .exe es reducido, nuestro envio no lo fue, porque nuestro instalador (como era de esperar) no puede extraer mucha más compresión del archivo ya comprimido … mientras que pudo reducir el .exe original de 16 megas a 8 megas.
-
He leído algunos informes de que en algún momento (rara vez, pero no nunca), los exe de UPX activaron varios programas antivirus para informar que la aplicación contenía un virus. (No recuerdo la fecha, el sitio o los detalles de dónde vi esto, por lo que es un poco injusto por mi parte informarlo aquí). Pero somos muy adversos a correr el riesgo de que ocurra esa posibilidad, que UPX está fuera de la mesa …
El enlace en el foro de Embarcadero también incluye un enlace a otro hilo SO sobre este tema.
Sigo sorprendido y decepcionado por el exceso de código que encontramos cuando nos mudamos a Delphi 2010. Como señala Nick, 2X para Unicode es bastante excesivo.
Sin embargo, la hinchazón es una compensación relativamente menor cuando se pasa a D2010, porque, en mi opinión, D2010 es una excelente actualización de muchas otras maneras. Pero lo hace significa que probablemente tendremos que pasar a enviar 2 CD en lugar de uno. No estoy deseando ver la reacción de nuestra organización a esto …
Sin ver la configuración real que utiliza su configuración de compilación de “Versión”, para explicar este aumento de tamaño se requiere mucha especulación.
Más allá de algunos factores quizás improbables que resultan en un gran aumento en la cantidad de código que se “arrastra” aunque no se use, esa magnitud de aumento se explicaría más fácilmente por la inclusión de información de depuración.
Verificaría la configuración de su compilador y enlazador para:
- Información de depuración (configuración del compilador)
- Información de TD32 (enlazador)
- Información de depuración remota (vinculador)
Compare estos ajustes en su proyecto Delphi 2009 con los equivalentes en Delphi 4.
Factoriza el aumento esperado de 2X de Unicode y terminas con un aumento de 2.5X sin tener en cuenta. Esto tiene sentido considerando cuántas versiones se han saltado. Se han agregado muchas cosas a VCL y RTL desde Delphi 4, y no todas son cosas que se puedan vincular fácilmente, incluso si nunca las usa. Dependiendo de cuántas unidades esté utilizando, podría transportar bastante equipaje adicional.
Allen Bauer y el equipo del compilador agregaron una nueva característica en D2010 para ayudar a reducir esto, pero aparentemente están pisando con cautela y no la usaron en tantos lugares como podrían haberlo hecho. Con suerte, veremos una mayor reducción de cruft en 2011 y versiones posteriores.