Galapo has seen the project image,
You might think of Panther XP as an alternative to 'universal restore' by Acronis.
It uses the longhornpe, but does not have to. (These deployment systems all use sysprep, *just updated by MS)
Panther XP requires 1 reboot to go from PE to WinXP MiniSetup plus one more to finish and load the desktop. Thats.. err, um, ... 2.
Please PM me and I'll provide a link for the client image.
...
I'm now creating a set of support tools to mount the beta wim image(s) and inject new files...
here's a peek ...
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: "Panther" XP/2003 WinPE WIM Beta 1 Mount
:: Copyright (C)2008 thuunderboy
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@echo off
title %~0
set safety=on
set wim_image=WinPE
set wim_index=1
set build_root=..\..\..
cd %build_root%
set build_root=%cd%
set svc_dir=%build_root%\support\service\svcres
if not exist %svc_dir%\%~n0%~x0 goto :eof
call %svc_dir%\_set_env.cmd -def
set pthrxpdir=%workdrive%\PantherXP
set linkd_dir=%pthrxpdir%\%wim_image%
for %%i 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 not exist %%i: (
set tmpdrv=%%i
)
echo.&echo.&echo "Panther" XP/2003 %~n0%~x0 &echo.
echo _______________________________________________________ &echo.
if exist %build_root%\sources\%wim_image%.wim (
if %safety% neq off echo.&echo Ready to mount %wim_image%.WIM to Drive: [%tmpdrv%:] &echo.&echo. &pause &echo.
for %%L in (%linkd_dir%) do (
if exist %%L_bak rd /s/q %%L_bak
if exist %%L ren %%L %%~nL_bak
md %%L
)
echo.&echo VDCmd [Version 1.0.0.3] Copyright 2005 Kana Solution
%svc_dir%\vdcmd.exe -d=%tmpdrv% -p="%linkd_dir%"
) else echo.&echo %wim_image%.WIM file missing! &echo.
if exist %tmpdrv%: (
echo.&echo Virtual Drive: [%tmpdrv%:] mapped to: [%linkd_dir%] &echo.
echo.&echo xImage [Version 6.0.4059.0] Copyright 2003 Microsoft Corporation
echo.&echo Applying: [%build_root%\sources\%wim_image%.wim {Index %wim_index%}]
echo.&echo To Drive: [%tmpdrv%:]
%svc_dir%\ximage.exe /apply %build_root%\sources\%wim_image%.wim %tmpdrv%: %wim_index%
) else if exist %build_root%\sources\%wim_image%.wim (
echo.&echo A drive letter must be made available to continue.
echo.&echo Ready to exit. &echo.
)
if "%1" neq "-q" pause
exit
--and no. 2 ...
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: "Panther" XP/2003 WinPE Mass Storage Driver Injector
:: Copyright (C)2008 thuunderboy
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@echo off
title %~0
set build_root=..\..\..
cd %build_root%
set build_root=%cd%
set svc_dir=%build_root%\support\service\svcres
if not exist %svc_dir%\%~n0%~x0 goto :eof
call %svc_dir%\_set_env.cmd -def
set pthrxpdir=%workdrive%\PantherXP
set drvrep=%build_root%\sources\dist\$oem$\drivers\boot
set drvarc=%build_root%\support\service\driver_arc
set sys32_rep=%build_root%\sources\dist\$oem$\$$\system32
set pebld_tag=boot\system32\drivers\wimfsf.sys
for %%I 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 %%I:\%pebld_tag% (
set pebld_root=%%I:
)
echo.&echo.&echo "Panther" XP/2003 %~n0%~x0 &echo.
echo _______________________________________________________ &echo.
if exist %pebld_root%\%bld_tag% (
echo.&echo Install target located at Drive: [%pebld_root%]
) else echo.&echo Install target not found. &echo.&pause &exit
for /r "%drvarc%\" %%C in (*.7z *.cab *.rar *.zip) do (
for %%D in (%drvrep%\%%~nC) do (
%sys32_rep%\7za.exe x "%%C" -y -o"%%D" >nul
echo.&echo Extracting %%~nC%%~xC to:
echo %%D
)
)
echo.&echo Preparing to install driver packages . . .&echo.
for /r "%drvrep%\" /d %%D in (*) do (
if exist %%D\*.inf cd %%D && for %%B in (*.inf) do (
echo %%~nB
set drvsfound=true
)
)
if "%drvsfound%" neq "true" (
echo.
echo No drivers found. &echo.
echo Please place drivers into subfolders of: &echo.&echo [%drvrep%]
echo.
pause
goto :eof
)
echo.
pause
ren "%pebld_root%\boot" "Windows"
ren %pebld_root%\Windows\system32\setupreg.hiv SYSTEM
move %pebld_root%\Windows\system32\SYSTEM %pebld_root%\Windows\system32\config\
md %pebld_root%\Users "%pebld_root%\Program Files"
for /r "%drvrep%\" %%M IN (*.inf) do (
%svc_dir%\peimg.exe %pebld_root%\Windows /inf="%%M"
echo.
)
ren "%pebld_root%\Windows" "boot"
ren %pebld_root%\boot\system32\config\SYSTEM setupreg.hiv
move %pebld_root%\boot\system32\config\setupreg.hiv %pebld_root%\boot\system32\
rd /s/q %pebld_root%\Users "%pebld_root%\Program Files"
rd /s/q %pebld_root%\boot\system32\DriverStore
set winpeoem_sif=%pebld_root%\boot\system32\winpeoem.sif
echo.&echo.&echo Updating "%winpeoem_sif%". . . &echo.
if not exist %winpeoem_sif% (
echo [Version]> %winpeoem_sif%
echo signature="$Windows NT$">> %winpeoem_sif% &echo.>> %winpeoem_sif%
) else echo.>> %winpeoem_sif%
for /r "%drvrep%\" /d %%D in (*) do (
if exist %%D\*.sys (
cd %%D
for %%B in (*.sys) do %svc_dir%\inimod.exe /F:"%winpeoem_sif%" /AC /S:"massstoragedrivers.append" /K:"MassStorageDriver_%%~nB" /V:"%%B" >nul
)
)
type %winpeoem_sif% &echo.
if %errorlevel% neq 0 echo Exit code %errorlevel%.
echo.&echo Done.&echo.
if "%1" neq "-q" pause
exit
and unmount ...
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: "Panther" XP/2003 WIM Beta 1 Unmount
:: Copyright (C)2008 thuunderboy
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@echo off
title %~0
call %~dp0\_set_env.cmd -def
set pthrxpdir=%workdrive%\PantherXP
set tagfile_1=boot\system32\drivers\wimfsf.sys
set tagfile_2=sysprep\setact.exe
set unmount=all
set tmpdrv=
echo.&echo.&echo "Panther" XP/2003 %~n0%~x0 &echo.
echo _______________________________________________________ &echo.
if not exist %pthrxpdir% md %pthrxpdir% &set pxpdir=removed
if not exist %pthrxpdir%\winpe md %pthrxpdir%\winpe &set pedir=removed
if not exist %pthrxpdir%\install md %pthrxpdir%\install &set instdir=removed
:_unmount
for %%I 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 %%I:\%tagfile_1% set tmpdrv=%%I
if exist %%I:\%tagfile_2% set tmpdrv=%%I
)
if not exist %tmpdrv%: set tmpdrv=Z
if not exist %tmpdrv%: set tmpdrv=Y
if not exist %tmpdrv%: set tmpdrv=X
if not exist %tmpdrv%: set tmpdrv=W
if not exist %tmpdrv%: set tmpdrv=V
if not exist %tmpdrv%: set tmpdrv=U
if not exist %tmpdrv%: set tmpdrv=T
if not exist %tmpdrv%: set tmpdrv=S
if not exist %tmpdrv%: set tmpdrv=R
if not exist %tmpdrv%: set tmpdrv=Q
if not exist %tmpdrv%: set tmpdrv=P
if not exist %tmpdrv%: set tmpdrv=O
if not exist %tmpdrv%: set tmpdrv=N
if not exist %tmpdrv%: set tmpdrv=M
if not exist %tmpdrv%: set tmpdrv=L
if not exist %tmpdrv%: set tmpdrv=K
if not exist %tmpdrv%: set tmpdrv=J
if not exist %tmpdrv%: set tmpdrv=I
if not exist %tmpdrv%: set tmpdrv=H
if not exist %tmpdrv%: set tmpdrv=G
if not exist %tmpdrv%: set tmpdrv=F
if not exist %tmpdrv%: set tmpdrv=E
if not exist %tmpdrv%: set tmpdrv=D
if not exist %tmpdrv%: set tmpdrv=C
start /wait /min subst /d %tmpdrv%:
if not exist %tmpdrv%: (
goto _result
) else set tmpdrv=Z
if not exist %tmpdrv%: set tmpdrv=Y
if not exist %tmpdrv%: set tmpdrv=X
if not exist %tmpdrv%: set tmpdrv=W
if not exist %tmpdrv%: set tmpdrv=V
if not exist %tmpdrv%: set tmpdrv=U
if not exist %tmpdrv%: set tmpdrv=T
if not exist %tmpdrv%: set tmpdrv=S
if not exist %tmpdrv%: set tmpdrv=R
if not exist %tmpdrv%: set tmpdrv=Q
if not exist %tmpdrv%: set tmpdrv=P
if not exist %tmpdrv%: set tmpdrv=O
if not exist %tmpdrv%: set tmpdrv=N
if not exist %tmpdrv%: set tmpdrv=M
if not exist %tmpdrv%: set tmpdrv=L
if not exist %tmpdrv%: set tmpdrv=K
if not exist %tmpdrv%: set tmpdrv=J
if not exist %tmpdrv%: set tmpdrv=I
if not exist %tmpdrv%: set tmpdrv=H
if not exist %tmpdrv%: set tmpdrv=G
if not exist %tmpdrv%: set tmpdrv=F
if not exist %tmpdrv%: set tmpdrv=E
if not exist %tmpdrv%: set tmpdrv=D
if not exist %tmpdrv%: set tmpdrv=C
start /wait /min subst /d %tmpdrv%:
:_result
if not exist %tmpdrv%: (
echo.&echo Virtual Drive [%tmpdrv%:] unmounted.
if %unmount% equ all goto _unmount
) else if %unmount% equ all (
echo.&echo All Virtual Drives unmounted.
) else echo.&echo Done.
echo.&echo.
if "%pedir%"=="removed" rd /q/s %pthrxpdir%\winpe
if "%instdir%"=="removed" rd /q/s %pthrxpdir%\install
if "%pxpdir%"=="removed" rd /q/s %pthrxpdir%
if "%1" neq "-q" pause
exit
--there are now over a dozen servicing commands in all, plus new docs.
Once everything is finalized it will be made available for widespread use.
So far it's going good and is quite fun to work on, so it'll be done soon and something posted here.
...
btw...*
The new xp.5512 sp3 opk update is now outIt has a new sysprep (v 5512) which adds an update cycle to my project.
what the hell.
-t