Я объясню, чего я хочу, а затем объясню, как я пытаюсь этого добиться. Я хочу знать, правильно ли я понимаю это, или есть что-то намного более легкое.
Что я хочу : самораспаковывающийся исполняемый файл, который происходит с ТАКЖЕ, имеет дополнительную точку входа (что делает исполняемый файл подходящим для использования, как если бы это была DLL). Дополнительная точка входа должна , а не быть частью сжатой полезной нагрузки. Точка входа, как ни странно, не будет выполнять никаких функций LZMA (пожалуйста, не спрашивайте, почему ... длинная история). К вашему сведению: создание исполняемого файла с точкой входа в DLL является тривиальным вопросом - я уже знаю, как это сделать.
Как я это делаю : Я скачал LZMA SDK и создам свой собственный самораспаковывающийся C ++. Там, кажется, нет документации по LZMA API. Очевидно, что если я хочу научиться использовать LZMA, мне нужно прочитать либо. \ C \ util \ 7z \ 7zmain.c, либо. \ Cpp \ 7zip \ bundles \ lzmaCon \ lzmaAlone.cpp. Я не знаю, является ли изучение их самым быстрым инструментом обучения.
Как только я создам самораспаковывающийся код, я добавлю нужную точку входа DLL и соберу ее. Получившийся самораспаковывающийся EXE-файл я конкатенирую с zip-файлом (для объединения двух файлов достаточно команды DOS). Это должно достичь моей цели.
Мысли
p.s. Между прочим, я частично сделал это годами ранее. Я сделал самораспаковывающийся (в C #, я думаю) исполняемый файл, который я затем конкатенировал с zip-файлом (с помощью команды DOS). Вуаля, самораспаковывающийся почтовый исполняемый файл появился. Что отличает мои нынешние усилия от того, что сейчас я использую C ++, и мне нужна эта дополнительная / произвольная точка входа в DLL.