Компиляция


При компиляции происходит преобразование кода скрипта в промежуточный код, его последующее шифрование и сокращения размера исходного скрипта. Компиляция осуществляется путем запуска исходного скрипта с командной строкой /make или щелчка правой кнопкой мыши по скрипт-файлу и выбрать "Компилировать".

Пример: "С:\Program Files\LangMF\LangMF.exe" "C:\Test.mf" /make

В файл также можно вставить полноценный скрипт-файл, при этом при начале компиляции запускается функция LMF_Make_Begin, а по окончании компиляции запускается функция LMF_Make_End, если такие функции существуют.

Пример: Function LMF_Make_Begin(txtINI)
LMF_Make_Begin = txtINI
End Function


Пример: Function LMF_Make_End(txtINI)
Msgbox "finish"
End Function

При этом, если файл "make.ini" отсутствует в той же директории где находится исходный скрипт, то будет произведена полная компиляция, в противном случае будет происходит компиляция согласно параметрам описанным в этом файле.

Структура файла "make.ini"

Синтаксис
Описание
[options]
Секция описания параметров компиляции
type=value

Тип компиляции, где Value равно:
exe - полная компиляция + создание ЕХЕ файла
full - полная компиляция
res - только компиляция ресурсов

packer=value

Тип упаковщика, где Value равно:
0 - CMS_FORMAT_NONE
1 - CMS_FORMAT_ZLIB
2 - CMS_FORMAT_LZNT1

exe=name
Где name - имя и путь к EXE файлу, который будет использован при компиляции EXE.
shell-hide=name
Запуск после компиляции указанной программы, где name командная строка. Если не указано -hide то запуск программы осуществляется в обычном режиме, иначе в скрытом режиме.
icon=name
Иконка скрипт-файла (создается только если осуществляется компиляция в Еxe файл), где name - имя и путь к файлу.
file=name
Где name - имя и путь к выходному файлу, если не указано то выходной файл и есть исходный файл.
end=value
Выполнить код в value по окончании процесса компиляции.
[files]
Секция описания подключаемых файлов
"100".mode=name

Где

100
- имя создаваемого ресурса.

mode - режим кодирования ресурса

base64 ресурс кодирован по алгоритму base64
zlib ресурс сжат с помощью zlib.dll
bin ресурс состоит из двоичных данных
null добавить к концу нулевой символ
пусто ресурс состоит из текста

name - имя и путь к файлу.

[resource]
Секция описания ресурсов EXE файла.
type.oper.lang.t1.t2.param = value

type - тип данных, и может быть:

version - изменению подлежат данные версии файла

string - изменению подлежат строковые ресурсы файла, содержимым из параметра value, а номер ресурса указанный в параметре param

число - изменению подлежит тип данных указанных этим числом, содержимым из файла указанного в параметре value, а номер ресурса указанный в параметре param


oper - тип операции, и может быть:

add - ресурс будет добавлен
remove - ресурс будет удален

Если не указано то по умолчанию равно add


lang - язык ресурса, и может быть:

0 - 65536 - номер локали языка

Например для России - 1049, а для США - 1033


t1 - тип параметра, и может быть:

Tables - работа с таблицей информации о версии файла

Если не указано то по умолчанию работа с остальными данными о версии файла.


t2 - указатель текущей таблицы, и может быть:

число - определяет язык и кодовую страницу в формате HEX

Например: 040904B0 где
0409 - 1033 - язык - США
04B0 - 1200 - кодовая страница - юникод

Если не указано то по умолчанию работа с коллекцией всех таблиц (удалить, изменить или добавить новую).


param - параметр (текстовое значение).


value - значение параметра (текстовое или числовое значение).


Более подробную информацию смотрите в примере:
Examples\Compile\Exe

 
Секция данных скрипт-файла
текст

текст скрипт-файла

 

Все имена - name - проходят через парсер