Закодив большой проект по заказу, хотелось-бы, чтоб он выглядел пристижно т.е. минимум файлов о которых нужно было-бы заботиться, чтоб они не потерялись, ну и сами ресурсы чтоб подменить нельзя было...
все эти приемущества нам окажет следующая либа, которая поможет нам спрятать все ресурсы в один пак-файл или прямо в екзешник проекта. как пользоваться этим чудом? сказал-бы просто, если бы это было так ;) , но... прорвемся... итак поехали! создадим скрипт запаковки ресурсов: в блиц редакторе создаем новый файл :) ОБЯЗАТЕЛЬНО НОВЫЙ, ОТДЕЛЬНЫЙ *.bb ФАЙЛ!!! пишем прямо в начале CreatePakFile "Filename", Encryption Key, headerMask где: Filename - имя нашего пака Encryption Key - ключ для шифрования данных (32 тиное число) headerMask - ключ для шифрования заголовков файлов, чтоб при открытии допустим в блокноте не увидеть имен запакованных файлов (32 битное число) ключи могут быть и нулями, тогда ничего не шифруется :) и теперь самое кропотливое: пишем AddtoPak "имя файла ресурса" и так для всех ресурсов которые требуются для работы проекта. поскольку все мы делаем в папке нашего проекта, то пути нужно писать от текущей папки и далее допустим AddToPak "media\sound\step.wav" Теперь закрываем пак командой CloseCreatedPak() В результате у нас получился большой Пак-файл (он по размеру будет немного больше чем ресурсы на диске)... теперь давайте попробуем вытащить из него запакованные ресурсы. закрываем наш новый файл и открываем проект, инклюдим в него файл из либы Bones.bb, как это выглядет думаю писать не нужно ;) далее инициализируем наш Пак: PakInit "Имя_файла_пака", Encryption Key, "TMP", headerMask Где: Encryption Key - код для расшифровки данных headerMask - код для расшифровки заголовков файлов эти числа должны быть такими-же как и когда мы создавали пак "TMP" - путь, куда будут распакованы файлы из пака, "TMP" означает, что файлы будут распакованны во временую папку Windows, тут можно и свой путь указать (при особом желании ;) ) теперь опять самое кропотливое: ищем в проекте все команды которыми грузятся ресурсы... хоть LoadMesh, хоть LoadImage... и преобразовываем их сл. образом: var=LoadMesh ("Имя_Ресурса",Имя_Родителя) преобразуется в: var=LoadMesh (Pak("Имя_Ресурса"),Имя_Родителя) для функции Pak() есть еще один двойник DLPak(), отличие в том, что DLPak() перераспаковывает ресурс, даже если он уже есть в распакованном виде... ВСЁ! компилим проект... запускаем... теперь все ресурсы берутся из пака... Ну а теперь самое интересное, сливание пака с EXE файлом проекта... для этого: в файле проекта ищем команду PakInit и в качестве пути к паку пишем имя EXE файла проекта компилируем проект если сейчас запустить EXE, то программа вылетит с ошибкой... все правильно... открываем код, где мы создаем пак, там после команды закрытия пака нужно дописать еще одну команду: AppendToExe "Файл_проекта.exe","Пак_Файл". запускаем на выполнение... таким образом после создания пак приаттачится к EXE, теперь можно пробовать запускать екзешник, должно все работать... Примечания: Не делать приаттачивания пака из выполняющегося екзешника, может косяк получиться |
для пущей ясности:
Файл для создания пака должен выглядеть примерно следующим образом: Код:
CreatePakFile "PakFile.pak", 0, 0 Пак должен быть проинициализирован Все пути к ресурсам должны быть изменены на вызов функции Pak()с этими путями... :) :) :) По времени: делаем сам проект! создаем пак с ресурсами в проект инклюдим bones.bb, изменяем пути на вызов Pak(), дописываем функцию инициализации пака.. компилим проект тестим если не работает повторяем создание пака и его инициализацию заново :) в проекте изменяем имя файла в PakInit на имя екзешника проекта компилим проект в файле создания пака раскомментируем строчку AppendToEXE за пускаем файл создания пака на выполнение.. ГОТОВО :bravo: :bravo: :compl: :compl: :compl: |
Вообще то все немножечко проще :) - есть такая прога от авторов пакера - Terrabit DataPaker - написана на VB - она пакует нужные вам ресурсы. В приницпе у меня даже где то валялись исходники пакера - выпросил у автора :)
|
Цитата:
а программку поищи обязательно, и прицепи к сообщению... :) |
Ответ: Все ресурсы в одном EXE
Извинитте... А не может никто перезалить эту либу???... pakmaker.ace
Ссылочка устарела((( |
Ответ: Все ресурсы в одном EXE
тут вроде есть:
http://forum.boolean.name/showthread.php?t=3024 |
Ответ: Все ресурсы в одном EXE
я пользуюсь Moleboxpro - очень крутая и простая вещица :) как раз все в 1 екзе:)
|
Часовой пояс GMT +4, время: 05:13. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot