Windows XP Multi Destributive Pre-mastering Utilities
GXPI.EXE
MKDTREE.EXE
QFMODT.EXE
QINIFMT.EXE
BOOTMAN.EXE
SFTAKE.EXE




GXPI.EXE

Программа для извлечения информации из дестрибутива
Программа извлекает слендующую информацию:
Название(версия, имя) Операционной системы,
Название платформы (X86 или AMD64)
Язык дестрибутива
Номер Сервис Пака
И все... Немного но для использования в пакетных файлах вполне достаточно.

Используются следующие параметры командной строки(регистр не имеет значения):
-s	[source] -- директорий с дестрибутивом
-d	[destination] -- директорий в котором создать файл отчет
	(если не указан то результат будет направлен в STDOUT т.е на экран монитора)
-m	[mode] -- способ вывода результата, их 3 -> 0, 1 или 2:
	                1 - столбцем
	                2 - в ряд
	                3 - в ряд с добавлением информации
-h,?	[help]
и команды(регистр не имеет значения):
productname	вывести название Операционной системы
Platform		вывести название платформы
Language	вывести Язык дестрибутива
SvcPack		вывести номер Сервис Пака
all		вывести все вышеперечисленное
Использование:

Для вывода на экран всех данных в столбец:
GXPI  -S:C:\SOME_FOLDER\i386  -m:0
или
GXPI  -S:C:\SOME_FOLDER
Если по пути C:\SOME_FOLDER лежит дестрибутив Windows XP 64 bit английская версия то вывод на экран может быть таким
Windows XP Professional x64 Edition
amd64
English
1.0


Для вывода на экран одной строки с названием ОС, языка и номера Сервис Пака:
GXPI  -S:C:\SOME_FOLDER\i386 ProductName Language SvcPack -m:1
или
GXPI  -S:C:\SOME_FOLDER\i386 ProductName Language SvcPack -m:2
В первом случае:
Windows XP Professional x64 Edition English 1.0

Во втором:
Windows XP Professional x64 Edition English version ServicePack 1.0


Параметр -D задает каталог в котором будет создан файл getdinfo.log и на экран не будет выведено ничего. Однако можно не использовать этот параметр для вывода в файл, а перенаправлять вывод из STDOUT в вайл:
GXPI  -S:C:\SOME_FOLDER\i386 ProductName Language SvcPack -m:2 >getdinfo.log
GXPI  -S:C:\SOME_FOLDER\i386 ProductName Language SvcPack -m:2 -D:~dp0
Результат выполнения этих двух команд одинаков.



MKDTREE.EXE

Программа для создания дерева пустых каталогов для будущего дестрибутива
Используются следующие параметры командной строки(регистр не имеет значения):
-d	[destination] -- каталог в котором создать дерево каталогов(полный путь)
-p	[platform] -- платформа дестрибутива
-n	[number] -- Количество ОС которые будут включены в мультидестрибутив
-t	[title] -- Начальная буква или цифра которая будет первым символом имени
	папки с включенной в мультидестрибутив ОС. 
-h,?	[help]
Использование:

Для создания Трех ОС-ного дестрибутива:
MKDTREE  -D:C:\SOME_FOLDER  -N:3  -P:X64  -T:A  
или
MKDTREE  -D:C:\SOME_FOLDER  -N:3  -P:X64  -T:1
В результате в папке C:\SOME_FOLDER будет создано следующее дерево каталогов:
первый вариант            второй вариант
C:\SOME_FOLDER            C:\SOME_FOLDER
       |                         |
       .----+ A                  .----+ 1 
       |      |                  |      |    
       |      .----+ X64         |      .----+ X64
       |      |                  |      |	
       |      |                  |      |	
       |      .----+ i64         |      .----+ i64
       |                         |      
       |                         | 
       |                         |
       .----+ B                  .----+ 2 
       |      |                  |      |    
       |      .----+ X64         |      .---+ X64
       |      |                  |      |
       |      |                  |      |	
       |      .----+ i64         |      .----+ i64
       |                         |      
       |                         | 
       |                         |
       .----+ C                  .----+ 3 
       |      |                  |      |    
       |      .----+ X64         |      .---+ X64
       |      |                  |      |	
       |      |                  |      |	
       |      .----+ i64         |      .----+ i64
       |                         |      
       |                         |
       |                         |
       |                         |
       .----+ BT_A               .----+ BT_1 
       |                         | 
       |                         |
       |                         |	
       |                         | 
       |                         |
       .----+ BT_B               .----+ BT_2 
       |                         |   
       |                         | 
       |                         | 	
       |                         | 
       |                         |
       .----+ BT_C               .----+ BT_3 
       |                         | 
