150 lines
6.3 KiB
Perl
150 lines
6.3 KiB
Perl
|
|
||
|
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;
|
||
|
|