我使用Delphi 2009为桌面程序发布单个可执行文件(.EXE)。我没有任何程序运行所需的外部DLL或资源。我能做些什么来减少我的可执行文件的大小(Delphi)?
我使用两个组件:LMD Innovative's ELPack和Sergey Tkachenko's TRichView,它们被编译到我的可执行文件中。
当我构建我的生产版本时,使用“Release”构建配置,生成的可执行文件为13,533 KB。
在使用Delphi 2009之前,我使用的是Delphi 4.它生成的可执行文件只有2671 KB,同时包含相同的两个组件,基本上与我的当前版本具有相同的代码。
我的确明白Delphi 2009完全是Unicode(这是我升级的主要原因),而且Unicode可能会导致大小增加一倍。但是这大约是5倍。
是否有一个原因,为什么我的可执行文件必须保持5倍大?还是有一些简单的方法来减少可执行文件的大小?
请注意。有些人正在回答压缩Delphi EXE的方法。这不是我想要做的。我试图简单地看看为什么要使用这么多的空间来删除可能没有必要的内容。如果这样做,如果需要,压缩仍然可以在之后完成。
安装完成后,可执行文件的大小无关紧要。它用于下载目的,并最大限度地减少要压缩的服务器负载和下载时间。我更喜欢使用Inno Setup并在安装例程本身内部压缩程序。然后在安装时将其扩展为完整大小。这既可以防止可能的病毒检测,也可以消除在内存中解压程序所需的额外启动时间。此外我代码签署我的可执行文件和我的安装例程,并且一些压缩技术与此不兼容。
有关压缩的详细信息,请参见StackOverflow的问题:Delphi EXE compressor?
ldsandon问我,我用什么选项来提供,所以在这里,他们是:
Compiling Options http://www.beholdgenealogy.com/img/compilingoptions.jpg
Linking Options http://www.beholdgenealogy.com/img/linkingoptions.jpg
您目前使用哪个编译器开关?那些影响代码大小的是那些将调试信息或控制代码添加到项目中的代码。 – 2010-07-08 07:18:53
@splash:我的约20个单元中有大约400 KB的我自己的代码。它们包括14个使用大约500 KB的dfm文件的表单。这不包括我使用的两个组件中的代码。 – lkessler 2010-07-08 18:29:57
@ldsandon:我想我正在使用“发布”版本配置的所有默认设置。 – lkessler 2010-07-08 18:31:42