Именно такое дерево используется для одного из способов создания Мульти-дестрибутива.

Если не указать параметр -P то создастся дерево такого вида:
первый вариант            второй вариант
C:\SOME_FOLDER            C:\SOME_FOLDER
       |                         |
       .----+ A                  .----+ 1 
       |                         | 	
       |                         | 
       |                         |      
       |                         | 
       |                         |
       .----+ B                  .----+ 2 
       |                         | 	
       |                         | 
       |                         |      
       |                         | 
       |                         |
       .----+ C                  .----+ 3 
       |                         | 
       |                         |      
       |                         |
       |                         |
       |                         |
       .----+ BT_A               .----+ BT_1 
       |                         | 
       |                         |
       |                         |	
       |                         | 
       |                         |
       .----+ BT_B               .----+ BT_2 
       |                         |   
       |                         | 
       |                         | 	
       |                         | 
       |                         |
       .----+ BT_C               .----+ BT_3 
       |                         | 




QFMODT.EXE

Программа для поиска в файлах и модификации файлов
Программа может производить поиск в файле заданную комбинацию символов. В основном программа предназначена для небольшой моификации файлов в HEX или TEXT режимах. Используются следующие параметры командной строки(регистр не имеет значения):
-s	[source] -- каталог c файлом(полный путь)
-d	[destination] -- каталог в который сохранить модифицированный файл(полный путь)
-f	[file] -- Имя файла
-m	[mode] -- Режим TEXT или HEX
-h,?	[help]
и команды(регистр не имеет значения):
countmode	включает режим счетчика совпадений c заданной строкой
		(т.е можно указать сколько совпадений следует обработать)
offset		HEX адрес
		(задает стартовую позицию с которой должна начинаться искомая строка)
		команда offset отменяет команду COUNTMODE  
change		Что заменить
to		На что заменить	
find		Найти
		команда find отменяет команду change и to
Использование:

Для поиска и вывода на экран всех offset позиций комбинации байт 17 в файле WINNT.EXE из дестрибутива Windows Xp Professional SP2 RU (подразумевается что файл находится в текущем каталоге):
QFMODT  -M:HEX  FIND:17  -S:%~dp0  -F:WINNT.EXE
Получается лтстинг такого вида:
63
67
277
27B
27F
283
287
28B
28F
293
297
29B
918
D59
1DC4
22DF
2376
2561
25ED
2608
265A
2732
2851
28DB
2914
29F9
2B7E
2E5D
3437
3802
3948
3974
3A63
3B4F
3D41
и т. д...
Это адреса по которым находятся эти байты. Для замены тридцати пяти из них на другую комбинацию байт например 0a:
QFMODT  -M:HEX  СOUNTMODE:35  CHANGE:17  TO:0a  -S:%~dp0  -F:WINNT.EXE
Теперь по тридцати пяти первым адресам находится не 17 а 0a
На самом деле в этом файле надо заменить всего одно появление коминации 17 находящееся по HEX-адресу 0x3D41 на любую комбинацию соответствующую атрибуту цвета, например 0a.
QFMODT  -M:HEX  OFFSET:3D41  CHANGE:17  TO:0a  -S:%~dp0  -F:WINNT.EXE
После этого в файле изменится цвет текста(с серого на зеленый) и цвет фона(с синего на черный).

Для замены всех комбинаций символов i386 в файле setupldr.bin на NT_1 (подразумевается что файл находится в текущем каталоге):
QFMODT  -M:TEXT  CHANGE:i386  TO:NT_1  -S:%~dp0  -F:WINNT.EXE
В результате все вхождения комбинаций символов i386 будут заменены на NT_1



QINIFMT.EXE

