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

363 lines
10 KiB
Batchfile

@REM -----------------------------------------------------------------
@REM
@REM uddi.cmd - creeves
@REM Make CAB files for uddi distribution (uddi.msi)
@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) }
uddi.cmd [-p] [-a]
-p => called from PRS signing
-a => always rebuild, skip file change check
Make CAB files for uddi distribution (uddixxx.msi)
USAGE
parseargs('?' => \&Usage, 'p' =>\$ENV{PRS});
# *** TEMPLATE CODE ***
$ENV{"_CPCMAGIC"}++;exit(system($0)>>8);
__END__
@:CPCBegin
@set _CPCMAGIC=
@setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
@if not defined DEBUG echo off
@REM *** CMD SCRIPT BELOW ***
IF NOT DEFINED SCRIPT_NAME SET SCRIPT_NAME=uddipostbuild.cmd
IF NOT DEFINED MyCopyDir SET MyCopyDir=.
IF NOT DEFINED UDDILOG SET UDDILOG=%MyCopyDir%\%SCRIPT_NAME%.log
IF NOT DEFINED UDDIERRLOG SET UDDIERRLOG=%MyCopyDir%\%SCRIPT_NAME%.err
@if defined DEBUG @ECHO Log is %UDDIERRLOG%
if "%_buildarch%" NEQ "x86" (
call logmsg.cmd "uddi.cmd do nothing on non i386" %UDDILOG%
goto :EOF
)
REM
REM Only run if this is a server SKU (not blade)
REM
for %%i in ( sbs srv ads dtc ) do (
perl %RazzleToolPath%\cksku.pm -t:%%i -l:%lang%
if %errorlevel% EQU 0 goto :ValidSKU
)
call logmsg.cmd "CABGEN: no server products for %lang%; nothing to do." %UDDILOG%
goto :EOF
:ValidSKU
REM
REM Generate cmbins.exe as it is needed below.
REM
REM if /i "%PRS%" == "1" (
REM call %RazzleToolPath%\PostBuildScripts\cmbins.cmd -p
REM ) else (
REM call %RazzleToolPath%\PostBuildScripts\cmbins.cmd
REM )
REM
REM Verify that the \binaries\uddi folder exists
REM
if not exist %_NTPostBld%\uddi (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Directory %_NTPostBld%\uddi not found." %UDDIERRLOG%
goto :EOF
)
REM
REM delete the MSI files that are left in the binaries folder
REM
call logmsg.cmd "--- Delete old MSI files ..." %UDDILOG%
for %%i in ( uddiadm uddidb uddiweb ) do (
if exist %_NTPostBld%\%%i.msi (
call ExecuteCmd.cmd "del /f %_NTPostBld%\%%i.msi"
)
)
REM
REM loop through all the installers
REM
for %%i in ( uddiadm uddidb uddiweb ) do (
if not exist %_NTPostBld%\uddi\%%i.msi (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "*** File %_NTPostBld%\uddi\%%i.msi not found." %UDDIERRLOG%
goto :EOF
)
call LogMsg.cmd "--- Building %%i.msi ..." %UDDILOG%
REM
REM delete any existing DDF or CAB files
REM
call logmsg.cmd "--- Delete existing DDF or CAB files ..." %UDDILOG%
if exist %_NTPostBld%\uddi\%%i.cab (
call ExecuteCmd.cmd "del /f %_NTPostBld%\uddi\%%i.ddf %_NTPostBld%\uddi\%%i.cab"
)
REM
REM Generate the DDF files based in the MSI files
REM
call logmsg.cmd "--- Generate %%i.DDF ..." %UDDILOG%
call ExecuteCmd.cmd "%_NTPostBld%\uddi\msitoddf.exe %_NTPostBld%\uddi\%%i.msi -L %UDDIERRLOG%"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Generation of %%i.DDF failed" %UDDIERRLOG%
goto :EOF
)
REM
REM Create the cab file
REM
call logmsg.cmd "--- Generate %%i.CAB ..." %UDDILOG%
if exist %_NTPostBld%\uddi\%%i.ddf (
pushd %_NTPostBld%\uddi
call ExecuteCmd.cmd "makecab /D SourceDir=%_NTPOSTBLD%\uddi /F %_NTPostBld%\uddi\%%i.ddf"
popd
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Generation of %%i.cab failed" %UDDIERRLOG%
goto :EOF
)
)
REM
REM Extract the Cabs table from the msi file (creates a \Cabs folder)
REM
call logmsg.cmd "--- Extract %%i.MSI Cab Table into a temp folder ..." %UDDILOG%
call ExecuteCmd.cmd "msidb.exe -d %_NTPostBld%\uddi\%%i.msi -f %_NTPostBld%\uddi -e Cabs"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "msidb.exe -d %_NTPostBld%\uddi\%%i.msi failed" %UDDIERRLOG%
goto :EOF
)
REM
REM Copy the new cab file into the \Cabs folder
REM
call logmsg.cmd "--- %%i.CAB into the temp cab folder ..." %UDDILOG%
call ExecuteCmd.cmd "copy /y %_NTPostBld%\uddi\%%i.CAB %_NTPostBld%\uddi\Cabs\w1.cab.ibd"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Copy the new cab file into the \Cabs folder failed" %UDDIERRLOG%
goto :EOF
)
REM
REM Import the new cab file into the Cabs Table (-i switch)
REM
pushd %_NTPostBld%\uddi
call ExecuteCmd.cmd "msidb.exe -d .\%%i.msi -f %_NTPostBld%\uddi -i Cabs.idt"
popd
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Import the new cab file into the Cabs Table failed" %UDDIERRLOG%
goto :EOF
)
REM
REM Delete the cab files and folder
REM
call logmsg.cmd "--- Delete the CAB temp folder ..." %UDDILOG%
call ExecuteCmd.cmd "del %_NTPostBld%\uddi\cabs.idt"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Deleting uddi\cabs.idt failed" %UDDIERRLOG%
goto :EOF
)
call ExecuteCmd.cmd "rd /s /q %_NTPostBld%\uddi\Cabs"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Delete the CAB temp folder failed" %UDDIERRLOG%
goto :EOF
)
REM
REM Now we need to extract the new cab file into a temp folder
REM so that we can run a utility that will update the file
REM sizes and version in the MSI "Files" table.
REM After extraction, the files are named the "decorated" names as in
REM the first column of the file table
REM
call logmsg.cmd "--- Extract %%i.CAB into \cabtemp, using File.File names ..." %UDDILOG%
if exist %_NTPostBld%\uddi\cabtemp (
call ExecuteCmd.cmd "rd /q /s %_NTPostBld%\uddi\cabtemp"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error deleting \cabtemp" %UDDIERRLOG%
goto :EOF
)
)
call ExecuteCmd.cmd "md %_NTPostBld%\uddi\cabtemp"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error creating \cabtemp folder" %UDDIERRLOG%
goto :EOF
)
call ExecuteCmd.cmd "extract.exe /Y /E /L %_NTPostBld%\uddi\cabtemp %_NTPostBld%\uddi\%%i.cab"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error extracting cab files" %UDDIERRLOG%
goto :EOF
)
REM
REM UDDIMSIFILER will update the version, size, language and hash information for all the files
REM
call logmsg.cmd "--- Update the version, size, language and hash information in %%i.MSI ..." %UDDILOG%
call ExecuteCmd.cmd "%_NTPostBld%\uddi\uddimsifiler.exe -d %_NTPostBld%\uddi\%%i.msi -s %_NTPostBld%\uddi\cabtemp -L %UDDIERRLOG% -v %_NTPostBld%\uddiocm.dll"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error running uddimsifiler.exe" %UDDIERRLOG%
goto :EOF
)
REM
REM Copy uddi.msi to "retail"
REM
call logmsg.cmd "--- Copy %%i.msi to the root of the binaries folder ..." %UDDILOG%
call ExecuteCmd.cmd "copy %_NTPostBld%\uddi\%%i.msi %_NTPostBld%"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error copying %%i.msi to the root of the binaries folder" %UDDIERRLOG%
goto :EOF
)
REM
REM Cleanup
REM
call logmsg.cmd "--- Cleanup %%i..." %UDDILOG%
call ExecuteCmd.cmd "del /f %_NTPostBld%\uddi\%%i.cab"
call ExecuteCmd.cmd "rd /q /s %_NTPostBld%\uddi\cabtemp"
call ExecuteCmd.cmd "del /f %_NTPostBld%\uddi\%%i.ddf"
)
REM
REM Create uddi.cat
REM
call logmsg.cmd "--- Beginning creation of uddi.cat ..." %UDDILOG%
call logmsg.cmd "--- Create \cabtemp folder ..." %UDDILOG%
if exist %_NTPostBld%\uddi\cabtemp (
call ExecuteCmd.cmd "rd /q /s %_NTPostBld%\uddi\cabtemp"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error deleting \cabtemp" %UDDIERRLOG%
goto :EOF
)
)
call ExecuteCmd.cmd "md %_NTPostBld%\uddi\cabtemp"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error creating \cabtemp folder" %UDDIERRLOG%
goto :EOF
)
REM
REM loop through all the installers, expanding msi files and cabs
REM
for %%i in ( uddiadm uddidb uddiweb ) do (
call logmsg.cmd "--- Calling explodemsi on %%i.msi ..." %UDDILOG%
call ExecuteCmd.cmd "explodemsi.exe -a %_NTPostBld%\uddi\%%i.msi %_NTPostBld%\uddi\cabtemp"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error exploding msi files" %UDDIERRLOG%
goto :EOF
)
)
call logmsg.cmd "--- Expanding all cab files ..." %UDDILOG%
call ExecuteCmd.cmd "expand.exe -r -F:* %_NTPostBld%\uddi\cabtemp\cabs\*.cab %_NTPostBld%\uddi\cabtemp"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error expanding cab files" %UDDIERRLOG%
goto :EOF
)
call ExecuteCmd.cmd "del %_NTPostBld%\uddi\cabtemp\*."
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error removing inappropriate files for signing from msi" %UDDIERRLOG%
goto :EOF
)
call ExecuteCmd.cmd "rd /s /q %_NTPostBld%\uddi\cabtemp\cabs"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error removing cabtemp\cabs" %UDDIERRLOG%
goto :EOF
)
call logmsg.cmd "--- Create uddi.cat ..." %UDDILOG%
pushd %_NTPostBld%\uddi\cabtemp
call ExecuteCmd.cmd "%SDXROOT%\tools\deltacat.cmd %_NTPostBld%\uddi\cabtemp"
popd
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error creating delta.cat in \cabtemp" %UDDIERRLOG%
goto :EOF
)
call ExecuteCmd.cmd "copy %_NTPostBld%\uddi\cabtemp\delta.cat %_NTPostBld%\uddi.cat"
if errorlevel 1 (
call errmsg.cmd "*** Failure - see error log ***" %UDDILOG%
call errmsg.cmd "Error copying delta.cat to the root of the binaries folder as uddi.cat" %UDDIERRLOG%
goto :EOF
)
REM
REM Cleanup
REM
call logmsg.cmd "--- Cleanup ..." %UDDILOG%
call ExecuteCmd.cmd "rd /q /s %_NTPostBld%\uddi\cabtemp"
:EOF