|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Упаковка файлов(.dll, .exe) в один .exe
Здравствуйте. Вопрос таков:
Как запихнуть всяческие .dll'ы и .ехе'шники в одну программу? То есть, у меня имеется, допустим, .exe программы, и мне нужно, чтобы по нажатии кнопки в форме, этот .ехе запускался, и не откуда-то на компе, а из самой программы. Всмысле, чтобы на выходе у меня получился один .exe файл моей программы, а не файл моей программы и папка с .exe программ которые открываюся моей прогой. Надеюсь, что все понятно. З.Ы. Гыг, 7 раз использовал слово "программа" |
#2
|
||||
|
||||
SFX, ага?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
Я думаю, он не SFX имеет ввиду.
Есть несколько вариантов для реализации даннной идеи. 1-ый вариант (самый простой): Требуется написать отдельную программу, которая бинарный файл переводит или в Base64, или в HEX, или в числовую последовательность. Результат работы программы заносится в массив в (отдельном) модуле в вашей программе. После пишется процедура преобразования данного массива (т.е. сохранения) его в файл. Все! Если интересует исходник, могу на файл. обменник залить. 2-ой вариант (посложнее): У каждого exe-файла есть сигнатура (несколько байт в конце), которые завершают программу, т.е. сам exe-файл. После этой сигнатуры можно писать чего угодно. А там уже ваш план реализации. Как один из вариантов, можно создать таблицу позиций в этом же файле, для последующего извлечения ваших сторонних. Просто прыгать по этим позициям, да копировать определенное кол-во байт в другой файл. Вроде так и устроены установщики. Но есть проблема, если ваша программа запущена, то Вы не сможете открыть exe для записи. Поэтому придеться написать еще одну программу для записи в ваш exe других данных. Исходника данной идеи у меня нет. |
#4
|
||||
|
||||
вогнать все в ресурс и из него по мере необходимости вытаскивать, сохраняя на диск в %TEMP% и оттуда же запускать.
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
Цитата:
Думаю, он мне подойдет, ибо я чайник и к сложным вариантам как-то еще не тянет. Мне бы исходник и советы по адаптации его под мою программцу(что где изменить, как написать), если не трудно. Последний раз редактировалось Mikle, 05.07.2011 в 20:04. |
#6
|
|||
|
|||
Вариант с ресурсом проще.
|
#7
|
||||
|
||||
А мне кажется, что проще запаковать всё что надо в SFX, указать извлечение во временную папку и автозапуск нужного exe. И никакого секса с ресурсами.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#8
|
|||
|
|||
Ну, раз проще, может объясните как?=)
|
#9
|
||||
|
||||
Прикрепил к сообщению архив, содержащий два файла: exe (готовая программа) и dpr (исходный код). Программа не имеет окна, поэтому ее нужно запускать так: <путь>\exe2pas.exe "<бин. файл>". Программа все сделает и запишет в файл с тем же именем, только с расширением PAS.
|
#10
|
||||
|
||||
Ухихикался, обалденно нужная программа.
А вообще, как говорилось выше, способов решения задуманного масса. Каждый будет предлагать то, что ему больше нравится, поэтому ТС стоит определится какой вариант ему по зубам. Последний раз редактировалось angvelem, 06.07.2011 в 01:24. |
#11
|
||||
|
||||
angvelem, иногда эта программка полезна для меня. Часто в своих программах использую ее результат деятельности.
|
#12
|
||||
|
||||
Цитата:
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#13
|
||||
|
||||
Для запуска ехе с памяти можно использовать этот модуль Load_PE.rar. Там только шифрование убрать надо.
А запихнуть ехешку в файл способов много, но проще через ресурс. Вот пример: Exe in res.rar Вопрос зачем с памяти запускать? Если с винта в папке темп намного проще и 100% запуститься. If end Then begin; Последний раз редактировалось AND_REY, 06.07.2011 в 11:11. |
#14
|
||||
|
||||
Можно все твои безбелушки закидать в ресурсы, а передавать им управление прямо из кода. Например можно вызвать ф-ю CreateProcess(Ex) а потом туда впиндюрить содердимое нужного тебе экзешника.
По запросу "запуск процесса из памяти" Googoolme выдает много интересного. добавлено спустя 3 наносекунды собственно AND_REY тебе так и изложил — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 06.07.2011 в 13:07. |
#15
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |