Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.07.2011, 16:18
Mikle Mikle вне форума
Прохожий
 
Регистрация: 05.07.2011
Адрес: Минск, Беларусь
Сообщения: 3
Версия Delphi: 7
Репутация: 10
Вопрос Упаковка файлов(.dll, .exe) в один .exe

Здравствуйте. Вопрос таков:
Как запихнуть всяческие .dll'ы и .ехе'шники в одну программу? То есть, у меня имеется, допустим, .exe программы, и мне нужно, чтобы по нажатии кнопки в форме, этот .ехе запускался, и не откуда-то на компе, а из самой программы. Всмысле, чтобы на выходе у меня получился один .exe файл моей программы, а не файл моей программы и папка с .exe программ которые открываюся моей прогой.
Надеюсь, что все понятно.
З.Ы. Гыг, 7 раз использовал слово "программа"
  #2  
Старый 05.07.2011, 17:41
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

SFX, ага?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
  #3  
Старый 05.07.2011, 19:05
Аватар для GriLab
GriLab GriLab вне форума
Начинающий
 
Регистрация: 26.11.2010
Адрес: Минск
Сообщения: 190
Версия Delphi: XE 15.0.3890
Репутация: 415
По умолчанию

Я думаю, он не SFX имеет ввиду.
Есть несколько вариантов для реализации даннной идеи.

1-ый вариант (самый простой):

Требуется написать отдельную программу, которая бинарный файл переводит или в Base64, или в HEX, или в числовую последовательность. Результат работы программы заносится в массив в (отдельном) модуле в вашей программе. После пишется процедура преобразования данного массива (т.е. сохранения) его в файл. Все! Если интересует исходник, могу на файл. обменник залить.

2-ой вариант (посложнее):

У каждого exe-файла есть сигнатура (несколько байт в конце), которые завершают программу, т.е. сам exe-файл. После этой сигнатуры можно писать чего угодно. А там уже ваш план реализации. Как один из вариантов, можно создать таблицу позиций в этом же файле, для последующего извлечения ваших сторонних. Просто прыгать по этим позициям, да копировать определенное кол-во байт в другой файл. Вроде так и устроены установщики. Но есть проблема, если ваша программа запущена, то Вы не сможете открыть exe для записи. Поэтому придеться написать еще одну программу для записи в ваш exe других данных. Исходника данной идеи у меня нет.
  #4  
Старый 05.07.2011, 19:50
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вогнать все в ресурс и из него по мере необходимости вытаскивать, сохраняя на диск в %TEMP% и оттуда же запускать.
__________________
Пишу программы за еду.
__________________
  #5  
Старый 05.07.2011, 20:00
Mikle Mikle вне форума
Прохожий
 
Регистрация: 05.07.2011
Адрес: Минск, Беларусь
Сообщения: 3
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от GriLab

1-ый вариант (самый простой):

Требуется написать отдельную программу, которая бинарный файл переводит или в Base64, или в HEX, или в числовую последовательность. Результат работы программы заносится в массив в (отдельном) модуле в вашей программе. После пишется процедура преобразования данного массива (т.е. сохранения) его в файл. Все! Если интересует исходник, могу на файл. обменник залить.

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

Последний раз редактировалось Mikle, 05.07.2011 в 20:04.
  #6  
Старый 05.07.2011, 22:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вариант с ресурсом проще.
  #7  
Старый 05.07.2011, 23:22
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

А мне кажется, что проще запаковать всё что надо в SFX, указать извлечение во временную папку и автозапуск нужного exe. И никакого секса с ресурсами.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
  #8  
Старый 05.07.2011, 23:41
Mikle Mikle вне форума
Прохожий
 
Регистрация: 05.07.2011
Адрес: Минск, Беларусь
Сообщения: 3
Версия Delphi: 7
Репутация: 10
По умолчанию

Ну, раз проще, может объясните как?=)
  #9  
Старый 06.07.2011, 00:59
Аватар для GriLab
GriLab GriLab вне форума
Начинающий
 
Регистрация: 26.11.2010
Адрес: Минск
Сообщения: 190
Версия Delphi: XE 15.0.3890
Репутация: 415
По умолчанию

Прикрепил к сообщению архив, содержащий два файла: exe (готовая программа) и dpr (исходный код). Программа не имеет окна, поэтому ее нужно запускать так: <путь>\exe2pas.exe "<бин. файл>". Программа все сделает и запишет в файл с тем же именем, только с расширением PAS.
Вложения
Тип файла: zip exe2pas.zip (43.9 Кбайт, 95 просмотров)
  #10  
Старый 06.07.2011, 01:15
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ухихикался, обалденно нужная программа.
А вообще, как говорилось выше, способов решения задуманного масса. Каждый будет предлагать то, что ему больше нравится, поэтому ТС стоит определится какой вариант ему по зубам.

Последний раз редактировалось angvelem, 06.07.2011 в 01:24.
  #11  
Старый 06.07.2011, 01:48
Аватар для GriLab
GriLab GriLab вне форума
Начинающий
 
Регистрация: 26.11.2010
Адрес: Минск
Сообщения: 190
Версия Delphi: XE 15.0.3890
Репутация: 415
По умолчанию

angvelem, иногда эта программка полезна для меня. Часто в своих программах использую ее результат деятельности.
  #12  
Старый 06.07.2011, 04:29
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
Счастье

Цитата:
Сообщение от Mikle
Ну, раз проще, может объясните как?=)
Объяснять не люблю... Лучше покажу.
  1. http://dump.ru/file/5300812
  2. http://dump.ru/file/5300813
  3. http://dump.ru/file/5300814
  4. http://dump.ru/file/5300811
  5. http://dump.ru/file/5300815
  6. http://dump.ru/file/5300816
  7. http://dump.ru/file/5300817
  8. http://dump.ru/file/5300818
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
  #13  
Старый 06.07.2011, 08:45
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Для запуска ехе с памяти можно использовать этот модуль Load_PE.rar. Там только шифрование убрать надо.
А запихнуть ехешку в файл способов много, но проще через ресурс.
Вот пример: Exe in res.rar
Вопрос зачем с памяти запускать? Если с винта в папке темп намного проще и 100% запуститься.
__________________
If end Then begin;

Последний раз редактировалось AND_REY, 06.07.2011 в 11:11.
  #14  
Старый 06.07.2011, 13:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Можно все твои безбелушки закидать в ресурсы, а передавать им управление прямо из кода. Например можно вызвать ф-ю CreateProcess(Ex) а потом туда впиндюрить содердимое нужного тебе экзешника.
По запросу "запуск процесса из памяти" Googoolme выдает много интересного.
добавлено спустя 3 наносекунды
собственно AND_REY тебе так и изложил
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 06.07.2011 в 13:07.
  #15  
Старый 06.07.2011, 14:15
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Mikle
Как запихнуть всяческие .dll'ы и .ехе'шники в одну программу?
рассадник?)
__________________
Пишу программы за еду.
__________________
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter