Добавление приложений к Windows XPE Live CD


Статья частично основана на пособии по созданию Windows Live CD, которое SV2004 опубликовал в одной из тем конференции OSZone.net. В частности, он изложил работу с Авто-плагинами Reatogo и утилитой shortcutCreator.

Для того чтобы добавить приложения и утилиты к Live CD нужно сначала найти соответствующий плагин или создать его самостоятельно. Как минимум, плагин состоит из *.INF файла и непосредственно файлов приложения, для которого он создан. Плагины публикуемые на различных сайтах могут содержать сразу все необходимые файлы, а могут подразумевать, что приложение у вас есть, и его файлы вы скопируете в нужное место самостоятельно. Этим "нужным местом" является папка plugins. Как правило, в ней создается папка с названием приложения, в которую в свою очередь кладутся все необходимые файлы. Это общепринятая практика, и ниже я поясню почему.

В принципе, pebuilder сканирует всю директорию plugins в поисках INF файлов, и теоретически не важно где их размещать. Однако, в INF файле как минимум содержится информация, необходимая для добавления файлов приложения к LiveCD. Информация о файлах приложения указывается в INF файле относительно его текущего расположения, так что логично разместить и INF файл и файлы приложения в одной и той же папке. Это особенно имеет смысл при большом количестве плагинов - каждый будет аккуратно расположен в своей отдельной папке.

О готовых плагинах мы поговорим чуть позже, а пока рассмотрим Авто-плагины от Reatogo.

Aвто-плагины Reatogo

Удобство авто-плагинов Reatogo в том, что они автоматически копируют нужные файлы приложений в нужное место и создают соответствующий INF файл. Попросту говоря, авто-плагины делают за вас абсолютно всю работу. На этой странице есть достаточно большой список авто-плагинов.

Примечание: приложение должно быть установлено на вашей системе и зарегистрировано, если необходимо.

  1. Выберите нужный плагин и загрузите его
  2. Распакуйте архив в папку plugins
  3. Запустите пакетный файл (*.bat или *.cmd), который находится в папке files плагина
  4. Все необходимые файлы программы будут скопированы в эту папку
  5. В INF файл плагина будет добавленa необходимой информацией из реестра

Вот как выглядит INF файла плагина для популярного файлового менеджера TotalCommander после использования авто-плагина Reatogo.

; totalcmd.inf
; PE Builder v3 plug-in INF file for Total Commander
;/download.htm
; Created by martinr with autohelp.cmd

[Version]
Signature= " NT$"

[PEBuilder]
Name="550     Total Commander "
Enable=0
Help="Files\"

[WinntDirectories]
a="Programs\totalcmd",2

[SourceDisksFiles]
Files\cabrk.dll=a,,3
Files\default.bar=a,,3
Files\no.bar=a,,3
Files\sfxhead.sfx=a,,3
Files\share_nt.exe=a,,3
Files\totalcmd.exe=a,,3
Files\totalcmd.gid=a,,6
Files\totalcmd.hlp=a,,3
Files\totalcmd.inc=a,,3
Files\unacev2.dll=a,,3
Files\unrar.dll=a,,3
Files\wcmicons.dll=a,,3
Files\wcmzip32.dll=a,,3
Files\wincmd.key=a,,6
wincmd.ini=a,,3

[Software.AddReg]
; Shortcut(s) for Total Commander
; Desktop Shortcut
0x2, "Sherpya\XPEinit\Desktop", "Total Commander", "%SystemDrive%\Programs\totalcmd\totalcmd.exe"
; Start menu - Programs shortcut
0x2, "Sherpya\XPEinit\Programs", "Total Commander", "%SystemDrive%\Programs\totalcmd\totalcmd.exe"

Готовые плагины

Я приведу несколько ссылок на крупнейшие хранилища плагинов Надеюсь, их будет достаточно для начала. Весьма вероятно, что вы встретите одни и те же плагины в разных местах.

Перед использованием готовых плагинов надо обязательно читать Readme файл, который содержит инструкции поясняющие функциональность плагина. Также необходимо учитывать, что многие готовые плагины изначально предназначены для BartPE, но не XPE. Точнее, функционально приложение будет абсолютно работоспособно и в XPE, но чтобы его запустить нужен ярлык в меню Пуск - Программы (на Рабочем Столе, в панели Быстрого запуска). Поскольку оригинальная среда BartPE использует nu2menu для удобного доступа к приложениям, многие плагины содержат информацию, необходимую для отображения ярлыка в Programs nu2menu. Для отображения ярлыка в nu2menu используется специально сконфигурированный XML файл, а в конец INF файла плагина добавляются такая секция:

[Append]
nu2menu.xml,pluginname.xml

