Его нужно научить это делать. На офф. форуме кстати есть пример самоуничтожения скрипта (на данный момент форум в офлайне), где используется изменённая в памяти версия самого скрипта (скомпилированного естественно). Может эту концепцию можно использовать в целях данной темы.
Наткнулся тут на форуме на эту тему, думаю не поздно может предложить свой вариант (если кто нибудь еще помнит о чем в ней говорилось )...
Идея такова:
Зачем использовать архиваторы, компиляторы, заново пересобирать исполняемый файл, если можно просто дописывать в нужные данные в конец исполняемого файла? (т.к. это никак не влияет на работу основного кода, который находится в начале)
Как это работает:
1) Запущенная программа копирует себя во временный каталог, запускает свою копию из временного каталога (при этом передает временной копии указание, что она временная и путь на основной исполняемый файл) и завершает работу.
2) Запущенная временная копия делает необходимую работу, дописывает в конец основного исполняемого файла различные данные. В конце работы запускает основной исполняемый файл с указанием удалить временный.
3) Запускается основной исполняемый файл, удаляет временный и завершает работу.
В итоге имеем исполняемый файл с дописанными в него нужными данными, которые при следующем запуске можно считать.
Вот пример с добавлением введенных пользователем данных в исполняемый файл, как будто это обычный ini-файл(скрипт необходимо скомпилировать):
После добавления данных можно открыть файл программы в редакторе и увидеть что введенные данные находятся в конце файла, после основного кода
В принципе аналогично можно добавлять различные изображения и другие данные. Только вместо IniRead/IniWrite придется написать свои функции, которые дописывают данные в исполняемый файл...
Типа:
1. Основной код программы
2. Маркер ресурса (например [Bitmap1])
3. Данные ресурса
4. Маркер ресурса (например [Sound1])
5. Данные ресурса
и т.п. ..........................................