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;