Для XPE такая секция не нужна (если только XPE не используется совместно с nu2menu, что не является нашим случаем), и ее нужно откомментировать. В XPE ярлыки отображаются примерно так:


[Software.AddReg]
; Add to Programs\File Management
0x2,"Sherpya\XPEinit\Programs","File Management\Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe"
; Add to QuickLaunch
0x2,"Sherpya\XPEinit\QuickLaunch","Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe"
;Add to Desktop
00x2,"Sherpya\XPEinit\Desktop","Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe"

В приведенном примере ярлыки располагаются в меню Пуск - Программы - FileManagement, в панели Быстрого Запуска и на Рабочем столе. Рассмотрим первую строчку подробнее:

  • 0x2,"Sherpya\XPEinit\Programs" - добавление ярлыка в меню Пуск - Программы.
  • "File Management\Total Commander" - путь относительно меню Программы и название ярлыка. Иными словами, чтобы открыть TotalCommander надо будет пойти в меню Пуск - Программы - File Management. Если удалить File Management\, то иконка будет отображаться в корне меню Программы.
  • "%SystemDrive%\Programs\TotalCmd\totalcmd.exe" - путь к файлу, содержащему иконку. Используется переменная %SystemDrive%, которая будет преобразована в букву диска LiveCD (обычно X).

Если секция [Software.AddReg] с примерно таким содержанием есть в INF файле плагина, который вы загрузили, значит ярлык к приложению будет создан. Если вы хотите переместить его в другую часть меню или указать иное расположение, то отредактируйте нужные строчки по желанию. Однако, совсем необязательно создавать ярлыки вручную. Можно воспользоваться очень удобной утилитой shortcutCreator от Reatogo.

Создание ярлыков при помощи shortcutCreator

Утилита shortcutCreator находится в папке plugins\shortcutCreator.

  1. Запустите файл shortcutCreator.exe
  2. Согласитесь с лицензией
  3. Нажмите кнопку Import Plugin и выберите INF файл плагина приложения
  4. В окне Path выберите путь к этому приложению
  5. В окне File to be started выберите файл для запуска этого
  6. В окне Use this for icon выберите файл с иконкой приложения (как правило это файл приложения)
  7. Кнопками (Desktop, Quick Launch Bar, и др.) выберите где вы хотите разместить ярлык
  8. Если приложение должно запускаться при старте XPE, установите Autostart
  9. Нажмите кнопку Create Shortcuts и информация будет добавлена в окнo
  10. Нажмите кнопку Save Plugin и информация будет добавлена в INF файл плагина
  11. Сохраните INF файл плагина под этим же именем

На самом деле, Reatogo проделал просто титаническую работу, популяризуруя Live CD. Как видите, с его конструктором и утилитами очень легко работать.

Самостоятельное создание плагинов

Авто-плагины и готовые плагины - это просто замечательно, и с большой вероятностью вы найдете уже готовый плагин для своего любимого приложения. Ну а что делать если плагина нет, а иметь его хочется? Для приложений не требующих установки вполне можно создать плагин самостоятельно. Я, в свое время, сделал плагин для TotalCommander сам, поскольку на тот момент не существовало таких больших "складов" плагинов.

Для начала в папке plugins я создал папку totalcmd - в ней будет размещаться плагин для TotalCommander. В папке totalcmd создал папку files и скопировал в нее все файлы (включая подпапки) из директории, в которой у меня установлен TotalCommander. Потом открыл текстовый редактор, посмотрел как сделаны другие плагины и написал свой :)

; PE Builder v3 plug-in INF file
; Created by Vadikan

[Version]
Signature= " NT$"

[PEBuilder]
Name="Total Commander v6"
Enable=1

[WinntDirectories]
a="Programs\totalcmd",2

[SourceDisksFolders]
files=a,,1

[Software.AddReg]
0x2,"Sherpya\XPEinit\Programs","File Management\Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe"
; Add to QuickLaunch
;0x2,"Sherpya\XPEinit\QuickLaunch","Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe"
;Add to Desktop
0x2,"Sherpya\XPEinit\Desktop","Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe"

Можете сравнить его с плагином от Reatogo, различий на самом деле очень мало. Разберем его по секциям.

[Version]
Signature= "$Windows NT$"

Это стандартное обозначение версии.

[PEBuilder]
Name="Total Commander v6"
Enable=1

Эта секция отвечает за отображение плагина в pebuilder. Name - имя можно дать любое. Enable = 0 (по умолчанию выключен) или 1 (по умолчанию включен).

[WinntDirectories]
a="Programs\totalcmd",2

Определяет расположение директории totalcmd на диске Live CD. Она будет расположена в X:\Programs\

