Что нового

[Примеры] Хранение Пользовательских Данных в Ресурсах Исполняемого EXE Файла.

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Версия AutoIt
3.3.12.0
Версия
1
Категория: [Примеры]
Описание: Примеры показывают схему действий при использовании файла скомпилированного скрипта как некое хранилище пользовательских данных. Для этих целей наиболее логично использовать область исполняемого файла (модуль), отведенную под ресурсы. Этому также способствует наличие в UDF AutoIt специальных инструментов для работы с ресурсами.
Все ресурсы в модуле делятся на стандартные (standard resource) и пользовательские (custom resource или User-defined). Последний тип нам подходит больше, так как мы собираемся использовать .EXE под хранение разнотипных данных.
Вся сложность, связанная с изменением ресурсов в модуле заключается в том, что исполняемый файл в процессе своей работы изменить сам себя не может, но зато может переименовать и даже переместить себя – этим мы и воспользуемся.
Используйте *Var1_Script.au3* - Скрипт должен быть скомпилирован.
При нажатии на кнопку "Загрузить Новые Данные в Исполняемый Файл..." скрипт:
• переименовывает себя
• копирует себя под старым именем
• очищает файл от ранее загруженных в него ресурсов данного типа
• сканирует рядом лежащую папку "Data" (должна существовать)
• загружает в ресурсы скопированного файла содержимое этой папки
• удаляет папку "Data" (опционально)
• удаляет себя.
При нажатии на кнопку "Извлечь Данные в папку" скрипт:
• извлекает сохраненные ранее ресурсы данного типа в папку "Data".

Это конечно все хорошо, но только до тех пор, пока исполняемый файл занимает минимум места, а если мы его "раздуем" до величины нескольких Гигабайт? Согласитесь заниматься копированием такого файла не очень хорошая идея. В этом случаем можно пойти другим путем: создать небольшой вспомогательный исполняемый файл, который и будет делать всю черную работу.
Сначала скомпилируйте *Var2_SaveScript.au3* под этим же именем, положите получившийся "Var2_SaveScript.exe" рядом с *Var2_MainScript.au3* и тоже скомпилируйте - это будет основной исполняемый файл, запустите его.
При нажатии на кнопку "Загрузить Новые Данные в Исполняемый Файл..." скрипт:
• извлекает (FileInstall()) из себя вспомогательный файл "Var2_SaveScript.exe" в папку "%Temp%"
• запускает "Var2_SaveScript.exe" и завершает свою работу
• "Var2_SaveScript.exe" очищает основной файл от ранее загруженных в него ресурсов данного типа
• сканирует папку "Data"
• загружает в ресурсы основного файла содержимое этой папки
• удаляет папку "Data" (опционально)
• удаляет себя.
При нажатии на кнопку "Извлечь Данные в папку" скрипт:
• извлекает сохраненные ранее ресурсы данного типа в папку "Data".

Примечания:
• Учтите, что при выполнении скрипта существует большая вероятность получить критическую ошибку "Error allocating memory", так как перед тем как изменить или извлечь какой-либо ресурс программа сначала загружает его в память.
 

Вложения

  • Var1_Script.au3
    9.5 КБ · Просмотры: 20
  • Var2_MainScript.au3
    5.1 КБ · Просмотры: 11
  • Var2_SaveScript.au3
    4.6 КБ · Просмотры: 14
Последнее редактирование:
Верх