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. Эти папки
затем можно переименовать соответственно структуре мультидестрибутива.