[SourceDisksFolders]
files=a,,1

Исходные файлы, которые будут включены в директорию totalcmd нашего диска. В отличии от Reatogo, указывающего все файлы посредством секции [SourceDisksFiles], я использую секцию [SourceDisksFolders] и указываю путь относительно INF файла. Поскольку папка files, содержащая все файлы TotalCommander, находится в одной папке с INF файлом, то как таковой путь-то и указывать не надо. Все файлы находящиеся в files будут помещены в директорию totalcmd нашего диска.

Секцию [Software.AddReg] я разбирал выше.

Примечание: у меня TotalCommander сконфигурирован таким образом, что файлы настроек wincmd.ini и wcx_ftp.ini находятся в директории программы. Насколько я помню, расположение этих файлов пользователь выбирает при установке и по умолчанию они кладутся в директорию Windows. Это можно поправить при помощи утилиты inireloc. В противном случае, вам нужно будет запускать TotalCommander, указывая путь к этим файлам в параметрах командной строки. Для XPE это делается так:


[Software.AddReg]
0x2,"Sherpya\XPEinit\Programs","File Management\Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe|/i=%SystemDrive%\Programs\TotalCmd\wincmd.ini f=%SystemDrive%\Programs\TotalCmd\wcx_ftp.ini|%SystemDrive%\Programs\totalcmd\totalcmd.exe"
; Add to QuickLaunch
0x2,"Sherpya\XPEinit\QuickLaunch","Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe|/i=%SystemDrive%\Programs\TotalCmd\wincmd.ini f=%SystemDrive%\Programs\TotalCmd\wcx_ftp.ini|%SystemDrive%\Programs\totalcmd\totalcmd.exe"
;Add to Desktop
0x2,"Sherpya\XPEinit\Desktop","Total Commander","%SystemDrive%\Programs\TotalCmd\totalcmd.exe|/i=%SystemDrive%\Programs\TotalCmd\wincmd.ini f=%SystemDrive%\Programs\TotalCmd\wcx_ftp.ini|%SystemDrive%\Programs\totalcmd\totalcmd.exe"

Вот и все. По такому образу и подобию можно создавать собственные плагины для приложений, которым не требуются наличие записей реестра. В противном случае надо будет думать как эти записи отслеживать и создавать, но это мы сейчас обсуждать не будем.

Хочу предупредить, что некоторым приложениям требуется писать что-то на диск. Если запускать их с CD, как TotalCommander, то могут быть проблемы с функционированием: при попытке записать файл в свою директорию приложение обнаруживает невозможность записи. Обычно в таких случаях приложения копируют на RAM диск и запускают уже оттуда. Делается это при помощи либо пакетного файла либо SFX архива. RAM диску в XPE по умолчанию соответствует переменная %temp%, так что написать пакетный файл или сконфигурировать SFX нетрудно. Ниже приводится пример пакетного файла, предназначенного для запуска AdAware SE. Файл входит в плагин AdAware, распространящийся вместе с BartPE.

@echo off
rem -------------------------------------------------------------------------
rem adawarese.cmd - Script to start AdawareSE from BartPE
rem Created by Bart Lagerweij.
rem -------------------------------------------------------------------------
echo ADAWARE.CMD: Starting...
setlocal
if "%temp%" == "" goto _err
if exist "%temp%\adawarese\ad-aware.exe" goto _run
mkdir "%temp%\adawarese"
echo ADAWARE.CMD: Copying "%~dp0ad-aware.exe" to "%temp%\adawarese\"
copy "%~dp0ad-aware.exe" "%temp%\adawarese\ad-aware.exe"
echo ADAWARE.CMD: Copying "%~dp0defs.ref" to "%temp%\adawarese\"
copy "%~dp0defs.ref" "%temp%\adawarese\defs.ref"
:_run
start %temp%\adawarese\ad-aware.exe
goto _end
:_err
echo.
echo ADAWARE.CMD: No temp variable set...
echo ADAWARE.CMD: Try adding a ramdrive...
echo.
pause.
:_end
endlocal

Пакетный файл проверяет наличие RAM диска (%temp%), и в случае отсутствия предлагает создать его самостоятельно. Если же RAM диск существует, то пакетный файл проверяет не было ли приложение скопировано туда ранее. Если было, то запускает приложение; в противном случае копирует все нужные файлы и затем уже запускает приложение.

Безусловно, это лишь вводная информация о создании плагинов. В помощь создателям плагинов есть различные утилиты, что свидетельствует о серьезности темы.


Продолжение следует? Все зависит от вашего интереса к Windows Live CD. Вы можете обсудить статьи о Windows Live CD в этой теме на конференции OSZone.net.