私が何を望んでいるのかを説明し、次にそれをどのように達成しようとしているのかを説明します。これについて正しい方法で行っているかどうか、またはもっと簡単な方法があるかどうかを知りたいです。
私が欲しいもの:ALSOに発生する自己解凍型の実行可能ファイルには、追加のエントリポイントがあります(これにより、実行可能ファイルがDLLであるかのように適切に使用可能になります)。追加のエントリ ポイントは、圧縮されたペイロードの一部であってはなりません。奇妙なことに、エントリ ポイントは LZMA 関数を実行しません (理由は聞かないでください...長い話です)。参考までに: DLL エントリ ポイントを使用して実行可能ファイルを作成するのは簡単なことです。その方法は既に知っています。
これをどのように追求しているか: LZMA SDK をダウンロードし、独自の C++ 自己抽出プログラムを構築します。LZMA API ドキュメントはないようです。明らかに、LZMA の使用方法を学びたい場合は、.\C\util\7z\7zmain.c または .\cpp\7zip\bundles\lzmaCon\lzmaAlone.cpp のいずれかを読む必要があります。それらを勉強することが最速の学習ツールかどうかはわかりません。
自己解凍コードを作成したら、必要な DLL エントリ ポイントを追加してビルドします。結果の EXE 自己解凍プログラムを zip ファイルと連結します (2 つのファイルを連結するには、DOS コマンドで十分です)。これは私の目標を達成するはずです。
考え?
ps ちなみに、私はこの数年前に部分的にやったことがあります。自己解凍プログラム (C# だと思います) を実行可能にし、それを (DOS コマンドを介して) zip ファイルと連結しました。出来上がり、自己解凍型の zip 実行可能ファイルが登場しました。私の現在の取り組みが異なるのは、現在 C++ を使用しており、この追加の任意の DLL エントリ ポイントが必要であることです。