Brackets Ответов: 2

Как создать исполняемую папку программы?


Есть ли способ создания самоэкзетрактора по уже созданной программе?
Я нашел отличный метод изготовления самоэкстрактора
Добавление и извлечение двоичных ресурсов[^]
но он помещает файлы в файл. exe только при компиляции, в то время как мне нужно, чтобы это была функция, которая будет выполняться несколько раз, и каждый раз она будет выполняться с новыми файлами.
Мне нужна функция программы, которая помещала бы / сохраняла / записывала некоторые файлы в другую программу .exe, из которой я мог бы извлечь эти файлы позже, выполнив ее. Я забочусь о том, чтобы поместить эти файлы в один самоэкстрактор больше, чем сжатие.

Итак, коротко: Как создать программу, которая создает программы с некоторыми файлами и с некоторым исполняемым кодом в ней?

Что я уже пробовал:

Я полагаю, что это требует некоторого опыта в создании самих инструментов разработки, так что, может быть, есть способ заимствовать что-то, скажем, из MS Visual C++?

Может быть, это возможно с библиотекой zlib (так как ее программы делают ту часть, где вы помещаете файлы в один файл, но опять же, я хочу, чтобы эти файлы были в exe.)?

Mohibur Rashid

Попробуйте лучшую архитектуру

Sergey Alexandrovich Kryukov

Золотые слова. Следующий комментарий энхзфлеп тоже очень хорош, пожалуйста, смотрите.
—СА

Brackets

Если бы я знал о лучшей архитектуре, меня бы здесь не было, чтобы задать этот вопрос, спасибо.

enhzflep

Для меня это очень похоже на проблему X/Y.

Проблема X/Y возникает, когда вам нужно выполнить задачу, X. вы воображаете, что лучший способ решить эту проблему-сделать Y. Итак, затем вы выходите в интернет, чтобы получить помощь и задать вопросы о достижении Y.

К сожалению, если бы люди знали, что вы пытаетесь достичь X вместо Y, они дали бы вам совершенно другой совет.

Итак, со всем сказанным - чего вы в конечном счете пытаетесь достичь? Помните, сжатие-это инструмент, который вы считаете необходимым, а не само назначение.

Sergey Alexandrovich Kryukov

Вы очень точно описали весь синдром. Очень жаль, что так много исследователей не понимают этого; и это довольно трудно объяснить таким людям; и они не только новички. Это очень важно: определить проблему, которая не должна быть решена, вместо того, чтобы решить ее.

Одна проблема заключается в том, что иногда это даже не X/Y, а A/.../X/Y, и, возможно, даже X не следует решать. Я всегда стараюсь спросить спрашивающего: что такое А, но они редко отвечают.

—СА

Mohibur Rashid

+5
Вы очень хорошо все объяснили.

2 Ответов

Рейтинг:
20

Brackets

Мне не нужно создавать zip-архив. Мне не нужно, чтобы это было .молнией, но, чтобы быть .exe-файла. Мне нужно создать такую программу, как WinZip, только без сжатия и преобразования из. exe в. zip. Я предполагаю, что это просто более простая версия zip. Та часть, где запущенная программа собирает все файлы вместе для себя/для другой программы, - это единственная часть, которой мне не хватает.

Richard MacCutchan

Извините, но я не понимаю, что это значит. Самораспаковывающийся zip-архив - это исполняемый файл.

Brackets

Но то, как он создается, меня не устраивает. Вы можете поместить файлы в такой самоисполняемый файл только при его компиляции. Для этого мне нужен код. Помещать файлы в самоэкстрактор-это функция нужной мне программы.

Richard MacCutchan

Тогда вам нужно будет написать свою собственную программу, чтобы сделать это.

Brackets

Да. Какие-нибудь советы, как мне это сделать?

Richard MacCutchan

Не совсем, так как я не совсем понимаю, что вы пытаетесь сделать. Предполагая, что вы не имеете опыта в создании исполняемых файлов с нуля, то лучшим способом, вероятно, было бы добавление файлов в качестве ресурсов с помощью UpdateResource (и связанные с ним) функции.

Brackets

Спасибо. Я провел небольшое исследование ресурсов, и мои проблемы решены.

Рейтинг:
0

Dave Kreskowiak

На самом деле, да, вам действительно нужно создать.сжатый файл.

Самораспаковывающийся исполняемый файл - это не что иное, как файл. EXE с a.ZIP-файл прилагается к его концу, что-то вроде этого:

C:\>COPY SelfExtractor.exe + MyZipFile.zip  SelfExtractingZip.exe

Вам нужно написать свой собственный экстрактор, чтобы посмотреть на файл, из которого он был запущен, и найти его .ZIP-заголовок в этом файле. Оттуда это ваша собственная реализация распаковки архива на основе потока, который вы открываете и стремитесь к началу.ZIP-файл-часть вашего файла. EXE.