Delphi 如何减少可执行文件';s码(德尔福)?
我使用Delphi2009为桌面程序发布了一个可执行文件(.EXE)。我没有运行程序所需的外部DLL或资源 我使用两个组件:和,它们被编译到我的可执行文件中 当我使用“Release”构建配置构建生产版本时,生成的可执行文件为13533 KB 在使用Delphi2009之前,我使用的是Delphi4。它生成的可执行文件只有2671KB,同时包含了相同的两个组件,基本上与我当前的版本具有相同的代码 我知道Delphi2009完全是Unicode(这是我升级的主要原因),使用Unicode可能会导致大小增加一倍。但这个要大5倍左右 我的可执行文件必须保持5倍大,这有什么原因吗?或者有一些简单的方法可以减少可执行文件的很大一部分大小Delphi 如何减少可执行文件';s码(德尔福)?,delphi,build-process,executable,Delphi,Build Process,Executable,我使用Delphi2009为桌面程序发布了一个可执行文件(.EXE)。我没有运行程序所需的外部DLL或资源 我使用两个组件:和,它们被编译到我的可执行文件中 当我使用“Release”构建配置构建生产版本时,生成的可执行文件为13533 KB 在使用Delphi2009之前,我使用的是Delphi4。它生成的可执行文件只有2671KB,同时包含了相同的两个组件,基本上与我当前的版本具有相同的代码 我知道Delphi2009完全是Unicode(这是我升级的主要原因),使用Unicode可能会导致
请注意。一些人正在回答如何压缩Delphi EXE。这不是我想要做的。我只是想看看为什么这么多的空间被用来移除那些可能不必要的东西。如果这样做了,如果需要的话,之后仍然可以进行压缩 一旦安装了可执行文件,它的大小实际上并不重要。它是为了下载,并尽量减少服务器负载和下载时间,你想压缩它。我更喜欢在安装例程内部使用和压缩程序。然后,当它被安装时,它被扩展到全尺寸。这既可以防止可能的病毒检测,又可以消除在内存中解压缩程序所需的额外启动时间。我还对我的可执行文件和安装例程进行了代码签名,一些压缩技术与此不兼容 有关压缩的更多信息,请参阅StackOverflow问题:
ldsandon要求我提供我正在使用的具体选项,因此它们如下所示:
(来源:)
(来源:)如果将Unicode预期的2倍增长计算在内,那么最终的结果将是2.5倍的增长。考虑到您跳过了多少版本,这是有意义的。自Delphi 4以来,VCL和RTL中添加了很多内容,而且并非所有内容都可以轻松地进行智能链接,即使您从未使用过它。根据你使用的设备数量,你可能会多带一些行李
Allen Bauer和编译器团队补充道,但显然他们在谨慎行事,没有在尽可能多的地方使用它。希望我们能在2011年及以后的版本中看到更多的积垢减少。如果看不到“发布版”构建配置使用的实际设置来解释尺寸的增加,需要大量的推测 除了一些可能不太可能导致“拖入”的代码量大幅增加(即使未使用)的因素之外,增加的幅度最容易通过包含调试信息来解释 我将检查您的编译器和链接器设置:
- 调试信息(编译器设置)
- TD32信息(链接器)
- 远程调试信息(链接器)
将您的Delphi 2009项目中的这些设置与Delphi 4中的等效设置进行比较。当从Delphi 7移动到Delphi 2010时,我们的.exe从例如16兆增加到35兆 几周前,我在Embarcadero论坛上问了一个与你类似的问题。()在我的专栏文章中,我列出了一系列关于这个主题的链接,你可能会觉得这些链接很有用 我们尝试使用UPX压缩.exe。让它工作几个小时大大减少了我们的.exe,但出于以下原因,我们可能不会在生产中使用它:
如果您转到tools/configure tools,并像这样进行设置,您可以通过IDE中的菜单项轻松压缩正在处理的可执行文件
如果您不想使用exe压缩器,那么您应该试一试。另一种方法是查看“什么单位增加了大小?” 为此,我使用集成在IDE中的JCL“ProjectAnalyzer IDE”和JCL/JVCL安装,它显示了所有单元及其各自的大小。您可以将其导出到文本文件中。
如果您使用2个环境(D4和D2009),您将获得大量相关信息。较新的delphi中的标准单位可能包含更多字符串和常量