windows-nt/Source/XPSP1/NT/base/ntsetup/srvpack_binary_release/propsp.cmd
2020-09-26 16:20:57 +08:00

195 lines
4.1 KiB
Batchfile

@echo off
goto SkipComments
*
* Each release will move the previous build of the product to the next
* available numbered build to allow some history; if a build is for a
* forked version of the installer the product 3 letter code will be
* appended to the subdirectories associated with that OS.
*
* \\winseqfe\release\PkgInstaller\<build>[.<OS>]\<Lang>\<Platform>\<buildtype>
*
* Build will be latest.tst unless the installer has been forked to meet
* the needs of a product OS is optional and only applies if we are building
*
* A forked version of installer will be W2K, WxP
* Lang 2 letter lang code
* Platform x86, ia64
* Buildtype only release FRE builds
*
* We will release NON split binaries; this will allow people to drop
* these binaries to other locations and get them split as required by
* that process.
*
* Directory structure and binaries at inception of this project:
* Spcustom.dll
* Spuninst.exe
* Update.exe
* OS\W2K\spmsg.dll ; Only copy the OS specific spmsg.dll
* OS\WxP\spmsg.dll
* Symbols.pri\..... ; only publish private symbols
*
*
*
:SkipComments
setlocal
set Build=%1
set LangOpt=%2
set OS=wxp
set TgtDir=.
if "%Build%" == "" Echo No build specified & goto :ErrorExit
set SrcDir=\\winseqfe\release\PkgInstaller\%1
if not exist %SrcDir% Echo Invalid build directory & goto :ErrorExit
for /f "tokens=1,2" %%i in (.\langcode.txt) do call :ProcessLang %%i %%j
REM sd submit -C "SrvPack PkgInstaller bindrop" %TgtDir%\...
goto :EOF
***********************
:ProcessLang
set LangDone = 0
set Lang2=%1
set Lang3=%2
if "%LangOpt%" == "" goto :ChkLangSrc
if "%LangOpt%" == "%Lang2%" goto :ChkLangSrc
goto :EOF
:ChkLangSrc
set SrcLang=%SrcDir%\%Lang3%
if exist %SrcLang% goto :DoLang
REM
REM If the listed Sourc Lang doesn't exist first try the 2 char lang code
REM If that doesn't work look up in the lang codes table for all the possible
REM 3 char lang codes that match, and try them.
REM
set SrcLang=%SrcDir%\Lang2%
if exist %SrcLang% set Lang3=%Lang2% & goto :DoLang
for /f "tokens=1,9 delims=, " %%i in (%SDXROOT%\tools\codes.txt) do call :FindLang %%i %%j
goto :EOF
:FindLang
if "%LangDone%" == "1" goto :EOF
if not "%Lang2%" == "%2" goto :EOF
set SrcLang=%SrcDir%\%1
if exist %SrcLang% set Lang3=%1 & goto :DoLang
goto :EOF
:DoLang
if "%LangDone%" == "1" goto :EOF
echo.
echo ----------------------------
echo Propping %Lang2% %Lang3%
call :ProcessPlatform x86\fre i386\fre
call :ProcessPlatform ia64\fre ia64\fre
set LangDone = 1
if not "%Lang2%" == "en" goto :EOF
call :ProcessPlatform x86\chk i386\chk
call :ProcessPlatform ia64\chk ia64\chk
goto :EOF
:ProcessPlatform
set SrcPlatform=%1
set TgtPlatform=%2
echo.
echo --------
echo Propping %SrcPlatform% %TgtPlatform%
echo.
call :ProcessFile spcustom.dll \ \
call :ProcessFile spuninst.exe \ \
call :ProcessFile update.exe \ \
call :ProcessFile spmsg.dll \os\%os%\ \
REM call :SplitSyms
call :ProcessFile spuninst.pdb \symbols.pri\exe\ \
call :ProcessFile update.pdb \symbols.pri\exe\ \
call :ProcessFile spcustom.pdb \symbols.pri\dll\ \
goto :EOF
:ProcessFile
set File=%1
set SrcPath=%2
set TgtPath=%3
set SrcFile=%SrcDir%\%Lang3%\%SrcPlatform%%SrcPath%%File%
set TgtFile=%TgtDir%\%Lang2%\%TgtPlatform%%TgtPath%%File%
if not exist %SrcFile% goto :EOF
if not exist %TgtFile% goto :AddNewFile
sd edit %TgtFile% > nul
echo copy %SrcFile% %TgtFile%
copy %SrcFile% %TgtFile% > nul
goto :EOF
:AddNewFile
set TgtNew=%TgtDir%\%Lang2%\%TgtPlatform%
mkdir %TgtNew% > nul
echo copy %SrcFile% %TgtFile%
copy %SrcFile% %TgtFile%
sd add %TgtFile% > nul
goto :EOF
:SplitSyms
set TgtPath=%TgtDir%\%Lang%\%Platform%
splitsym -a -v %TgtPath%\spcustom.dll
splitsym -a -v %TgtPath%\spuninst.exe
splitsym -a -v %TgtPath%\update.exe
del %TgtPath%\*.dbg
goto :EOF
:ErrorExit
echo.
echo Syntax: PROPSD SourceDir [Lang]
echo.
echo - SourceDir typically is "latest.tst" from \\winseqfe\release\PkgInstaller\
echo - Language can be specified if only one language is desired.
echo.
goto :EOF