Задача немного необычна.
Итак, есть exe'шник. Есть к нему пара-тройка папок с файлами, которые он читает для работы своей.
Задача - запихнуть все файлы и папки в экзешник, чтобы был один он. При том, что чтение файлов из самого exe должно остаться прежним!
Я думаю, есть какие-то варианты, вроде архиватора, который из самораспаковывающегося архива раскрывает всё во временную папку и сам запускает распакованный exe'шник?
Кто знает? Нужны бесплатные варианты...
если бы у меня кто-то попытался так сделать, я бы, наверно, прибил сразу.
sb3d
>>Я думаю, есть какие-то варианты, вроде архиватора, который из самораспаковывающегося архива раскрывает всё во временную папку и сам запускает распакованный exe'шник?
Такое в ручную не сложно реализовать. Гугл выдаёт хорошие примеры на запрос "ресурсы в exe".
unsigned char file0_data[] = "погнали_данные_файла"
http://www.programmersheaven.com/download/16517/download.aspx and so on...
Вроде как стандартные ресурсы в exe подходят. Точных функций не скажу, но WinAPI должен находить их, как и файлы, по адресам res://[путь к ресурсу] по аналогии с обычными файлами file://. Наверное и обёртки под это дело есть.
Suslik
> если бы у меня кто-то попытался так сделать, я бы, наверно, прибил сразу.
Вообще да, мне часто отрезвляющего пинка не хватает. =))
Alexander K, keltar, Pahan, спасиб, буду в ту степь думать.
sb3d
Это вместо инсталятора?
GLoom
> Это вместо инсталятора?
В том числе и это. Хороший инсталлятор - это тот, про который пользователь не знает.
Во вторых - скринсэйвер.
keltar верно говорит, имхо, пихай в массив и потом из него читай.
Если не в ресурсы, то можно так: открываешь файл , который требуется запихать в exe в WinHex или FlexHex (редакторы поддерживают форматированое копирование в буфер обмена , по синтаксису языка программирования) , далее выделяешь всё, потом "copy formated" и выбираешь там.. си, паскаль .. . Далее вставляешь этот массив в свой исходник.
Желательно в другой сцециальный файл .. Например MyFileData.cpp . Если вставляешь массив в локаль (в тело функции) не забудь объывить его как static.
sb3d
> Я думаю, есть какие-то варианты, вроде архиватора, который из
> самораспаковывающегося архива раскрывает всё во временную папку и сам запускает
> распакованный exe'шник?
> Кто знает? Нужны бесплатные варианты...
Так это умеют стандартные исталяторы. Ты выбираешь (можешь и юзверя спросить) в какую папку копировать файлы. И много другое.
Пример программы CreateInstall
Ответ, думаю, получен. Вариант с WinHex и данными в код самый приемлимый.
Темку закрываю, всем большое спасибо!
Тема в архиве.
Тема закрыта.