Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

149 lines
6.3 KiB

if (!$__SPGBUILDPM ) { use spg::build; }
sub BuildMSI($)
{
# ** msm/msi files to be built by devenv
# localConfigFileDir is prepended w/ $SAPIROOT\msi (or msi dir, whatever that is)
# localConfigFileDir => cfgFName => localMSIFile/localMSMFile => remoteTargetFile
local (@lMSIs) =
(
# RELEASE:
"release\\1033\\Sp5 => Sp5 => Output\\Sp5.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1033\\Sp5.msm",
"release\\1033\\Sp5Intl => Sp5Intl => Output\\Sp5Intl.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1033\\Sp5Intl.msm",
"release\\1033\\Sp5SR => Sp5SR => Output\\Sp5SR.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1033\\Sp5SR.msm",
"release\\1033\\Sp5Itn => Sp5Itn => Output\\Sp5Itn.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1033\\Sp5Itn.msm",
"release\\1041\\Sp5Itn => Sp5Itn => Output\\Sp5Itn.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1041\\Sp5Itn.msm",
"release\\1033\\Sp5CCInt => Sp5CCInt => Output\\Sp5CCInt.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1033\\Sp5CCInt.msm",
"release\\1041\\Sp5CCInt => Sp5CCInt => Output\\Sp5CCInt.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1041\\Sp5CCInt.msm",
"release\\2052\\Sp5CCInt => Sp5CCInt => Output\\Sp5CCInt.msm => ".$sDropDir."\\release\\msm\\".PROC."\\2052\\Sp5CCInt.msm",
"release\\1033\\Sp5DCInt => Sp5DCInt => Output\\Sp5DCInt.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1033\\Sp5DCInt.msm",
"release\\1041\\Sp5DCInt => Sp5DCInt => Output\\Sp5DCInt.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1041\\Sp5DCInt.msm",
"release\\2052\\Sp5DCInt => Sp5DCInt => Output\\Sp5DCInt.msm => ".$sDropDir."\\release\\msm\\".PROC."\\2052\\Sp5DCInt.msm",
"release\\1033\\Sp5TTInt => Sp5TTInt => Output\\Sp5TTInt.msm => ".$sDropDir."\\release\\msm\\".PROC."\\1033\\Sp5TTInt.msm",
"release\\SDK => sp5SDK => Output\\disk_1\\SP5SDK.msi => ".$sDropDir."\\release\\msi\\".PROC."\\SP5SDK.msi",
# DEBUG:
"debug\\1033\\Sp5 => Sp5 => Output\\Sp5.msm => ".$sDropDir."\\debug\\msm\\".PROC."\\1033\\Sp5.msm",
"debug\\1033\\Sp5Intl => Sp5Intl => Output\\Sp5Intl.msm => ".$sDropDir."\\debug\\msm\\".PROC."\\1033\\Sp5Intl.msm",
"debug\\1033\\Sp5SR => Sp5SR => Output\\Sp5SR.msm => ".$sDropDir."\\debug\\msm\\".PROC."\\1033\\Sp5SR.msm",
"debug\\1033\\Sp5Itn => Sp5Itn => Output\\Sp5Itn.msm =>".$sDropDir."\\debug\\msm\\".PROC."\\1033\\Sp5Itn.msm",
"debug\\1041\\Sp5Itn => Sp5Itn => Output\\Sp5Itn.msm =>".$sDropDir."\\debug\\msm\\".PROC."\\1041\\Sp5Itn.msm",
"debug\\1033\\Sp5TTInt => Sp5TTInt => Output\\Sp5TTInt.msm => ".$sDropDir."\\debug\\msm\\".PROC."\\1033\\Sp5TTInt.msm",
"debug\\SDK => sp5SDK => Output\\disk_1\\SP5SDK.msi => ".$sDropDir."\\debug\\msi\\".PROC."\\SP5SDK.msi",
);
# ** files not requiring separate build command
# files are copied only if dir exists
# localFile => remoteTargetFile
local (@lMiscMSIFiles) =
(
# RELEASE:
$sMSIDir."\\release\\SDK\\Output\\DISK_1\\setup.exe => ".$sDropDir."\\release\\msi\\".PROC."\\setup.exe",
$sMSIDir."\\release\\SDK\\Output\\DISK_1\\setup.ini => ".$sDropDir."\\release\\msi\\".PROC."\\setup.ini",
$sMSIDir."\\release\\SDK\\Output\\DISK_1\\instmsia.exe => ".$sDropDir."\\release\\msi\\".PROC."\\instmsia.exe",
$sMSIDir."\\release\\SDK\\Output\\DISK_1\\instmsiw.exe => ".$sDropDir."\\release\\msi\\".PROC."\\instmsiw.exe",
$SAPIROOT."\\build\\release\\readme.txt => ".$sDropDir."\\release\\msm\\".PROC."\\readme.txt",
# DEBUG:
$sMSIDir."\\debug\\SDK\\Output\\DISK_1\\setup.exe => ".$sDropDir."\\debug\\msi\\".PROC."\\setup.exe",
$sMSIDir."\\debug\\SDK\\Output\\DISK_1\\setup.ini => ".$sDropDir."\\debug\\msi\\".PROC."\\setup.ini",
$sMSIDir."\\debug\\SDK\\Output\\DISK_1\\instmsia.exe => ".$sDropDir."\\debug\\msi\\".PROC."\\instmsia.exe",
$sMSIDir."\\debug\\SDK\\Output\\DISK_1\\instmsiw.exe => ".$sDropDir."\\debug\\msi\\".PROC."\\instmsiw.exe",
$SAPIROOT."\\build\\debug\\readme.txt => ".$sDropDir."\\debug\\msm\\".PROC."\\readme.txt",
);
if ($sShortBuildName eq "BuildMSIExtWrap")
{
$sBuildLog = $SAPIROOT."\\logs\\buildmsilog.html";
$fhBuildLog = OpenFile($sBuildLog, "write");
}
local($sTargetDir) = $_[0];
my($rc) = 1;
PushD($SAPIROOT);
PrintL("\nBuilding SAPI 5 MSI packages\n\n", PL_SUBHEADER);
Delnode($sTargetDir);
EchoedMkdir($sTargetDir);
PushD($sTargetDir);
foreach $elem (@lMSIs)
{
my($sConfigFileDir, $sConfigFile, $sMSIFile, $sDestFile) = split(/\s*=>\s*/, $elem, 4);
my($sMSIName) = "";
++$nTotalMSIs;
EchoedMkdir("\"".$sConfigFileDir."\"");
PushD($sConfigFileDir);
EchoedCopy($SAPIROOT."\\build\\".$sConfigFileDir."\\".$sConfigFile.".wip", cwd()."\\".$sConfigFile.".wip");
PrintL("\n - Building '".$sConfigFile."'\n", PL_BLUE);
EchoedMkdir(GetPath($sDestFile));
if (Execute($cmdDevEnv." /make \"".$sConfigFile.".wip\" /out \"".$sConfigFile.".log\""))
{
PrintL("'".$sConfigFile."' Build Successful\n", PL_MSG | PL_GREEN);
if (-e $sConfigFile.".log")
{
PrintL(GetAllTextFromFile($sConfigFile.".log"));
}
if (!$bNoCopy && ($sMSIFile ne "") && ($sDestFile ne ""))
{
EchoedCopy($sMSIFile, $sDestFile);
}
}
else
{
PrintL("'".$sConfigFile."' Build FAILED\n", PL_BIGERROR);
if (-e $sConfigFile.".log")
{
my($str) = GetAllTextFromFile($sConfigFile.".log");
PrintMsgBlock($str);
PrintL($str);
}
++$nFailedMSIs;
$rc = 0;
}
PopD(); #$sConfigFileDir
}
if (!$bNoCopy)
{
foreach $file (@lMiscMSIFiles)
{
my ($sSrc, $sTgt) = split(/\s*=>\s*/, $file, 2);
if (IsDirectory(GetPath($sTgt)))
{
EchoedCopy($sSrc, $sTgt);
}
}
}
PopD(); #$sTargetDir
PopD(); #$SAPIROOT
if ($sShortBuildName eq "BuildMSIExtWrap")
{
CloseFile($fhBuildLog);
Execute($sBuildLog);
}
return($rc);
}
$__BUILDMSIPM = 1;
1;