Программа для работы с INI файлами
Используются следующие параметры командной строки(регистр не имеет значения):
-d	[destination] -- папка для сохранения результата(полный путь)
-f	[file] -- путь до INI файла(полный путь)
-m	[mode] -- способ вывода результата, их 4 -> 0, 1, 2 или 3:
			0 - показать все (значение по умолчанию)
			1 - показать только параметр(то что до знака '=')
			2 - показать значение параметра(то что после знака '=')
			3 - показать значение параметра удалив обрамл. кавычки(бывает нужно)  
-h,?	[help]
и команды(регистр не имеет значения):
section		Секционное имя для обработки
task		Задача(Что сделать)
		задача может быть:
		show    - показать
		replace - поменять
		remove  - удалить	
Использование:

Для замены параметра SetupSourcePath который отосится к секции с именем SetupData неважно с чего на \NT_1\ и сохранения результата в текущую папку:
SET FNAME=C:WORK\i386\TXTSETUP.SIF
QINIFMT -F:%FNAME% -M:0 SECTION:SetupData-SetupSourcePath task:replace:\NT_1\ -d:%~dp0txtsetup.sif
Программа находится в стадии глубочайшего альфа тестироавания, поэтому другие примеры использования в следующей редакции данного документа.



BOOTMAN.EXE

Программа для создания загрузочного меню. Программа берет необходииую информацию о меню в конфигурационном файле BOOTMAN.INI, в котором надо указать пункты меню, пункты подменю(если надо) и соответствующие команды.
Используются следующие параметры командной строки(регистр не имеет значения):
-d	[destination] -- папка для сохранения результата(полный путь)
-bm	[file] -- бут менеджер(программа имеет три варианта):
	diskemu - MultiBootDiskEmulator v1.1
	cdshell - Shell v2.0
	bcdw    - bcdw v2.0a1
-di	[debag] -- вывод на экран информации.
-h,?	[help]

Параметры файла BOOTMAN.INI:

Файл должен находиться там же где и файл BOOTMAN.EXE формат файла очень похож на формат файла config.sys для OS DOS. Синтаксис похож на INF-файлы. Есть секционные заголовки и секции которые содержат параметры. Пробелы допустимы, регистр не имеет значения. Комментарий(прим. отличается от стандартного INI файла) - то что после двух символов '-' в начале строки.
Секционный заголовок -- слово, обрамлённое слева и справа знаками [ ]. В  данном  случае
это  должно быть  именно  одно слово, не  допускается  несколько  слов как  в  стандартных
INF-файлах.
Параметр -- то что до знака '=', его значение то что после знака '='. Значений  может  быть
два, разделенные между собой знаком ','. 
В файле (желательно в начале) можно указать информацию для программы, для этого существует пара параметров которые можно использовать в секционном имени(секционное имя с параметром). Это:
rule	- дополнительная информация	
bootman	- информация о конкретном бут-менеджере
Пример секционного имени с параметром
[ X : Rule ]
Если в секционном имени указан параметр Rule, то программа ищет в данной секции параметры:
bootmanager	- какой бут-менеджер использовать(если не указан в командной строке)	
workpath	- относительный путь в котором будет созданы файлы бут-менеджера
		(относительно директория который программа сочтет за destination path)
Если в секционном имени указан параметр Bootman, то программа ищет в данной секции параметры:
start	- команда которая будет интерпретироваться данным конкретным менеджером 
	 как команда запуска, некого файла программы, на выполнение.
font	- шрифт меню(дожен находиться в файле FONTS.CAB кот-ый, в свою очередь,
	 должен находиться в файле BOOTMAN.CAB)
Пример:
[ X : RULE ]
bootmanager = cdshell
workpath    = RESULTAT

[ CDSHELL : BOOTMAN ]
start = bcdw boot
font  = SMALL.FNT
Если в файле нет секций с параметрами то примутся значения по умолчанию.
В любом случае бут-менеджер можно указать из командной строки(параметр -BM), а workpath, это необязательный параметр. Трудности могут возникнуть только с тем какую команду подставлять для запуска программ(параметр start), т.к если он не указан то в параметре command надо указать команду полностью
Пример:
--для Diskemu
command = cd I386
command = run setupldr.bin

--для CDShell 
command = bcdw Boot \I386\setupldr.bin
Для cdshell директорий сфайлом для запуска надо указывать командой cd, такой же синтаксис лучше использовать и для cdshell, а если бут-менеджером будет выбран bcdw то в случае если директорий указан командой cd то программа подставит этот путь к комманде, т.е получится одна строка
-- указали
command = cd I386
command = start setupldr.bin

