如何减小应用程序(exe)的大小?
一般来说,由delphi生成的exe文件,要比其由它编程语言生成的体积大一些。这主要是由于使用vcl的原因(当然,vcl是有许多优点的!)
以下是减小exe文件大小的几种途径:
01) 使用加壳工具(如 upx,aspack 等)
02) 使用 kol
03) 不使用vcl来编写程序
04) 使用 acl (api 控制库)
05) 使用 stripreloc
06) 去除运程调试信息与 td32
07) 把允许的代码写到 dll 中
08) 不要在设计时把图片放置在 form 上,而是运行时加载
09) 使用被压缩的图片(使用jpg 而不用 bmp)
10) 在 dfm 文件中减少属性
(参考后面的链接 “怎样使您的exe文件更轻便”)
11) use the tstringlist replacement by ~lom~
use the minireg - tregistry replacement by ben hochstrasser
01)
upx 是一个免费、轻便、可扩展和高性能的可执行文件加壳工具,支持多种不同的可执行文件格式。它可以达到非常优秀的压缩比,且可以非常快的解压。
aspack 是一款高级的win32可执行文件压缩器,可以减小32位windows程序的大小达70%。(aspack的压缩率提高了zip文件格式产业标准10-20%) aspack使得windows 95/98/nt 程序与库更小,降低了网络的传输量。它也可以在一定程度上保护程序免受那些非专业黑客的反向工程。压缩后的程序在运行时基本上没有什么性能上的影响。
http://www.aspack.com/aspack.htm
{****************************************************************}
02)
kol - (关键对象库 key objects library)是用于 delphi 开发强大的32位windows图形用户界面应用程序一套对象库。它比用vcl进行开发可以使程序变得更小。
{****************************************************************}
03)
不使用vcl
如果您想要实现瘦小的exe文件,就不要使用vcl,delphi 完全可以让您通过调用winapi函数来实现delphi 100%的丰富功能。
http://nonvcl.luckie-online.de/
http://www.erm.tu-cottbus.de/delphi/stuff/tutorials/nonvcl/index.html
http://www.swissdelphicenter.ch/en/delphizeus
http://www.tutorials.delphi-source.de/nonvcl/
{****************************************************************}
04)
acl (api 控制库 api controls library)
纯以api写程序是完全可能的,但我希望达到两个目的 —— 写出瘦小程序和生成新的控制库,在写程序的时候,也就创建了我自己的twincontrol和全部标准的windows控制类.
http://www.apress.ru/pages/bokovikov/delphi/index.html
{****************************************************************}
05)
stripreloc是一个免费的(gpl 许可协议) 命令行应用程序,用于移去win32 pe格式文件多余的重配区段(".reloc") ,以减小它们的大小。大多数编译器/链接程序(包括delphi)会在exe文件里写入重配区段,但由于exe文件从不会重新部署,所以该区段只会浪费空间。
http://www.jrsoftware.org/striprlc.php
{****************************************************************}
06)
去除调试信息
debug信息会占用一部分空间的,对于最终的发行版,完全可以不要这部分信息 。
delphi ide菜单
project-options-compiler - debugging 与
project- options - linker - exe and dll options
去掉下面两项,可以减少文件的大小
"include td32 debug info" 与 "build with runtime packages".
{****************************************************************}
08/09)
对于图片
最好不要在设计期把图片加到窗体,尤其是大的图片,因为这样以来,delphi会把图片也编译到你的可执行文件中去,从而增大exe文件的尺寸。建议在运行时,以代码的方式,实时的载入图片。
{****************************************************************}
10)
怎样使您的exe文件更轻便:
http://www.undu.com/dn970301/00000064.htm
{****************************************************************}
11)
tstringlist replacement by ~lom~
minireg - tregistry replacement