WindowsXP-SP1/inetsrv/iis/bldzip.pl

142 lines
3.4 KiB
Perl

select(STDOUT); $| =1; # force flush on STDOUT
# default options
$SrcDir = Srv;
$ZipDir = "$SrcDir.Zip";
$ZipPref = IIS;
$Debug = 0;
$WinZip = 0;
$DoOnly = "";
# STUPID must pipe some garbage in to pkzip when running from Remote
$pkzip = "echo y | pkzip";
$zip2exe = "zip2exe";
$PkZipOptions =
$WinZipOptions = "-Y -3 -c setup.exe -m \"Microsoft Internet Information Service\" -31 -LE";
for ( $i = 0; $i <= $#ARGV ; $i++ ) {
# force the argument to lower case
@ARGV[$i] = "\L@ARGV[$i]";
print "Argument $i=\L@ARGV[$i]\n";
if ( @ARGV[$i] EQ "-src" ) {
$SrcDir = @ARGV[++$i];
}elsif ( @ARGV[$i] EQ "-dst" ) {
$ZipDir = @ARGV[++$i];
}elsif ( @ARGV[$i] EQ "-debug" ) {
$Debug = 1;
}elsif ( @ARGV[$i] EQ "-seeonly" ) {
$zip2exeonly = 1;
}elsif ( @ARGV[$i] EQ "-only" ) {
$DoOnly = @ARGV[++$i];
}elsif ( @ARGV[$i] EQ "-winzip" ) {
$WinZip = 1;
}else {
print "Unsupported argument @ARGV[$i]\n";
print "Usage: [-src <srv>] [-dst<.>] [-debug] [-only i386|i386n|PPC|MIPS|ALPHA]\n ";
print " -src <source directory>\n";
print " -dst <directory were zips are put>\n";
print " -only i386|i386n|PPC|MIPS|ALPHA] only do zip for\n";
print " -debug echo's statements does not execute them\n";
die(1);
}
}
if ( ! -e $ZipDir ) {
mkdir ($ZipDir, "RWX" );
}
if ( $DoOnly EQ "" ) {
@CpuDirs = ("i386", "i386N", "PPC", "ALPHA", "MIPS");
}else{
@CpuDirs = ($DoOnly);
}
print "CpuDirs == @CpuDirs \n";
@ZipDirsBase=("Clients", "Help", "Docs");
print "ZipDirsBase== @ZipDirsBase\n";
# Files not found elsewhere in the system
#
$RootFiles = "$SrcDir\\license.txt $SrcDir\\setup.exe $SrcDir\\inetsrv $SrcDir\\readme.txt $SrcDir\\readme.wri ";
$MessageFile = "message.txt";
foreach $Cpu ( @CpuDirs ) {
print "Cpu == $Cpu\n";
$ZipBase = "$ZipPref$Cpu";
$ZipPath = $ZipDir."\\" ;
$ZipFile = "$ZipBase.zip";
$ZipExe = "$ZipBase.exe";
$ZipFilePath = "$ZipPath$ZipBase.zip";
$ZipExePath = "$ZipPath$ZipBase.exe";
print "ZipFile == $ZipFile\n";
# Asymble the list of Dirs to Zip
# We make two versions of I386 one with clients without
@ZipDirs = @ZipDirsBase;
if ( "\L$Cpu" EQ "i386n" ) {
$Cpu = "i386";
shift(@ZipDirs); # remove Clients Dir
}
unshift(@ZipDirs, $Cpu);
print "ZipFilePath == $ZipFilePath\n";
print "ZipExePath == $ZipExePath\n";
print "ZipDirs == @ZipDirs\n";
if ( -e $ZipExePath ) {psystem("del $ZipExePath");}
if ( !$zip2exeonly ) {
if ( -e $ZipFilePath ) {psystem("del $ZipFilePath");}
foreach $Dir ( @ZipDirs ) {
psystem("$pkzip $ZipFilePath $SrcDir\\$Dir\\*.* -P -r -ex");
}
# now tack on additional files that are not found in the recursed tree
psystem("$pkzip $ZipFilePath $RootFiles -P -ex");
# add the comment that is printed out for this archive
if ( -e $MessageFile ) {
psystem("pkzip $ZipFilePath -z < $MessageFile ");
} else {
print "Message File \"$MessageFile\" does not exist. Skipping..\n";
}
}
if (-e $ZipFilePath ) {
# must chdir to Dst Dir because SEE only works locally
if ( $WinZip == 0 ) {
psystem("pushd $ZipDir && $zip2exe $ZipFile\n");
} else {
psystem("pushd $ZipDir && winzipse $ZipFile $WinZipOptions");
}
} else {
print "WARNING: $ZipFilePath does not exists... skipping zip to exe\n\n";
}
}
sub psystem{
print "Dbg=$Debug->@_\n";
if ($Debug == 0) {system(@_);}
}