我使用编译成我的可执行文件的两个组件:LMD Innovative’s ELPack和Sergey Tkachenko’s TRichView。
当我构建我的生产版本,使用“发布”构建配置,生成的可执行文件是13,533 KB。
在使用Delphi 2009之前,我使用的是Delphi 4.它生成的可执行文件只有2,671 KB,同时包含相同的两个组件,并且基本上具有与当前版本相同的代码。
我明白Delphi 2009完全是Unicode(这是我升级的主要原因),而Unicode可能会增加一倍的大小。但这是大约5倍。
有没有理由为什么我的可执行文件必须保持5倍大?还是有一些简单的方式来减少可执行大小的一大部分?
请注意。有些人正在回答压缩德尔福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
解决方法
几周前,我在Embarcadero论坛上提出了一个类似于你的问题。 (link)在我的OP中,我列出了一系列关于这个问题的链接,您可能会发现有用的。
我们尝试使用UPX压缩我们的.exe的。让它工作几个小时大大减少了我们的.exe,但是我们可能不会在生产中使用它们,原因如下:
>我们有相当多的.exe是不想等待每一个构建1/2天。 (可能我们可以找到一个非强制性的参数集合到UPX,这将减少这个…)
>尽管.exe的大小减少了,但是我们的发货人并不是这样的,因为我们的安装程序(毫不奇怪)无法从压缩文件中压缩更多的压缩文件,而是能够将原来的16兆低至8兆
>我已经阅读了一些报道,在某些时候(很少,但不是永远不会),UPX exe引发了各种反病毒程序来报告应用程序包含病毒。 (我不记得我看到这个的日期,地点或细节,所以我在这里报告有点不公平)。但是,我们非常不利于承担甚至可能发生的风险,即UPX离开桌子…
Embarcadero论坛上的链接还包括一个link到另一个关于这个话题的线索。
我继续对我们在Delphi 2010时发现的代码膨胀感到惊讶和失望。正如Nick所说,Unicode的2X相当过分。
然而,由于IMO,D2010在如此多的其他方面进行了如此惊人的升级,因此,在转向D2010时,这种膨胀是相对较小的权衡。但是,这的确意味着我们可能不得不转移到运送2张CD而不是一张CD。我不期待看到我们组织对此的反应…