Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
@REM ----------------------------------------------------------------- @REM @REM mkmedctr.cmd - Terrye @REM Generate Media Center Cabinet File. @REM @REM Leveraged from: @REM MkTabCab.cmd - dougpa @REM Generate TabletPC.cab file. @REM @REM Copyright (c) Microsoft Corporation. All rights reserved. @REM @REM ----------------------------------------------------------------- @if defined _CPCMAGIC goto CPCBegin @perl -x "%~f0" %* @goto :EOF #!perl use strict; use lib $ENV{RAZZLETOOLPATH} . "\\PostBuildScripts"; use lib $ENV{RAZZLETOOLPATH}; use PbuildEnv; use ParseArgs; use Logmsg;
sub Usage { print<<USAGE; exit(1) } mkmedctr.cmd [-l <language>]
This sript creates medctr.cab. This cabinet contains files which are only installed on Windows XP TabletPC edition. USAGE
sub Dependencies { if ( !open DEPEND, ">>$ENV{_NTPOSTBLD}\\..\\build_logs\\dependencies.txt" ) { errmsg("Unable to open dependency list file."); die; } print DEPEND<<DEPENDENCIES; \[$0\] IF { mediactr.cab mediactr.cat } ADD { ehepgdat.exe medctr.sed DEPENDENCIES my $file; $file = "$ENV{_NTTREE}\\medctr.sed"; $file = "$ENV{_NTFILTER}\\medctr.sed" if !-f $file; sys("copy $file $ENV{TEMP}\\medctr.sed >nul 2>nul"); if (!open SED, "$ENV{TEMp}\\medctr.sed") { errmsg("Unable to open medctr.sed"); die; } my @files = <SED>; close SED; while ( (shift @files) !~ /\[SourceFiles0\]/i ) {} for (@files) { s/\s*\=\s*$/\n/; print DEPEND if !/^\s*$/; } print DEPEND "}\n\n"; close DEPEND; exit; }
sub sys { my $cmd = shift; logmsg("Running: $cmd"); system($cmd); if ($?) { errmsg "$cmd ($?)"; die; } }
sub NoPrejit { $ENV{"_NOPREJIT"} = "SquelchPrejit"; }
my $qfe; parseargs('?' => \&Usage, 'plan' => \&Dependencies, 'qfe:' => \$qfe, 'noprejit' => \&NoPrejit );
if ( -f "$ENV{_NTPOSTBLD}\\..\\build_logs\\skip.txt" ) { if ( !open SKIP, "$ENV{_NTPOSTBLD}\\..\\build_logs\\skip.txt" ) { errmsg("Unable to open skip list file."); die; } while (<SKIP>) { chomp; exit if lc$_ eq lc$0; } close SKIP; }
# *** TEMPLATE CODE *** $ENV{"_CPCMAGIC"}++;exit(system($0)>>8); __END__ @:CPCBegin @set _CPCMAGIC= @setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS @if not defined DEBUG echo off @REM Only build this .cab for x86 if not defined x86 goto :End
call logmsg.cmd "MkMedCtr: Start Media Center postbuild..."
if NOT "%_NOPREJIT%" == "" goto noprejit if "%OFFICIAL_BUILD_MACHINE%%PREJIT%" == "" goto noprejit if NOT "%_BUILDARCH%%_BUILDTYPE%" == "x86fre" goto noprejit
@REM Just in case LANG is not set if NOT DEFINED lang goto :do_prejit
@REM Only USA and KOR are supported right now if /i NOT "%lang%"=="usa" if /i NOT "%lang%"=="kor" goto :End
:do_prejit set files=custsat.dll DebugSvc.dll ehCIR.dll ehCIR.ird EhCM.dll EhDebug.dll ehdrop.dll ehentt.dll ehepg.dll ehepgdat.dll ehepgdec.dll ehepgnet.dll ehiPlay.dll ehiProxy.dll ehiTuner.dll ehiuserxp.dll ehiVidCtl.dll ehiwmp.dll ehPlayer.dll ehProxy.dll e hRec.exe ehRecObj.dll ehres.dll ehSched.exe ehshell.exe ehtray.exe ehui.dll ehuihlp.dll medctrro.exe snchk.exe
call logmsg.cmd "MkMedCtr: Copying files to Prejit machine and waiting up to 32 minutes" @rem Copy binaries up to prejit machine for %%a in (%files%) do ( copy %_NTTREE%\%%a %PREJIT_DROP_SITE%\%%a )
@rem Create the file which triggers the prejit process echo %_NTTREE% >%PREJIT_DROP_SITE%\new_bins.here sleep 120
set sleep_count=2
:sleep_loop sleep 60 if exist %PREJIT_LDO_PICKUP%\ehshell.ldo goto :prejit_done set /a sleep_count+=1 if %sleep_count% GEQ 32 goto :prejit_too_long call logmsg.cmd "MkMedCtr: Waited %sleep_count% minute(s) so far" goto :sleep_loop
:prejit_too_long call logmsg.cmd "MkMedCtr: .LDO generation took too long, using placeholders" goto :prejit_continue
:prejit_done call logmsg.cmd "MkMedCtr: Getting .LDO files from Prejit machine" sleep 60
@REM Copy prejit results from %PREJIT_LDO_PICKUP% to bin folder, replacing placeholder .ldo files call %_NTROOT%\tools\sp\PlaceLdo.cmd %PREJIT_LDO_PICKUP%
goto :prejit_continue
:prejit_continue
:noprejit
@REM @REM Use Iexpress.exe to generate the .cab @REM @REM First, update the sed with the correct PostBuild directory. REM
set DoubledPath=%_NTPostBld:\=\\% set NewSedFile=%temp%\mediactr.sed
if EXIST %NewSedFile% del /f %NewSedFile%
perl -n -e "s/_NTPOSTBLD/%DoubledPath%/g;print $_;" < %_NTPostBld%\medctr.sed > %NewSedFile%
if not exist %NewSedFile% ( call errmsg.cmd "File %NewSedFile% not found." goto :End ) @REM @REM Generate MediaCtr.cat REM set MediaCtrTmp=%_NTPostBld%\MediaCtr.tmp if EXIST %MediaCtrTmp% rd /s /q %MediaCtrTmp% md %MediaCtrTmp%
set SourceFiles0=%_NTPOSTBLD% set SourceFiles1=%_NTPOSTBLD% if defined LANG if /i not "%LANG%"=="usa" set SourceFiles1=%_NTPOSTBLD%\%LANG% if defined LANGUAGE if /i not "%LANGUAGE%"=="usa" set SourceFiles1=%_NTPOSTBLD%\%LANGUAGE% set set SourceDir=%SourceFiles0% set CopyFile= for /f "tokens=1" %%a in (%NewSedFile%) do ( if /i "%%a"=="[SourceFiles0]" ( set CopyFile=1 set SourceDir=%SourceFiles0% ) else ( if /i "%%a"=="[SourceFiles1]" ( set CopyFile=1 set SourceDir=%SourceFiles1% ) else ( if /i "!copyFile!"=="1" ( set File=%%a copy /y !SourceDir!\!File! %MediaCtrTmp%\!File! if errorlevel 1 ( call errmsg.cmd "Could not copy %_NTPostBld%\!File!" set CopyErrors=1 ) ) ) ) ) if defined CopyErrors goto :End
sleep 10
call logmsg.cmd "MkMedCtr: Creating Catalog" call deltacat %MediaCtrTmp% if not exist %MediaCtrTmp%\delta.cat ( call errmsg.cmd "Could not find %MediaCtrTmp%\delta.cat> Deltacat failed." goto :End ) if exist %MediaCtrTmp%\MediaCtr.cat del /f /q %MediaCtrTmp%\MediaCtr.cat ren %MediaCtrTmp%\Delta.cat MediaCtr.cat if errorlevel 1 ( call errmsg.cmd "Could not rename delta.cat to MediaCtr.cat" goto :End )
copy %MediaCtrTmp%\MediaCtr.cat %_NTPostBld%\MediaCtr.cat if errorlevel 1 ( call errmsg.cmd "Could not copy %MediaCtrTmp%\MediaCtr.cat to %_NTPostBld%" goto :End )
REM REM Now generated MediaCtr.cab REM if exist %_NTPostBld%\mediactr.cab del /f %_NTPostBld%\mediactr.cab
REM REM Munge the path so we use the correct wextract.exe to build the package with... REM NOTE: We *want* to use the one we just built (and for Intl localized)! REM set _NEW_PATH_TO_PREPEND=%RazzleToolPath%\%PROCESSOR_ARCHITECTURE%\loc\%LANG% set _OLD_PATH_BEFORE_PREPENDING=%PATH% set PATH=%_NEW_PATH_TO_PREPEND%;%PATH%
call logmsg.cmd "MkMedCtr: Creating CAB" call ExecuteCmd.cmd "start /min /wait iexpress.exe /M /N /Q %NewSedFile%"
REM REM Return the path to what it was before... REM set PATH=%_OLD_PATH_BEFORE_PREPENDING%
if not exist %_NtPostBld%\mediactr.cab ( call errmsg.cmd "IExpress.exe failed on %NewSedFile%. One or more files may be missing." goto :End ) :End if defined MediaCtrTmp if exist %MediaCtrTmp% rd /s /q %MediaCtrTmp% if "%errors%" == "" set errors=0 seterror.exe %errors%& goto :EOF
|