【发布时间】:2011-03-13 02:02:15
【问题描述】:
我为使用 Delphi 2009 的桌面程序发布了一个可执行文件 (.EXE)。我没有运行该程序所需的外部 DLL 或资源。
我使用两个组件:LMD Innovative's ELPack 和 Sergey Tkachenko's TRichView,它们被编译到我的可执行文件中。
当我使用“发布”构建配置构建生产版本时,生成的可执行文件为 13,533 KB。
在使用 Delphi 2009 之前,我使用的是 Delphi 4。它生成的可执行文件只有 2,671 KB,同时包含相同的两个组件,并且与我当前版本的代码基本相同。
我知道 Delphi 2009 完全是 Unicode(这是我升级的主要原因),并且是 Unicode 可能会导致大小翻倍。但这大约是 5 倍。
我的可执行文件必须保持 5 倍大吗?还是有一些简单的方法可以减少大量可执行文件的大小?
请注意。有些人正在回答压缩 Delphi EXE 的方法。那不是我想要做的。我试图简单地了解为什么要使用如此多的空间来删除可能不需要的东西。如果这样做了,如果需要,之后仍然可以进行压缩。
安装后可执行文件的大小实际上并不重要。它用于下载目的,并最大限度地减少您要压缩它的服务器负载和下载时间。我更喜欢使用Inno Setup 并在安装例程本身中压缩程序。然后在安装时将其扩展为全尺寸。这既可以防止可能被检测为病毒,又可以消除在内存中解压缩程序所需的额外启动时间。此外,我对我的可执行文件和我的安装例程都进行了代码签名,并且一些压缩技术与之不兼容。
有关压缩的更多信息,请参阅 StackOverflow 问题:Delphi EXE compressor?
ldsandon 要求我准确提供我正在使用的选项,所以他们在这里:
(来源:beholdgenealogy.com)
(来源:beholdgenealogy.com)
【问题讨论】:
-
您当前使用的是哪个编译器开关?对代码大小影响最大的是向项目添加调试信息或控制代码的那些。
-
@splash:我有大约 400 KB 的自己的代码,大约 20 个单元。它们包括 14 个表格,使用 500 KB 的 dfm 文件。这不包括我使用的两个组件中的代码。
-
@ldsandon:我想我正在使用“发布”构建配置的所有默认值。
-
我不再知道默认设置是什么,因为开箱即用的设置并不“正确”,我更改了它们并设置了另一个默认设置。 IIRC 他们启用了优化,但无论如何添加一些调试信息,检查字符串格式等等。了解您实际使用的选项会很有用。
-
尝试 DebugDCUs = OFF,Map File = OFF
标签: delphi build-process executable