質問

ある時点で、DelphiでコンパイルされたEXEを小さなダウンロードサイズに粉砕する小さな圧縮ユーティリティがありましたが、今では見つけることができません。推奨事項はありますか?

また、これらの種類のユーティリティを使用することには欠点がありますか? (私は主に、地方/ダイヤルアップユーザーのダウンロード時間を短縮するために使用しています)。


関連する質問: UPXを使用してWindows実行可能ファイルを圧縮することには欠点がありますか

役に立ちましたか?

解決

数年前、実行ファイルを圧縮してダウンロードを小さくすることを検討しました。

私がやったこと、そしてあなたに推奨することは、 Inno Setupのようなインストーラプログラムを使用することです。 代わりに。プログラムをインストール/アンインストールする単一のEXEを作成するだけでなく、実行可能ファイルのみに対して個別のコンプレッサーが実行するのと同じくらい実際にEXEを圧縮します。

プログラムがインストールされると、解凍されます。そのため、ウイルスのようには見えず、ロード時間が長くなりません。

それで、ダウンロードサイズが小さくなり、プロ並みのインストールスクリプトが同時に得られるというメリットが得られます。

p.s。 Inno Setupは無料です。

他のヒント

次のことはお勧めしません:

  • EXEコンプレッサーは、アプリケーションをウイルスのように見せることができます(自己修正)
  • gzip / zipは圧縮と同じくらい効果的で、アプリをいじらないでください
  • EXEコンプレッサーはアプリの読み込み時間を増加させます(別の問題であるセットアッププログラムについて話している場合を除きます)

このクレイジーなサイトは、私が遠い昔に聞いたことのある議論をもたらします(今日かどうかはわかりませんが、現代のパッカーはおそらく今日とは異なる戦略を持っているでしょう)この記事はWin32を参照しています! :)

http://topic.csdn.net/t/20000408/08/ 6785.html

  

次のような最新のマルチタスクOS   Windows 95/98およびNTは   「仮想メモリ」と呼ばれるシステム。いつ   プログラムが起動し、そのコードはすべて   すぐにメモリにロードされない   起動時、DOSの場合と同様   プログラム。代わりに、の一部のみ   アクティブに実行されているコードは   メモリに保存されます。たとえば、   あなたのプログラムには、印刷オプションがあります   メニュー、およびその背後にあるコードを処理する   印刷。このコードは   一度印刷するとメモリに読み込まれます   機能は最初にユーザーによって選択されます。   そして、コードがロードされた後   印刷機能が使用されていないメモリ   しばらくの間、システムは「破棄」します。   コード、メモリを解放する   他のアプリケーションの場合、占有   必死にメモリが必要です。これは一部です   「ページング」と呼ばれるプロセスのそして   プログラムに対して完全に透過的。

     

Win32での別の方法のページング   メモリを節約します   プログラム(またはDLL)のインスタンス   コード用に同じメモリを共有します。に   言い換えれば、通常の   状況は本物ではありません   物理量の違い   間のコードに割り当てられたメモリ   プログラムの100個のインスタンスを開始する   1つのインスタンスを開始します。

     

すべてのWin32プログラムが次のように動作した場合   DOSプログラム、すべてをロード   メモリとそこまでそれを維持   プログラムは終了しましたが   複数のメモリを共有する   インスタンス、あなたはおそらく想像することができます   物理メモリの実行速度   限られた量のシステム上で、   ディスクスワッピングを開始します。

     

しかし、これはまさに現在の   Win32 EXEコンプレッサーは   EXE / DLL's!彼らは完全に行く   OSのページングシステムに対して   すべてのコードをメモリに解凍し、   終了するまでそこに保持します。   また、コードは   " raw" EXEファイルの形式(つまり、   メモリに保存されるのと同じ方法)、   OSはコードを共有できません   複数のインスタンス。

Delphi専用のものは知りませんが、 UPX は非常に人気がありますある種のもの。唯一の欠点は、実行時に実行可能ファイルを解凍する必要があり、時間がかかることです。ただし、適切なサイズの実行可能ファイルの場合は非常に高速であるようです。

おそらく考えているのは ASPack -Delphiで書かれたEXEコンプレッサーですが、 EXEを圧縮します。ただし、Delphi EXEで十分に機能する場合があります。ダウンロード時間を節約するためだけにEXEコンプレッサーを使用するべきではないという他の回答にも同意します。 EXE圧縮が良いアイデアである特定の状況があるかもしれませんが、一般的にはそうではありません。

代わりに、特に7zip圧縮を使用するものを見つけることができる場合は、適切なインストールビルダーを使用してください。 InstallAware は、最大圧縮のために7zipを内部的に使用することを知っています。所有しているDelphiのバージョンによっては、InstallAwareライセンスもある場合があります。

他に何もなければ、 7zip 無料。インストーラー用のSFXの個別のダウンロードです。

最大圧縮には、 UPX をlzmaオプションとともに使用します。

upx --lzma yourfile.exe

圧縮されたEXEまたはDLLの主な不都合は、OSが複数のインスタンス間でコードを共有できないことです。
そのため、メモリを浪費し、インスタンスを起動するたびに解凍する必要があり、圧縮インストールよりもダウンロードの利点がなくてもウイルスのような動作を示します。
ネットワークドライブから直接起動する場合は、ポジティブなケースのみです。

ターミナルサーバー(Citrixなど)は、アプリケーションバイナリが圧縮されていない場合、同じメモリを使用すると考えています。圧縮されたexeを意味することは、Citrix環境で小さな災害を引き起こす可能性があります。

UPX は動作しますが、Delphi固有ではありません。

PEtiteを使用します: http://un4seen.com/petite/

私もupxに投票します。言及された欠点のほかに、基本的なリバースエンジニアリングおよびそれらの不自由な「リソースハッカー」からも保護します。ツール。ちなみにこれは十分であり、それらのほとんどは圧縮された実行可能ファイルを開けません。

私はしばらく前にここでDelphi実行可能ファイルでUPXを使用することの短所について質問し、いくつかの素晴らしい回答を得ました。

マイナス面はありますかUPXを使用してWindows実行可能ファイルを圧縮しますか?

PECompact を使用できます。これは、人々が簡単に解読できず、テストが示したように(メインページに表示され、少し下にスクロールします)ASPackやUPXよりも優れています。以前のDelphiプロジェクトで使用しています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top