я создал свой WinPE 3.0 добавив в качестве шела Total Commander, на Virtual Box установил чистый Windows XP собрал его в WIM-образ и с помощью утилиток diskpart и imagex размечаю диск и устанавливаю XP из собранного WIM-образа.
По поводу правильной сборки WIM образа при использование Virtual Box читаем тут:
http://habrahabr.ru/blogs/windows/73268/
Ну, а по поводу интеграции Total Commander мой вариант вот:
1. Смонтировал winpe.wim и создал где положено файлик
Winpeshl.ini:
Код:
![Выделить весь код](images/misc/selectcode.png)
[LaunchApp]
[LaunchApps]
%SYSTEMROOT%\System32\wpeutil.exe, "SetKeyboardLayout 0409:00000409"
%SYSTEMROOT%\System32\wpeutil.exe, "InitializeNetwork"
%SYSTEMROOT%\System32\shell.cmd
2. Создал скрипт
shell.cmd:
Код:
![Выделить весь код](images/misc/selectcode.png)
:: утилитка скрывающая окно CMD
cmdow @ /hid
@echo off
:: цикл, в котором на всех дисках ищется файлик flashtag и
:: буква диска, где есть этот файлик присваивается переменной %FLASH%
FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\flashtag SET FLASH=%%d:
:: добавляем нужные нам пути в переменную %PATH%
SET PATH=%PATH%;%FLASH%\soft;%FLASH%\soft\tools
:: запускаем Total Commander и в качестве параметров
:: указываем файлик с его настройками подготовленный заранее
start /wait %FLASH%\soft\totalcmd\TOTALCMD.EXE /i=%FLASH%\soft\totalcmd\wincmd.ini /L=%FLASH%\ /R=X:\
exit
Я специально не стал размещать Total Commander внутри самого winpe.wim чтобы не разбазаривать оперативку, необходимую для PE. C этой же целью не стал добавлять нужные мне утилитки непосредственно в winpe.wim, а скопировал их на флешку/диск. Для этого и добавил путь
%FLASH%\soft\tools к переменной окружения %PATH%.
3. В файлик настроек Total Commander я добавил секцию
wincmd.ini:
Код:
![Выделить весь код](images/misc/selectcode.png)
* * *
[DirMenu]
menu1=Repartition Disk 0
cmd1=%FLASH%\exec\repartition_disk_0.cmd
menu2=Repartition Disk 1
cmd2=%FLASH%\exec\repartition_disk_1.cmd
menu3=Apply Windows XP Pro SP3 VLK Ru on Drive C
cmd3=%FLASH%\exec\apply_wim.cmd xp vlk
menu4=Apply Windows XP Pro SP3 OEM Ru on Drive C
cmd4=%FLASH%\exec\apply_wim.cmd xp oem
menu5=Apply Windows XP Pro SP3 HOME Ru on Drive C
cmd5=%FLASH%\exec\apply_wim.cmd xp home
menu6=Acronis Backup & Recovery
cmd6=%FLASH%\exec\acronis.cmd
menu7=AIDA64
cmd7=%FLASH%\soft\AIDA64\aida64.exe
menu8=Ultra ISO
cmd8=%FLASH%\soft\UltraISO\UltraISO.exe
* * *
По сочетанию клавиш Ctrl+D вызывается данное меню. Думаю, по содержанию тут всё понятно.
4. Скрипт
repartition_disk_0.cmd запускает лишь одну строку
diskpart /s %FLASH%\exec\repartition_disk_0.txt - т.е. утилита diskpart отрабатывает по сценарию описанному в файле
repartition_disk_0.txt:
Код:
![Выделить весь код](images/misc/selectcode.png)
select disk 0
clean
create partition primary
active
assign
format quick
В данном случае первый установленный в системе жесткий диск очищается от всего, а потом на нём создаётся первичный раздел, этот раздел делается активным (чтобы он был загрузочным) и форматируется. Использование заранее определённых сценариев diskpart очень ускоряет процесс подготовки HDD для установки системы, можете наделать их по своему предпочтению.
5. Ну, и последний скрипт, который при помощи утилитки imagex устанавливает windows. У меня скрипт универсальный. Как можно увидеть из команд запускаемых в меню Total Commander (см п. 3) скрипт запускается с параметрами
apply_wim.cmd xp vlk. Первый параметр это имя WIM-образа (без расширения), второй параметр это издание внутри указанного WIM-образа. Ну, и сам скрипт
apply_wim.cmd:
Код:
![Выделить весь код](images/misc/selectcode.png)
@echo off
if /i "%1"=="" goto usage
if /i not "%1"=="xp" if /i not "%1"=="vista" if /i not "%1"=="seven" goto usage
if /i "%2"=="" goto usage
if /i not "%3"=="" goto usage
set izdanie=0
rem -------------------- XP edition select -----------------------
if /i "%1"=="xp" (
if /i "%2"=="vlk" (
set izdanie=1
goto install
)
if /i "%2"=="oem" (
set izdanie=2
goto install
)
if /i "%2"=="home" (
set izdanie=3
goto install
)
)
rem ------------------ SEVEN edition select ----------------------
if /i "%1"=="seven" (
if /i "%2"=="homebasic" (
set izdanie=1
goto install
)
if /i "%2"=="homepremium" (
set izdanie=2
goto install
)
if /i "%2"=="professional" (
set izdanie=3
goto install
)
if /i "%2"=="enterprise" (
set izdanie=4
goto install
)
if /i "%2"=="ultimate" (
set izdanie=5
goto install
)
)
:install
if %izdanie%==0 goto usage
rem echo imagex /apply %FLASH%\images\%1.wim %izdanie% c:\
if NOT EXIST %FLASH%\images\%1.wim goto wimerror
imagex /apply %FLASH%\images\%1.wim %izdanie% c:\
goto :EOF
:usage
echo Usage: apply_wim [xp^|vista^|seven] [oem^|vlk^|home] ^| [homebasic^|homepremium^|professional^|enterprise^|ultimate]
echo.
echo Example: apply_wim xp oem
pause
goto :EOF
:wimerror
echo WIM-image not found!
pause
goto :EOF