-- результат одна строка
-- \I386\setupldr.bin

Далее основное - пункты меню:
Первой должна идти секция которая содержит пункты меню (Main menu). Каждый пункт должен ссылаться либо на секцию которая содержит команды, либо на секцию которая содержыт другое меню. Например:
[ Main_Menu ]
item = hdd,Hard Disk Utilities

[ hdd ]
item = pqpm,Power Quest Partition Magic 8.0

[ pqpm ]
command = cd sectors
command = start bcdw4dos.ima pmagic\pmagic.exe
Секция которая содержит команды, должна содержать соответственно команды(параметр command), а так-же может содержать параметр hint(пояснеие) которое будет включено в загрузочеое меню соответствующим образом.
Пример:
[ xp_1 ]
hint    = Начало установки Операционной системы
hint    = Microsoft Windows XP SP 3 Русская версия
command = cd sectors
command = start btsect1.bin


Подробней о параметрах:
Параметр bootmanager
происхождениеот англ. слов boot и manager - Менеджнр загрузки
Для чегоЗадает какой менеджер использовать(может иметь три значения):
diskemu - MultiBootDiskEmulator v1.1
cdshell - Shell v2.0
bcdw - bcdw v2.0a1
Примечаниебут-менеджер можно задать из командной строки. (по умолчанию bcdw)[не обязательный параметр]
Параметр workpath
происхождениеот англ. слов work и path - Слегка не соответствует назначению, точнее было-бы workfolder - рабочая папка
Для чегоПапка в которую будет сохранен результат работы
ПримечаниеУказывается относительный путь(относительно директория который программа сочтет за destination path) [не обязательный параметр]
Параметр start
происхождениеот англ. слова start - Старт
Для чегокоманда которая будет интерпретироваться данным конкретным менеджером загрузки как команда запуска, некого файла программы, на выполнение
Примечание[не обязательный параметр]
Параметр font
происхождениеот англ. слова font - шрифт
Для чегошрифт который будет использовать данный менеджер
Примечаниедожен находиться в файле FONTS.CAB кот-ый, в свою очередь, должен находиться в файле BOOTMAN.CAB) [не обязательный параметр]
Параметр item
происхождениеот англ. слова item - Пункт (пункт меню)
Для чегоБудет являться пунктом меню
Примечаниеединственный параметр который должен иметь два значения. [обязательный параметр]
Параметр command
происхождениеот англ. слова command - Команда
Для чегокоманда запуска, некого файла программы, на выполнение
Примечание[обязательный параметр]
Параметр hint
происхождениеот англ. слова hint - Пояснение
Для чегоБудет включен в меню соответствующим образом
Примечание[не обязательный параметр]




SFTAKE.EXE

Программа для извлечения из дестрибутива установочных файлов

Используются следующие параметры командной строки(регистр не имеет значения):
-s	[source] -- папка c дестримбутивом(полный путь)
-d	[destination] -- папка для сохранения результата(полный путь)
-m	[markers] -- если параметр указан программа создаст маркерные файлы
-p	[Platform] -- Платформа X86 или X64
	программа автоматически определяет плаформу дестрибутива,
	параметр остался от предыдущих версий (непонятно зачем :))
-h,?	[help]

После завершения программы sftake, DOS ERRORLEVEL может принимать следующие значения:
0 - корректное завершение программы, но задача не ввыполнена.
1 - x86 дестрибутив.
2 - x64 дестрибутив.
3 - ошибка.
Использование:

Для извлечения установочных файлов из дестрибутива Windows XP Professional который лежит в папке C:\WINXPSP2 и поместить их в папку C:\destro при этом создать маркерные файлы к данному дестрибутиву:
SFTAKE -S:C:\WINXPSP2 -D:C:\destro -M
или
SFTAKE -S:C:\WINXPSP2\I386 -D:C:\destro -M
Если в папке C:\WINXPSP2 лежит X86 дестрибутив то будет создана папка _i386 c установочными файлами размером примерно 7mb, если там лежит X64 дестрибутив, то будет созданы две папки _i386 и _AMD64. Эти папки затем можно переименовать соответственно структуре мультидестрибутива.