我使用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