Страница: 1 |
Как в программу запихнуть файл (.exe)? Что-бы затем его извлечь и запустить. Ну что-то типо архива получится. Кто знает - плиз хэлп!
Берем запоминаем реальный размер exe файла, далее то что хочется распаковать записываем в конец файла, а извлекать - мы знаем где данные начинаются, мы знаем их окончание (конец файла), берем и извлекаем на диск... все... Второй метод тоже - вариант, но при этом имеется минус - невозможно "на ходу" создавать файлы с посторонними данными, что, в некоторых случаях, критично... мой способ для инсталяторов подходит. а для исполняемой в данный момент проги имхо на лету писать ничего не получится! винда не даст! Нет, я не о том, я к примеру, хочу написать программу, которая создает патчи... И вот тут можно (даже нужно) использовать оба эти способа... Если не ломает лишний ocx - используй FileContainer.ocx. В него можно запихнуть любой файл, буть то mp3, exe или avi. Страница: 1 |
Вопрос: Хранение файлов в программе
Добавлено: 11.03.04 14:15
Автор вопроса: maxl
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 11.03.04 15:09
Номер ответа: 2
Автор ответа:
2San
Вопросов: 11
Ответов: 68
Профиль | | #2
Добавлено: 11.03.04 18:30
Можно еще запихнуть ехешник в ресурсы проги. Потом сжимаем прогу upx'ом или
чем-то подобным. В итоге - малый размер и нет гемора с дописыванием в конец
файла. Чтобы распаковать юзай такой код:
Private Function SaveRes(ByRef Id As Long, ByRef File As String, Optional cRes As String = "FILE") As Boolean
Dim B() As Byte
Close
On Error GoTo Ef1
If isFile(File) Then Kill File
B = VB.LoadResData(Id, cRes)
Open File For Binary As #1
Put #1, , B
Close
Erase B
Ef1:
End Function
Вызов ф-ии:
SaveRes 101, "c:\proga.exe", "FILE"
Сан Саныч
mailto:apexsun@narod.ru -=•=- http://apexsun.narod.ru -=•=- ICQ:273825121
> Origin: Узнаешь где раком зимуют!
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 11.03.04 20:06
Номер ответа: 4
Автор ответа:
2San
Вопросов: 11
Ответов: 68
Профиль | | #4
Добавлено: 11.03.04 22:33
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 11.03.04 22:52
Т.е. головная программа имеет в ресурсах SFX файл, размер его мы знаем, эта программа сохраняет этот ресурс на диск, и в конец файла дописывает служебную информацию, т.о. головная программа для создания патчей использует второй вариант...
В свою очередь, патч, при запуске, читает ту самую служебную инфу из самого себя, и уже работает с ней...
В данном примере, использовать одни только ресурсы - не получится...
Номер ответа: 6
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #6
Добавлено: 12.03.04 10:31