98 lines
2.5 KiB
Batchfile
98 lines
2.5 KiB
Batchfile
|
@echo off
|
||
|
REM ------------------------------------------------------------------
|
||
|
REM
|
||
|
REM sample.cmd
|
||
|
REM Sample script for updating a hotfix/sp INF using infgen.dll
|
||
|
REM
|
||
|
REM Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
REM
|
||
|
REM ------------------------------------------------------------------
|
||
|
perl -x "%~f0" %*
|
||
|
goto :EOF
|
||
|
#!perl
|
||
|
use strict;
|
||
|
use lib $ENV{RAZZLETOOLPATH} . "\\PostBuildScripts";
|
||
|
use lib $ENV{RAZZLETOOLPATH};
|
||
|
use PbuildEnv;
|
||
|
use ParseArgs;
|
||
|
use Logmsg;
|
||
|
use Win32::OLE qw(in);
|
||
|
|
||
|
sub die_ole_errmsg($);
|
||
|
|
||
|
sub Usage { print<<USAGE; exit(1) }
|
||
|
sample.cmd -inf:<template_inf_file> -out:<output_inf_file> [<files> ...]
|
||
|
|
||
|
template_inf_file - starting INF file to add entries to
|
||
|
|
||
|
output_inf_file - file to save with changes
|
||
|
|
||
|
files - one or more files to add to the INF
|
||
|
|
||
|
USAGE
|
||
|
|
||
|
my ($inf_start, $inf_end, @files);
|
||
|
parseargs('?' => \&Usage,
|
||
|
'inf:' => \$inf_start,
|
||
|
'out:' => \$inf_end,
|
||
|
\@files);
|
||
|
if ( !$inf_start || !$inf_end || !@files )
|
||
|
{
|
||
|
errmsg( "Invalid parameters" );
|
||
|
Usage();
|
||
|
}
|
||
|
|
||
|
my $inf_generator = Win32::OLE->new('InfGenerator');
|
||
|
die_ole_errmsg "Could not instatiate InfGenerator" if ( !defined $inf_generator );
|
||
|
|
||
|
logmsg( "Setting up DB connection info ..." );
|
||
|
# DB connection info
|
||
|
$inf_generator->SetDB( "ntbldwebdev", "SPBuilds", "buildlab", "perky" );
|
||
|
if ( Win32::OLE->LastError() )
|
||
|
{
|
||
|
my $errstr = $inf_generator->{InfGenError};
|
||
|
die_ole_errmsg "Error setting DB info (". ($errstr?$errstr:""). ")";
|
||
|
}
|
||
|
|
||
|
logmsg( "initializing generator ..." );
|
||
|
# Initialization
|
||
|
$inf_generator->InitGen( $inf_start, $inf_end );
|
||
|
if ( Win32::OLE->LastError() )
|
||
|
{
|
||
|
my $errstr = $inf_generator->{InfGenError};
|
||
|
die_ole_errmsg "Error starting up InfGenerator (". ($errstr?$errstr:""). ")";
|
||
|
}
|
||
|
|
||
|
logmsg( "inserting files ..." );
|
||
|
# Insert files
|
||
|
foreach my $new_file ( @files )
|
||
|
{
|
||
|
logmsg( "inserting $new_file" );
|
||
|
$inf_generator->InsertFile( $new_file );
|
||
|
if ( Win32::OLE->LastError() )
|
||
|
{
|
||
|
my $errstr = $inf_generator->{InfGenError};
|
||
|
errmsg( "Failed adding file '$new_file': ". ($errstr?$errstr:"<unknown error>") );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
logmsg( "Creating/storing INF ..." );
|
||
|
# Trim and save new INF file
|
||
|
$inf_generator->CloseGen();
|
||
|
if ( Win32::OLE->LastError() )
|
||
|
{
|
||
|
my $errstr = $inf_generator->{InfGenError};
|
||
|
errmsg( "Failed trimming/saving file (". ($errstr?$errstr:"unknown error"). ")" )
|
||
|
}
|
||
|
|
||
|
logmsg( "Successful" );
|
||
|
|
||
|
exit 0;
|
||
|
|
||
|
sub die_ole_errmsg($)
|
||
|
{
|
||
|
my $text = shift;
|
||
|
errmsg( "$text (". Win32::OLE->LastError(). ")" );
|
||
|
exit 1;
|
||
|
}
|