SFX (自己解凍インストーラー) に似たものを作成しようとして、Visual C++ のカスタム リソースを使用して、セットアップ ファイルを 1 つの exe に含めていました。セットアップ ファイルのサイズが 900 MB を超えると、リンカーはリソースが埋め込まれた exe を生成できません。奇妙なことに、リンカーは警告なしで exe を生成します。生成された exe は、静的にリンクされた MFC アプリ (実行可能ファイルのメイン アプリ) です。ただし、リソースは含まれません。コンソールからのリンク中にexeのサイズを見てきました。最終的に2MBのexeに落ちる前に、しばらくの間900MBを示していました。一部のファイルを削除した場合 (合計サイズが 500MB になるとします)、すべてのリソースが埋め込まれた exe がすべて正常に生成されます。カスタム リソースの実際のサイズ制限はありますか? 実行可能ファイルの最終的なサイズは約 1GB であり、これは win32 アプリが対応できる 2GB よりはるかに小さいことに注意してください。これは vc++ 2010 のバグまたは機能なのだろうか? ところで、/expectedoutputsize トリックも使用しました。ただし、期待される出力サイズが大きくなり、リンクがはるかに高速になることを除けば、それは役に立ちません。
質問する
753 次
3 に答える
1
遅ればせの回答。他の人に役立つかもしれません。あなたの質問に対する答えではないかもしれませんが、これはあなたの問題の解決策になるかもしれません. 「Bitrock インストーラー」を確認します。これにより、Self Extract Installer も提供されます。多くの展開プロジェクトでそれをうまく使用しました。
于 2013-07-17T04:00:18.290 に答える
0
PECOFF 仕様によると、リソース データ エントリのサイズは 4 バイトです (IMAGE_RESOURCE_DATA_ENTRY.Size - winnt.h を参照)。
Data RVA フィールドが指すリソース データのサイズ (バイト単位)。
于 2012-07-26T08:47:31.443 に答える
0
私はここで同様の答えに答えました。
基本的に、バイナリ + マジック ナンバー (一意の区切り記号) を実行可能ファイルの末尾に追加します。実行時に読み取り用に実行可能ファイルを開き、マジック ナンバーまたは別の方法でオフセットを見つけます。残りのファイルはビッグ データです。
于 2013-11-28T12:31:19.233 に答える