Windows-Server-2003/tools/postbuildscripts/wsrmpostbuild.cmd

407 lines
12 KiB
Batchfile

@REM -----------------------------------------------------------------
@REM
@REM wsrmpostbuild.cmd - sujoyG
@REM Creates the layout and MSI package for WSRM
@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;
sub Usage { print<<USAGE; exit(1) }
wsrmpostbuild.cmd
Make MSI files for WSRM distribution (wsrm.msi)
USAGE
parseargs('?' => \&Usage);
# *** TEMPLATE CODE ***
$ENV{"_CPCMAGIC"}++;exit(system("$0 @ARGV")>>8);
__END__
@:CPCBegin
@set _CPCMAGIC=
@setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
@if not defined DEBUG echo off
@REM *** CMD SCRIPT BELOW ***
setlocal
set SourcePath=%~1
set TargetRootPath=%~2
if /i %lang% equ CS goto :EOF
if /i %lang% equ NL goto :EOF
if /i %lang% equ HU goto :EOF
if /i %lang% equ TR goto :EOF
perl %RazzleToolPath%\cksku.pm -t:ads -l:%lang%
if %errorlevel% EQU 0 goto :ValidSKU
perl %RazzleToolPath%\cksku.pm -t:dtc -l:%lang%
if %errorlevel% EQU 0 goto :ValidSKU
call logmsg.cmd "%~nx0: WSRM not localized for %lang%; nothing to do."
goto :EOF
:ValidSKU
if %sourcepath%x equ x (
set SourcePath=%_NTPOSTBLD%\wsrm\dump
)
if %TargetRootPath%x equ x (
set TargetRootPath=%SourcePath%\..\setup
)
path=%path%;%sourcepath%\msi;%BUILD_PATH%;%managed_tool_path%\sdk\bin;%managed_tool_path%\urt\%complus_version%
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo set the required variables
set TargetBinPath=%TargetRootpath%\bin
set TargetMSC2kPath=%TargetBinPath%\MSC2k
set TargetMSCDotNetPath=%TargetBinPath%\MSCDotNet
set TargetDataPath=%TargetRootpath%\data
set TargetHelpPath=%TargetRootpath%\help
set datadir=%sourcepath%\msi
set msiName=wsrm.msi
set errorFile=%_NTPOSTBLD%\BUILD_LOGS\wsrmpostbuild.err
cd /d "%sourcepath%"
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo create the required directories
rd /s /q "%TargetRootPath%" 2>nul
md "%TargetRootPath%"
md "%TargetBinPath%"
md "%TargetDataPath%"
if %_BuildArch% equ x86 (
md "%TargetHelpPath%"
md "%TargetMSC2kPath%"
md "%TargetMSCDotNetPath%"
)
del /q %errorFile% 2>nul 1>nul
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo strong naming the managed binaries
@echo \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
if /i %_BuildArch% neq x86 goto :skipstrongname
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo setproperty
@echo \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
perl %SourcePath%\msi\setproperty.pl
set SNASMFILES=wsrmsnapin.resources.dll wsrmlib.dll sysmonitor.dll wsrmsnapin.dll wbemclient.dll
call %razzletoolpath%\postbuildscripts\snsignfiles.cmd %SNASMFILES%
if %errorlevel% neq 0 (
@echo FAILED: ERROR in Strong Name signing
goto :end
)
:skipstrongname
copy /y %msiname% $%msiname%$ 1>nul
if /I %_BuildArch% neq x86 goto :skipManaged
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo to update registry table with inteop com dll entries for managed dll
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
copy /y "%datadir%\regasmFiles.txt" $t.txt$ 1>nul
msidb -e Registry -f %cd% -d $%msiname%$
for /f "delims=" %%i in ($t.txt$) do (
if exist %errorFile% goto :eof
regasm /regfile:%%i.reg %%i
if %errorlevel% neq 0 (
@echo FAILED: ERROR in regasm
@echo FAILED: ERROR in regasm for file %%i, errlevel=%errorlevel% >> %errorFile%
)
)
if exist %errorFile% goto :end
del /q ComDllReg.err 2> nul 1>nul
for /f "delims=" %%i in ($t.txt$) do (
if exist ComDllReg.err goto :eof
wscript "%datadir%\ComDllReg.wsf" /idtfile:registry.idt /regfile:"%cd%\%%i.reg"
if exist ComDllReg.err type ComDllReg.err >> %errorFile%
)
if exist %errorFile% goto :end
msidb -i Registry.idt -f %cd% -d $%msiname%$
del /q Registry.idt 2> nul 1> nul
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo update msiassemblyname table for managed binaries
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
del /q MsiAssemblyNameMerge.idt 1>nul 2>nul
copy /y "%DataDir%\msiassemName.txt" $t.txt$ 1>nul
del /q CreateMsiAssName.err 2> nul 1>nul
for /f "delims=" %%i in ($t.txt$) do (
if exist CreateMsiAssName.err goto :eof
wscript "%datadir%\CreateMsiAssName.wsf" /AssFile:"%cd%\%%i" /idtfile:MsiAssemblyNameMerge.idt
if exist CreateMsiAssName.err type CreateMsiAssName.err >> %errorFile%
)
if exist %errorFile% goto :end
rem export the existing msiassemblyname table
msidb -e MsiAssemblyName -f "%cd%" -d $%msiname%$
type MsiAssemblyNameMerge.idt >> MsiAssemblyName.idt
msidb -i MsiAssemblyName.idt -f "%cd%" -d $%msiname%$
del MsiAssemblyName.idt
del MsiAssemblyNameMerge.idt
:skipManaged
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo import the setupdll into MSI
copy /y wsrmsetupdll.dll msi\binary\Callwrmsetupdll.ibd 1>nul
msidb -d $%msiName%$ -f %cd%\msi -i Binary.idt
del msi\binary\Callwrmsetupdll.ibd
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo update product code, package code, langID and EULA
msidb -e Property -f "%cd%" -d $%msiname%$
msidb -e _SummaryInformation -f "%cd%" -d $%msiname%$
msidb -e Upgrade -f "%cd%" -d $%msiname%$
perl %SourcePath%\msi\updatelangid.pl %SourcePath%
perl %SourcePath%\msi\integrate_eula.pl %SourcePath%
rem /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
rem updating product code BUGBUG
uuidgen /c /o$uuid.tmp$
for /f "delims=" %%i in ($uuid.tmp$) do set uuidcode=%%i
rep 11111111-2222-3333-4444-555555555555 %uuidcode% Property.idt 1>nul
rem /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
rem updating package code
uuidgen /c /o$uuid.tmp$
for /f "delims=" %%i in ($uuid.tmp$) do set uuidcode=%%i
rep 11111111-2222-3333-4444-555555555555 %uuidcode% _SummaryInformation.idt 1>nul
msidb -i Property.idt -f "%cd%" -d $%msiname%$
msidb -i _SummaryInformation.idt -f "%cd%" -d $%msiname%$
msidb -i Upgrade.idt -f "%cd%" -d $%msiname%$
del /q Property.idt 2> nul 1> nul
del /q _SummaryInformation.idt 2> nul 1> nul
del /q Upgrade.idt 2> nul 1> nul
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo copy the files into appropriate directories
set /a totalerc=0
if /I %_BuildArch% neq x86 goto :skipClientFiles
:: dotnetfx.exe
copy /y dotnetfx.exe "%TargetRootPath%\dotnetfx.exe" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
:: copy langpack.exe
if %lang%x neq x (
if %lang%x neq USAx (
copy /y langpack\%lang%\langpack.exe "%TargetRootPath%\langpack.exe" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
)
)
copy /y index.htm "%TargetBinPath%\WSRMStatus.htm" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wrmdisconnected.htm "%TargetBinPath%\WSRMDisconnected.htm" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y Sysmonitor.dll "%TargetBinPath%\SysMonitor.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmlib.dll "%TargetBinPath%\WSRMLib.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y WbemClient.dll "%TargetBinPath%\WbemClient.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmsnapin.dll "%TargetBinPath%\wsrmsnapin.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmsnapin.resources.dll "%TargetBinPath%\wsrmsnapin.resources.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmc.exe "%TargetBinPath%\wsrmc.exe" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmps.dll "%TargetBinPath%\wsrmps.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmc.resources.dll "%TargetBinPath%\wsrmc.resources.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmwrappers.dll "%TargetBinPath%\wsrmwrappers.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y WSRM_2k.msc "%TargetMSC2kPath%\wsrm.msc" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y WSRM.msc "%TargetMSCDotNetPath%\wsrm.msc" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wrmsnap.chm "%TargetHelpPath%\wrmsnap.chm" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmcs.chm "%TargetHelpPath%\wsrmcs.chm" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
:skipClientFiles
:: copy Symbols
if exist %SourcePath%\..\..\Symbols (
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo copy symbols into dump
xcopy %SourcePath%\..\..\Symbols\* %SourcePath%\WSRMSym\* /s /e /v /y 1>nul
set /a totalerc=%totalerc%+%errorlevel%
)
copy /y WSRMEventList.xml "%TargetBinPath%\WSRMEventList.xml" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y relnotes.htm "%TargetRootPath%\relnotes.htm" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y logo.gif "%TargetRootPath%\logo.gif" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrm.ico "%TargetRootPath%\wsrm.ico" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y $%msiname%$ "%TargetRootPath%\wsrm.msi" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y setup.exe "%TargetRootPath%\setup.exe" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y settings.ini "%TargetRootPath%\settings.ini" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrm.exe "%TargetBinPath%\wsrm.exe" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmeventlog.dll "%TargetBinPath%\wsrmeventlog.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmperfcounter.dll "%TargetBinPath%\wsrmperfcounter.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmctr.h "%TargetBinPath%\wsrmctr.h" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y wsrmctr.ini "%TargetBinPath%\wsrmctr.ini" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
if %_BuildArch% equ x86 (
if %_BuildType% equ chk (
copy /y msvcrtd.dll "%TargetBinPath%\msvcrtd.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y msvcp60d.dll "%TargetBinPath%\msvcp60d.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
)
) else (
if %_BuildType% equ chk (
copy /y msvcrtd_64.dll "%TargetBinPath%\msvcrtd.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y msvcp60d_64.dll "%TargetBinPath%\msvcp60d.dll" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
)
)
copy /y Allocationpol.xml "%TargetDataPath%\Allocationpol.xml" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y Selectionpol.xml "%TargetDataPath%\Selectionpol.xml" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
copy /y Calendar.xml "%TargetDataPath%\Calendar.xml" 1>nul
set /a totalerc=%totalerc%+%errorlevel%
if not "%totalerc%" == "0" (
@echo FAILED: Copying of files failed.
@echo FAILED: Copying of files failed, %totalerc% failures >> %errorFile%
goto :end
)
cd /d "%TargetRootPath%"
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
@echo upadate for unmanaged binaries and unversioned files
msifiler -d wsrm.msi -v -h > nul
@echo /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
call %razzletoolpath%\postbuildscripts\wsrmcdscript.cmd
:end
call :cleanup
if exist %errorFile% endlocal && exit /b 1
endlocal
exit /b 0
:cleanup
cd %sourcepath%
pushd.
del $*$ 1>nul 2>nul
del *.reg 1>nul 2>nul
popd
goto :eof