You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2013/11/27 18:25:54 UTC

svn commit: r1546124 [13/33] - in /openoffice/branches/alg/aw080: ./ main/ main/accessibility/inc/accessibility/extended/ main/accessibility/inc/accessibility/helper/ main/accessibility/inc/accessibility/standard/ main/accessibility/source/extended/ ma...

Modified: openoffice/branches/alg/aw080/main/solenv/bin/make_installer.pl
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/solenv/bin/make_installer.pl?rev=1546124&r1=1546123&r2=1546124&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/solenv/bin/make_installer.pl (original)
+++ openoffice/branches/alg/aw080/main/solenv/bin/make_installer.pl Wed Nov 27 17:25:40 2013
@@ -74,9 +74,7 @@ use installer::windows::idtglobal;
 use installer::windows::inifile;
 use installer::windows::java;
 use installer::windows::media;
-use installer::windows::mergemodule;
 use installer::windows::msiglobal;
-use installer::windows::msp;
 use installer::windows::patch;
 use installer::windows::property;
 use installer::windows::removefile;
@@ -84,12 +82,63 @@ use installer::windows::registry;
 use installer::windows::selfreg;
 use installer::windows::shortcut;
 use installer::windows::strip;
-use installer::windows::update;
 use installer::windows::upgrade;
 use installer::worker;
 use installer::xpdinstaller;
 use installer::ziplist;
 
+use strict;
+
+sub GetSetupScriptLines ($$$)
+{
+    my ($allsettingsarrayref, $allvariableshashref, $includepatharrayref) = @_;
+    
+    if ($installer::globals::setupscript_defined_in_productlist)
+    {
+        installer::setupscript::set_setupscript_name($allsettingsarrayref, $includepatharrayref);
+    }
+
+    $installer::logger::Info->print( "... analyzing script: $installer::globals::setupscriptname ... \n" );
+    installer::logger::globallog("setup script file: $installer::globals::setupscriptname");
+    $installer::logger::Info->print( "... analyzing script: $installer::globals::setupscriptname ... \n" );
+
+    # Reading the setup script file
+    my $setupscriptref = installer::files::read_file($installer::globals::setupscriptname);
+
+    # Resolving variables defined in the zip list file into setup
+    # script.  All the variables are defined in $allvariablesarrayref
+    installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref);
+
+    # Resolving %variables defined in the installation object
+    my $allscriptvariablesref = installer::setupscript::get_all_scriptvariables_from_installation_object(
+        $setupscriptref,
+        $installer::globals::setupscriptname);
+    installer::setupscript::add_lowercase_productname_setupscriptvariable($allscriptvariablesref);
+    installer::setupscript::resolve_lowercase_productname_setupscriptvariable($allscriptvariablesref);
+
+    $setupscriptref = installer::setupscript::replace_all_setupscriptvariables_in_script(
+        $setupscriptref,
+        $allscriptvariablesref);
+
+    # Adding all variables defined in the installation object into the
+    # hash of all variables.  This is needed if variables are defined
+    # in the installation object, but not in the zip list file.  If
+    # there is a definition in the zip list file and in the
+    # installation object, the installation object is more important
+    installer::setupscript::add_installationobject_to_variables($allvariableshashref, $allscriptvariablesref);
+
+    # Adding also all variables, that must be included into the $allvariableshashref.
+    installer::setupscript::add_forced_properties($allvariableshashref);
+
+    # Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME)
+    installer::setupscript::replace_preset_properties($allvariableshashref);
+
+    # We did this already.  Can this or the other one be removed.
+    installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref);
+
+    return $setupscriptref;
+}
+
 #################################################
 # Main program
 #################################################
@@ -127,8 +176,6 @@ installer::parameter::saveparameter();
 installer::parameter::getparameter();
 
 # debugging can start after function "getparameter"
-if ( $installer::globals::debug ) { installer::logger::debuginfo("\nPart 1: The platform independent part\n"); }
-if ( $installer::globals::debug ) { installer::logger::debuginfo("\nPart 1a: The language independent part\n"); }
 
 installer::parameter::control_fundamental_parameter();
 installer::parameter::setglobalvariables();
@@ -180,22 +227,16 @@ my $ziplistref = installer::files::read_
 $installer::logger::Info->print( "... analyzing $installer::globals::ziplistname ... \n" );
 
 my ($productblockref, $parent) = installer::ziplist::getproductblock($ziplistref, $installer::globals::product, 1);		# product block from zip.lst
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "productblock.log" ,$productblockref); }
 
 my ($settingsblockref, undef) = installer::ziplist::getproductblock($productblockref, "Settings", 0);		# settings block from zip.lst
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "settingsblock1.log" ,$settingsblockref); }
 
 $settingsblockref = installer::ziplist::analyze_settings_block($settingsblockref);				# select data from settings block in zip.lst
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "settingsblock2.log" ,$settingsblockref); }
 
 my $allsettingsarrayref = installer::ziplist::get_settings_from_ziplist($settingsblockref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allsettings1.log" ,$allsettingsarrayref); }
 
 my $allvariablesarrayref = installer::ziplist::get_variables_from_ziplist($settingsblockref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allvariables1.log" ,$allvariablesarrayref); }
 
 my ($globalproductblockref, undef) = installer::ziplist::getproductblock($ziplistref, $installer::globals::globalblock, 0);		# global product block from zip.lst
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "globalproductblock.log" ,$globalproductblockref); }
 
 while (defined $parent)
 {
@@ -223,41 +264,30 @@ while (defined $parent)
 if ( $#{$globalproductblockref} > -1 )
 {
     my ($globalsettingsblockref, undef) = installer::ziplist::getproductblock($globalproductblockref, "Settings", 0);		# settings block from zip.lst
-    if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "globalsettingsblock1.log" ,$globalsettingsblockref); }
 
     $globalsettingsblockref = installer::ziplist::analyze_settings_block($globalsettingsblockref);				# select data from settings block in zip.lst
-    if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "globalsettingsblock2.log" ,$globalsettingsblockref); }
     
     my $allglobalsettingsarrayref = installer::ziplist::get_settings_from_ziplist($globalsettingsblockref);
-    if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allglobalsettings1.log" ,$allglobalsettingsarrayref); }
 
     my $allglobalvariablesarrayref = installer::ziplist::get_variables_from_ziplist($globalsettingsblockref);
-    if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allglobalvariables1.log" ,$allglobalvariablesarrayref); }
 
     if ( $#{$allglobalsettingsarrayref} > -1 ) { $allsettingsarrayref = installer::converter::combine_arrays_from_references_first_win($allsettingsarrayref, $allglobalsettingsarrayref); }
     if ( $#{$allglobalvariablesarrayref} > -1 ) { $allvariablesarrayref = installer::converter::combine_arrays_from_references_first_win($allvariablesarrayref, $allglobalvariablesarrayref); }
 }
 
 $allsettingsarrayref = installer::ziplist::remove_multiples_from_ziplist($allsettingsarrayref); # the settings from the zip.lst
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allsettings2.log" ,$allsettingsarrayref); }
 
 $allvariablesarrayref = installer::ziplist::remove_multiples_from_ziplist($allvariablesarrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allvariables2.log" ,$allvariablesarrayref); }
 
 installer::ziplist::replace_variables_in_ziplist_variables($allvariablesarrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allvariables2a.log" ,$allvariablesarrayref); }
 
 my $allvariableshashref = installer::converter::convert_array_to_hash($allvariablesarrayref);	# the variables from the zip.lst
-if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables3.log", $allvariableshashref); }
 
 installer::ziplist::set_default_productversion_if_required($allvariableshashref);
-if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables3a.log", $allvariableshashref); }
 
 installer::ziplist::add_variables_to_allvariableshashref($allvariableshashref);
-if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables3b.log", $allvariableshashref); }
 
 installer::ziplist::overwrite_ooovendor( $allvariableshashref );
-if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables3c.log", $allvariableshashref); }
 
 ########################################################
 # Check if this is simple packaging mechanism
@@ -304,22 +334,16 @@ if ( $$includepathref eq "" )
 }
 
 my $includepatharrayref = installer::converter::convert_stringlist_into_array($includepathref, ",");
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allpatharray1.log" ,$includepatharrayref); }
 
 installer::ziplist::replace_all_variables_in_pathes($includepatharrayref, $pathvariableshashref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allpatharray2.log" ,$includepatharrayref); }
 
 installer::ziplist::replace_minor_in_pathes($includepatharrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allpatharray3.log" ,$includepatharrayref); }
 
 installer::ziplist::replace_packagetype_in_pathes($includepatharrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allpatharray3a.log" ,$includepatharrayref); }
 
 installer::ziplist::resolve_relative_pathes($includepatharrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allpatharray3b.log" ,$includepatharrayref); }
 
 installer::ziplist::remove_ending_separator($includepatharrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allpatharray3c.log" ,$includepatharrayref); }
 
 ##############################################
 # Collecting all files from all include
@@ -362,52 +386,7 @@ installer::control::check_java_for_xpd($
 # Analyzing the setup script
 #####################################
 
-if ($installer::globals::setupscript_defined_in_productlist) { installer::setupscript::set_setupscript_name($allsettingsarrayref, $includepatharrayref); }
-
-installer::logger::globallog("setup script file: $installer::globals::setupscriptname");
-
-$installer::logger::Info->print( "... analyzing script: $installer::globals::setupscriptname ... \n" );
-
-my $setupscriptref = installer::files::read_file($installer::globals::setupscriptname); # Reading the setup script file
-
-# Resolving variables defined in the zip list file into setup script
-# All the variables are defined in $allvariablesarrayref
-
-installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscript1.log" ,$setupscriptref); }
-
-# Resolving %variables defined in the installation object
-
-my $allscriptvariablesref = installer::setupscript::get_all_scriptvariables_from_installation_object($setupscriptref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscriptvariables1.log" ,$allscriptvariablesref); }
-
-installer::setupscript::add_lowercase_productname_setupscriptvariable($allscriptvariablesref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscriptvariables2.log" ,$allscriptvariablesref); }
-
-installer::setupscript::resolve_lowercase_productname_setupscriptvariable($allscriptvariablesref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscriptvariables3.log" ,$allscriptvariablesref); }
-
-$setupscriptref = installer::setupscript::replace_all_setupscriptvariables_in_script($setupscriptref, $allscriptvariablesref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscript2.log" ,$setupscriptref); }
-
-# Adding all variables defined in the installation object into the hash of all variables.
-# This is needed if variables are defined in the installation object, but not in the zip list file.
-# If there is a definition in the zip list file and in the installation object, the installation object is more important
-
-installer::setupscript::add_installationobject_to_variables($allvariableshashref, $allscriptvariablesref);
-if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables4.log", $allvariableshashref); }
-
-# Adding also all variables, that must be included into the $allvariableshashref.
-installer::setupscript::add_forced_properties($allvariableshashref);
-if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables5.log", $allvariableshashref); }
-
-# Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME)
-installer::setupscript::replace_preset_properties($allvariableshashref);
-if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables6.log", $allvariableshashref); }
-
-installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref);
-if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscript3.log" ,$setupscriptref); }
-
+my $setupscriptref = GetSetupScriptLines($allsettingsarrayref, $allvariableshashref, $includepatharrayref);
 
 installer::logger::log_hashref($allvariableshashref);
 
@@ -416,28 +395,21 @@ $installer::logger::Info->print( "... an
 # Collect all directories in the script to get the destination dirs
 
 my $dirsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Directory");
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories1.log", $dirsinproductarrayref); }
 
 if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_hostname($dirsinproductarrayref); }
 if ( $installer::globals::patch ) { installer::scriptitems::use_patch_hostname($dirsinproductarrayref); }
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories1a.log", $dirsinproductarrayref); }
 
 if ( $allvariableshashref->{'SHIFT_BASIS_INTO_BRAND_LAYER'} ) { $dirsinproductarrayref = installer::scriptitems::shift_basis_directory_parents($dirsinproductarrayref); }
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories1b.log", $dirsinproductarrayref); }
 if ( $allvariableshashref->{'OFFICEDIRECTORYNAME'} ) { installer::scriptitems::set_officedirectory_name($dirsinproductarrayref, $allvariableshashref->{'OFFICEDIRECTORYNAME'}); }
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories1b.log", $dirsinproductarrayref); }
 
 
 installer::scriptitems::resolve_all_directory_names($dirsinproductarrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories2.log", $dirsinproductarrayref); }
 
 $installer::logger::Info->print( "... analyzing files ... \n" );
 
 my $filesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "File");
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles1.log", $filesinproductarrayref); }
 
 $filesinproductarrayref = installer::scriptitems::remove_delete_only_files_from_productlists($filesinproductarrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2.log", $filesinproductarrayref); }
 
 if (( ! $installer::globals::iswindowsbuild ) && 
 	( ! $installer::globals::islinuxrpmbuild ) && 
@@ -449,118 +421,90 @@ if (( ! $installer::globals::iswindowsbu
 	{ installer::control::check_oxtfiles($filesinproductarrayref); }
 
 if ($installer::globals::product =~ /suite/i ) { $filesinproductarrayref = installer::scriptitems::remove_notinsuite_files_from_productlists($filesinproductarrayref); }
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2aa.log", $filesinproductarrayref); }
 
 if (! $installer::globals::languagepack)
 {
 	$filesinproductarrayref = installer::scriptitems::remove_Languagepacklibraries_from_Installset($filesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2b.log", $filesinproductarrayref); }
 }
 
 if (! $installer::globals::patch)
 {
 	$filesinproductarrayref = installer::scriptitems::remove_patchonlyfiles_from_Installset($filesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2c.log", $filesinproductarrayref); }
 }
 
 if (! $installer::globals::tab)
 {
 	$filesinproductarrayref = installer::scriptitems::remove_tabonlyfiles_from_Installset($filesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2c.log", $filesinproductarrayref); }
 }
 
 if (( $installer::globals::packageformat ne "installed" ) && ( $installer::globals::packageformat ne "archive" ))
 {
 	$filesinproductarrayref = installer::scriptitems::remove_installedproductonlyfiles_from_Installset($filesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2cc.log", $filesinproductarrayref); }
 }
 
 $installer::logger::Info->print( "... analyzing scpactions ... \n" );
 
 my $scpactionsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ScpAction");
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions1.log", $scpactionsinproductarrayref); }
 
 if (( ! $allvariableshashref->{'XPDINSTALLER'} ) || ( ! $installer::globals::isxpdplatform ))
 {
 	$scpactionsinproductarrayref = installer::scriptitems::remove_Xpdonly_Items($scpactionsinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions1a.log", $scpactionsinproductarrayref); }
 }
 
 if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_copy_scpaction($scpactionsinproductarrayref); }
 if ( $installer::globals::patch ) { installer::scriptitems::use_patch_copy_scpaction($scpactionsinproductarrayref); }
 if (($installer::globals::devsnapshotbuild)) { installer::scriptitems::use_dev_copy_scpaction($scpactionsinproductarrayref); }
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions1b.log", $scpactionsinproductarrayref); }
 
 # $scpactionsinproductarrayref = installer::scriptitems::remove_scpactions_without_name($scpactionsinproductarrayref);
-# if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions2.log", $scpactionsinproductarrayref); }
 
 installer::scriptitems::change_keys_of_scpactions($scpactionsinproductarrayref);
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions2.log", $scpactionsinproductarrayref); }
 
 $installer::logger::Info->print( "... analyzing shortcuts ... \n" );
 
 my $linksinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Shortcut");
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks1.log", $linksinproductarrayref); }
 
 $installer::logger::Info->print( "... analyzing unix links ... \n" );
 
 my $unixlinksinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Unixlink");
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks1.log", $unixlinksinproductarrayref); }
 
 # $unixlinksinproductarrayref = installer::scriptitems::filter_layerlinks_from_unixlinks($unixlinksinproductarrayref);
-# if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks1b.log", $unixlinksinproductarrayref); }
 
 $installer::logger::Info->print( "... analyzing profile ... \n" );
 
 my $profilesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Profile");
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profiles1.log", $profilesinproductarrayref); }
 
 $installer::logger::Info->print( "... analyzing profileitems ... \n" );
 
 my $profileitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ProfileItem");
-if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profileitems1.log", $profileitemsinproductarrayref); }
 
 my $folderinproductarrayref;
 my $folderitemsinproductarrayref;
 my $registryitemsinproductarrayref;
 my $windowscustomactionsarrayref;
-my $mergemodulesarrayref;
 
 if ( $installer::globals::iswindowsbuild )	# Windows specific items: Folder, FolderItem, RegistryItem, WindowsCustomAction
 {
 	$installer::logger::Info->print( "... analyzing folders ... \n" );
 
 	$folderinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Folder");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folder1.log", $folderinproductarrayref); }
 
 	$installer::logger::Info->print( "... analyzing folderitems ... \n" );
 
 	$folderitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "FolderItem");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folderitems1.log", $folderitemsinproductarrayref); }
 
 	installer::setupscript::add_predefined_folder($folderitemsinproductarrayref, $folderinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folder1b.log", $folderinproductarrayref); }
 
 	installer::setupscript::prepare_non_advertised_files($folderitemsinproductarrayref, $filesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2d.log", $filesinproductarrayref); }
 
 	$installer::logger::Info->print( "... analyzing registryitems ... \n" );
 
 	$registryitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "RegistryItem");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems1.log", $registryitemsinproductarrayref); }
 
 	$registryitemsinproductarrayref = installer::scriptitems::remove_uninstall_regitems_from_script($registryitemsinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems1b.log", $registryitemsinproductarrayref); }
 
 	$installer::logger::Info->print( "... analyzing Windows custom actions ... \n" );
 
 	$windowscustomactionsarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "WindowsCustomAction");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "windowscustomactions1.log", $windowscustomactionsarrayref); }
-
-	$installer::logger::Info->print( "... analyzing Windows merge modules ... \n" );
-
-	$mergemodulesarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "MergeModule");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "mergemodules1.log", $mergemodulesarrayref); }
 }
 
 my $modulesinproductarrayref;
@@ -570,38 +514,29 @@ if (!($installer::globals::is_copy_only_
 	$installer::logger::Info->print( "... analyzing modules ... \n" );
 
 	$modulesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Module");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules1.log", $modulesinproductarrayref); }
 
 	if (( ! $allvariableshashref->{'XPDINSTALLER'} ) || ( ! $installer::globals::isxpdplatform ))
 	{
 		$modulesinproductarrayref = installer::scriptitems::remove_Xpdonly_Items($modulesinproductarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules1a.log", $modulesinproductarrayref); }
 	}
 
 	installer::scriptitems::resolve_assigned_modules($modulesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules1b.log", $modulesinproductarrayref); }
 
 	$modulesinproductarrayref = installer::scriptitems::remove_template_modules($modulesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules1c.log", $modulesinproductarrayref); }
 
 	installer::scriptitems::set_children_flag($modulesinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules1d.log", $modulesinproductarrayref); }
 
 	installer::scriptitems::collect_all_languagemodules($modulesinproductarrayref);
 
 	# Assigning the modules to the items
 
 	installer::scriptitems::assigning_modules_to_items($modulesinproductarrayref, $filesinproductarrayref, "Files");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles3.log", $filesinproductarrayref); }
 
 	installer::scriptitems::assigning_modules_to_items($modulesinproductarrayref, $unixlinksinproductarrayref, "Unixlinks");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks2.log", $unixlinksinproductarrayref); }
 
 	installer::scriptitems::assigning_modules_to_items($modulesinproductarrayref, $dirsinproductarrayref, "Dirs");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories2aa.log", $dirsinproductarrayref); }
 }
 
-if ( $installer::globals::debug ) { installer::logger::debuginfo("\nEnd of part 1a: The language independent part\n"); }
 
 # saving debug info, before staring part 1b
 if ( $installer::globals::debug ) { installer::logger::savedebug($installer::globals::exitlog); }
@@ -619,13 +554,12 @@ if ( $installer::globals::debug ) { inst
 # The for iterates over all products, separated by an # in the language list
 ###############################################################################
 
-if ( $installer::globals::debug ) { installer::logger::debuginfo("\nPart 1b: The language dependent part\n"); }
 
-
-for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
+# Run the following code block exactly once.
+# This strange version of a do{}while(false) loop exists only to allow (legacy) next statements.
+for (;1;last) 
 {
-	my $languagesarrayref = installer::languages::get_all_languages_for_one_product($installer::globals::languageproducts[$n], $allvariableshashref);
-	if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "languages.log" ,$languagesarrayref); }
+	my $languagesarrayref = installer::languages::get_all_languages_for_one_product($installer::globals::languageproduct, $allvariableshashref);
 
 	$installer::globals::alllanguagesinproductarrayref = $languagesarrayref;
 	my $languagestringref = installer::languages::get_language_string($languagesarrayref);
@@ -716,31 +650,11 @@ for ( my $n = 0; $n <= $#installer::glob
 	my $uniquefilename = "";
 	my $revuniquefilename = "";
 	my $revshortfilename = "";
-	my $allupdatesequences = "";
-	my $allupdatecomponents = "";
-	my $allupdatefileorder = "";
 	my $allupdatecomponentorder = "";
 	my $shortdirname = "";
 	my $componentid = "";
 	my $componentidkeypath = "";
 	my $alloldproperties = "";
-	my $allupdatelastsequences = "";
-	my $allupdatediskids = "";
-
-	if ( $installer::globals::iswindowsbuild )
-	{
-		if ( $allvariableshashref->{'UPDATE_DATABASE'} )
-		{
-			$installer::logger::Info->print( "... analyzing update database ...\n" );
-			$refdatabase = installer::windows::update::readdatabase($allvariableshashref, $languagestringref, $includepatharrayref);
-
-			if ( $installer::globals::updatedatabase )
-			{
-				($uniquefilename, $revuniquefilename, $revshortfilename, $allupdatesequences, $allupdatecomponents, $allupdatefileorder, $allupdatecomponentorder, $shortdirname, $componentid, $componentidkeypath, $alloldproperties, $allupdatelastsequences, $allupdatediskids) = installer::windows::update::create_database_hashes($refdatabase);
-				if ( $mergemodulesarrayref > -1 ) { installer::windows::update::readmergedatabase($mergemodulesarrayref, $languagestringref, $includepatharrayref); }
-			}
-		}
-	}
 
 	##############################################
 	# Setting global code variables for Windows
@@ -758,8 +672,7 @@ for ( my $n = 0; $n <= $#installer::glob
 	# Resolving include paths (language dependent)
 	################################################
 
-	$includepatharrayref_lang = installer::ziplist::replace_languages_in_pathes($includepatharrayref, $languagesarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "allpatharray4.log" ,$includepatharrayref_lang); }
+	my $includepatharrayref_lang = installer::ziplist::replace_languages_in_pathes($includepatharrayref, $languagesarrayref);
 
 	if ( $installer::globals::refresh_includepathes ) { installer::worker::collect_all_files_from_includepathes($includepatharrayref_lang); }
 
@@ -776,14 +689,11 @@ for ( my $n = 0; $n <= $#installer::glob
 	#####################################
 
 	my $dirsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($dirsinproductarrayref, $languagesarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories3.log", $dirsinproductlanguageresolvedarrayref); }
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories2a.log", $dirsinproductarrayref); }
 
 	# A new directory array is needed ($dirsinproductlanguageresolvedarrayref instead of $dirsinproductarrayref)
 	# because $dirsinproductarrayref is needed in get_Destination_Directory_For_Item_From_Directorylist
 
 	installer::scriptitems::changing_name_of_language_dependent_keys($dirsinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories4.log", $dirsinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::checking_directories_with_corrupt_hostname($dirsinproductlanguageresolvedarrayref, $languagesarrayref);
 
@@ -796,59 +706,44 @@ for ( my $n = 0; $n <= $#installer::glob
 	$installer::logger::Info->print( "... analyzing files ...\n" );
 
 	my $filesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($filesinproductarrayref, $languagesarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles4.log", $filesinproductlanguageresolvedarrayref); }
 
 	if ( ! $installer::globals::set_office_start_language )
 	{
 		$filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_office_start_language_files($filesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles4b.log", $filesinproductlanguageresolvedarrayref); }
 	}
 	
 	installer::scriptitems::changing_name_of_language_dependent_keys($filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles5.log", $filesinproductlanguageresolvedarrayref); }
 
 	if ( $installer::globals::iswin and $^O =~ /MSWin/i ) { installer::converter::convert_slash_to_backslash($filesinproductlanguageresolvedarrayref); }
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles6.log", $filesinproductlanguageresolvedarrayref); }
 
 	$filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_non_existent_languages_in_productlists($filesinproductlanguageresolvedarrayref, $languagestringref, "Name", "file");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles7.log", $filesinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::get_Source_Directory_For_Files_From_Includepathlist($filesinproductlanguageresolvedarrayref, $includepatharrayref_lang, $dirsinproductlanguageresolvedarrayref, "Files");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles8a.log", $filesinproductlanguageresolvedarrayref); }
 
 	$filesinproductlanguageresolvedarrayref = installer::scriptitems::add_bundled_extension_blobs( $filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles8b.log", $filesinproductlanguageresolvedarrayref); }
     ($filesinproductlanguageresolvedarrayref,$dirsinproductarrayref) = installer::scriptitems::add_bundled_prereg_extensions(
         $filesinproductlanguageresolvedarrayref, $dirsinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles8c.log", $filesinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($filesinproductlanguageresolvedarrayref, $dirsinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles9.log", $filesinproductlanguageresolvedarrayref); }
 
 	$filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_Files_Without_Sourcedirectory($filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles10.log", $filesinproductlanguageresolvedarrayref); }
 
 	if ($installer::globals::languagepack)
 	{
 		$filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_Files_For_Languagepacks($filesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles10c.log", $filesinproductlanguageresolvedarrayref); }
 	}
 
 
 	if ( ! $allvariableshashref->{'NO_README_IN_ROOTDIR'} )
 	{
 		$filesinproductlanguageresolvedarrayref = installer::scriptitems::add_License_Files_into_Installdir($filesinproductlanguageresolvedarrayref, $dirsinproductlanguageresolvedarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles10b.log", $filesinproductlanguageresolvedarrayref); }
 	}
 
 	$filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_onlyasialanguage_files_from_productlists($filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles10d.log", $filesinproductlanguageresolvedarrayref); }
 
 	$filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_onlywesternlanguage_files_from_productlists($filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles10e.log", $filesinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::make_filename_language_specific($filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles10f.log", $filesinproductlanguageresolvedarrayref); }
 	
 	######################################################################################
 	# Unzipping files with flag ARCHIVE and putting all included files into the file list
@@ -859,15 +754,12 @@ for ( my $n = 0; $n <= $#installer::glob
 	my @additional_paths_from_zipfiles = ();
 
 	$filesinproductlanguageresolvedarrayref = installer::archivefiles::resolving_archive_flag($filesinproductlanguageresolvedarrayref, \@additional_paths_from_zipfiles, $languagestringref, $loggingdir);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles11.log", $filesinproductlanguageresolvedarrayref); }
-	if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "additional_paths.log" ,\@additional_paths_from_zipfiles); }
 
 	# packed files sometimes contain a "$" in their name: HighlightText$1.class. For epm the "$" has to be quoted by "$$" 
 
 	if (!( $installer::globals::iswindowsbuild || $installer::globals::simple ) )
 	{
 		installer::scriptitems::quoting_illegal_filenames($filesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles12.log", $filesinproductlanguageresolvedarrayref); }
 	}
 
 	#####################################
@@ -877,7 +769,6 @@ for ( my $n = 0; $n <= $#installer::glob
 	$installer::logger::Info->print( "... analyzing files with flag SUBST_FILENAME ...\n" );
 
 	installer::substfilenamefiles::resolving_subst_filename_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, $languagestringref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles12d.log", $filesinproductlanguageresolvedarrayref); }
 
 	#####################################
 	# Files with flag SCPZIP_REPLACE
@@ -888,7 +779,6 @@ for ( my $n = 0; $n <= $#installer::glob
 	# Editing files with flag SCPZIP_REPLACE.
 
 	installer::scpzipfiles::resolving_scpzip_replace_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles13.log", $filesinproductlanguageresolvedarrayref); }
 
 	#####################################
 	# Files with flag PATCH_SO_NAME
@@ -899,7 +789,6 @@ for ( my $n = 0; $n <= $#installer::glob
 	# Editing files with flag PATCH_SO_NAME.
 
 	installer::scppatchsoname::resolving_patchsoname_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles13b.log", $filesinproductlanguageresolvedarrayref); }
 
 	#####################################
 	# Files with flag HIDDEN
@@ -908,7 +797,6 @@ for ( my $n = 0; $n <= $#installer::glob
 	$installer::logger::Info->print( "... analyzing files with flag HIDDEN ...\n" );
 
 	installer::worker::resolving_hidden_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles13c.log", $filesinproductlanguageresolvedarrayref); }
 
 	############################################
 	# Collecting directories for epm list file
@@ -924,34 +812,26 @@ for ( my $n = 0; $n <= $#installer::glob
 	# that have a CREATE flag. All other directories are created, if they contain at least one file.
 
 	my ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist1.log", $directoriesforepmarrayref); }
 	
 	($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_with_create_flag_from_directoryarray($dirsinproductlanguageresolvedarrayref, $alldirectoryhash);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist2.log", $directoriesforepmarrayref); }
 	
 	# installer::sorter::sorting_array_of_hashes($directoriesforepmarrayref, "HostName");
-	# if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3.log", $directoriesforepmarrayref); }
 
 	#########################################################
 	# language dependent scpactions part
 	#########################################################
 
 	my $scpactionsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($scpactionsinproductarrayref, $languagesarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions3.log", $scpactionsinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::changing_name_of_language_dependent_keys($scpactionsinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions4.log", $scpactionsinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::get_Source_Directory_For_Files_From_Includepathlist($scpactionsinproductlanguageresolvedarrayref, $includepatharrayref_lang, $dirsinproductlanguageresolvedarrayref, "ScpActions");
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions5.log", $scpactionsinproductlanguageresolvedarrayref); }
 
 	# Editing scpactions with flag SCPZIP_REPLACE and PATCH_SO_NAME.
 
 	installer::scpzipfiles::resolving_scpzip_replace_flag($scpactionsinproductlanguageresolvedarrayref, $allvariableshashref, "ScpAction", $languagestringref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions6.log", $scpactionsinproductlanguageresolvedarrayref); }
 
 	installer::scppatchsoname::resolving_patchsoname_flag($scpactionsinproductlanguageresolvedarrayref, $allvariableshashref, "ScpAction", $languagestringref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions6a.log", $scpactionsinproductlanguageresolvedarrayref); }
 
 	#########################################################
 	# language dependent links part
@@ -960,27 +840,20 @@ for ( my $n = 0; $n <= $#installer::glob
 	$installer::logger::Info->print( "... analyzing links ...\n" );
 
 	my $linksinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($linksinproductarrayref, $languagesarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks2.log", $linksinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::changing_name_of_language_dependent_keys($linksinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks3.log", $linksinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::get_destination_file_path_for_links($linksinproductlanguageresolvedarrayref, $filesinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks4.log", $linksinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($linksinproductlanguageresolvedarrayref, $dirsinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks5.log", $linksinproductlanguageresolvedarrayref); }
 
 	# Now taking all links that have no FileID but a ShortcutID, linking to another link
 
 	installer::scriptitems::get_destination_link_path_for_links($linksinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks6.log", $linksinproductlanguageresolvedarrayref); }
 
 	$linksinproductlanguageresolvedarrayref = installer::scriptitems::remove_workstation_only_items($linksinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks7.log", $linksinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::resolve_links_with_flag_relative($linksinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks8.log", $linksinproductlanguageresolvedarrayref); }
 
 	#########################################################
 	# language dependent unix links part
@@ -989,13 +862,10 @@ for ( my $n = 0; $n <= $#installer::glob
 	$installer::logger::Info->print( "... analyzing unix links ...\n" );
 
 	my $unixlinksinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($unixlinksinproductarrayref, $languagesarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks3.log", $unixlinksinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::changing_name_of_language_dependent_keys($unixlinksinproductlanguageresolvedarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks4.log", $unixlinksinproductlanguageresolvedarrayref); }
 
 	installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($unixlinksinproductlanguageresolvedarrayref, $dirsinproductarrayref);
-	if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks5.log", $unixlinksinproductlanguageresolvedarrayref); }
 
 	#########################################################
 	# language dependent part for profiles and profileitems
@@ -1009,33 +879,25 @@ for ( my $n = 0; $n <= $#installer::glob
 		$installer::logger::Info->print( "... creating profiles ...\n" );
 
 		$profilesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($profilesinproductarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profiles2.log", $profilesinproductlanguageresolvedarrayref); }
 
 		$profileitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($profileitemsinproductarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profileitems2.log", $profilesinproductlanguageresolvedarrayref); }
 
 		installer::scriptitems::changing_name_of_language_dependent_keys($profilesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profiles3.log", $profilesinproductlanguageresolvedarrayref); }
 
 		installer::scriptitems::changing_name_of_language_dependent_keys($profileitemsinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profileitems3.log", $profileitemsinproductlanguageresolvedarrayref); }
 
 		installer::scriptitems::replace_setup_variables($profileitemsinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profileitems4.log", $profileitemsinproductlanguageresolvedarrayref); }
 
 		if ( $installer::globals::patch_user_dir )
 		{
 			installer::scriptitems::replace_userdir_variable($profileitemsinproductlanguageresolvedarrayref);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profileitems4a.log", $profileitemsinproductlanguageresolvedarrayref); }		
 		}
 
 		installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($profilesinproductlanguageresolvedarrayref, $dirsinproductarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profiles4.log", $profilesinproductlanguageresolvedarrayref); }
 
 		# Now the Profiles can be created
 
 		installer::profiles::create_profiles($profilesinproductlanguageresolvedarrayref, $profileitemsinproductlanguageresolvedarrayref, $filesinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles15.log", $filesinproductlanguageresolvedarrayref); }
 	}
 
 	my $registryitemsinproductlanguageresolvedarrayref; # cannot be defined in the following "if ( $installer::globals::iswindowsbuild )"
@@ -1051,10 +913,8 @@ for ( my $n = 0; $n <= $#installer::glob
 		$installer::logger::Info->print( "... analyzing folder ...\n" );
 
 		$folderinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($folderinproductarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folder2.log", $folderinproductlanguageresolvedarrayref); }
 
 		installer::scriptitems::changing_name_of_language_dependent_keys($folderinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folder3.log", $folderinproductlanguageresolvedarrayref); }
 
 		#########################################################
 		# language dependent part for folderitems
@@ -1063,10 +923,8 @@ for ( my $n = 0; $n <= $#installer::glob
 		$installer::logger::Info->print( "... analyzing folderitems ...\n" );
 
 		$folderitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($folderitemsinproductarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folderitems2.log", $folderitemsinproductlanguageresolvedarrayref); }
 
 		installer::scriptitems::changing_name_of_language_dependent_keys($folderitemsinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folderitems3.log", $folderitemsinproductlanguageresolvedarrayref); }
 
 		#########################################################
 		# language dependent part for registryitems
@@ -1075,10 +933,8 @@ for ( my $n = 0; $n <= $#installer::glob
 		$installer::logger::Info->print( "... analyzing registryitems ...\n" );
 
 		$registryitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($registryitemsinproductarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems2.log", $registryitemsinproductlanguageresolvedarrayref); }
 
 		installer::scriptitems::changing_name_of_language_dependent_keys($registryitemsinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems3.log", $registryitemsinproductlanguageresolvedarrayref); }	
 	}
 
 	#########################################################
@@ -1092,13 +948,10 @@ for ( my $n = 0; $n <= $#installer::glob
 		$installer::logger::Info->print( "... analyzing modules ...\n" );
 
 		$modulesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($modulesinproductarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes_modules($loggingdir . "modules2.log", $modulesinproductlanguageresolvedarrayref); }
 
 		$modulesinproductlanguageresolvedarrayref = installer::scriptitems::remove_not_required_language_modules($modulesinproductlanguageresolvedarrayref, $languagesarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes_modules($loggingdir . "modules2a.log", $modulesinproductlanguageresolvedarrayref); }
 
 		installer::scriptitems::changing_name_of_language_dependent_keys($modulesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes_modules($loggingdir . "modules3a.log", $modulesinproductlanguageresolvedarrayref); }
 
 		# installer::scriptitems::collect_language_specific_names($modulesinproductlanguageresolvedarrayref);	
 		installer::scriptitems::select_required_language_strings($modulesinproductlanguageresolvedarrayref);	# using english strings
@@ -1111,27 +964,19 @@ for ( my $n = 0; $n <= $#installer::glob
 	if ( $installer::globals::languagepack )
 	{
 		$filesinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($filesinproductlanguageresolvedarrayref, $languagesarrayref, "File");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles16b.log", $filesinproductlanguageresolvedarrayref); }
 		$scpactionsinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($scpactionsinproductlanguageresolvedarrayref, $languagesarrayref, "ScpAction");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions6b.log", $scpactionsinproductlanguageresolvedarrayref); }
 		$linksinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($linksinproductlanguageresolvedarrayref, $languagesarrayref, "Shortcut");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks8b.log", $linksinproductlanguageresolvedarrayref); }
 		$unixlinksinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($unixlinksinproductlanguageresolvedarrayref, $languagesarrayref, "Unixlink");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks5.log", $unixlinksinproductlanguageresolvedarrayref); }
 		@{$folderitemsinproductlanguageresolvedarrayref} = (); # no folderitems in languagepacks
 
 		# Collecting the directories again, to include only the language specific directories
 		($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3alangpack.log", $directoriesforepmarrayref); }
 		($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_with_create_flag_from_directoryarray($dirsinproductlanguageresolvedarrayref, $alldirectoryhash);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3blangpack.log", $directoriesforepmarrayref); }
 		installer::sorter::sorting_array_of_hashes($directoriesforepmarrayref, "HostName");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3clangpack.log", $directoriesforepmarrayref); }
 
 		if ( $installer::globals::iswindowsbuild )
 		{
 			$registryitemsinproductlanguageresolvedarrayref = installer::worker::select_langpack_items($registryitemsinproductlanguageresolvedarrayref, "RegistryItem");
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems3aa.log", $registryitemsinproductlanguageresolvedarrayref); }			
 		}
 
 	}
@@ -1143,31 +988,22 @@ for ( my $n = 0; $n <= $#installer::glob
 	if (( $installer::globals::patch ) && (( $installer::globals::issolarispkgbuild ) || ( $installer::globals::iswindowsbuild )))
 	{
 		$filesinproductlanguageresolvedarrayref = installer::worker::select_patch_items($filesinproductlanguageresolvedarrayref, "File");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles16patch.log", $filesinproductlanguageresolvedarrayref); }
 		$scpactionsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($scpactionsinproductlanguageresolvedarrayref, "ScpAction");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions6patch.log", $scpactionsinproductlanguageresolvedarrayref); }
 		$linksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($linksinproductlanguageresolvedarrayref, "Shortcut");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks8patch.log", $linksinproductlanguageresolvedarrayref); }
 		$unixlinksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($unixlinksinproductlanguageresolvedarrayref, "Unixlink");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks6patch.log", $unixlinksinproductlanguageresolvedarrayref); }
 		$folderitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($folderitemsinproductlanguageresolvedarrayref, "FolderItem");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfolderitems1patch.log", $folderitemsinproductlanguageresolvedarrayref); }
 		# @{$folderitemsinproductlanguageresolvedarrayref} = (); # no folderitems in languagepacks
 		
 		if ( $installer::globals::iswindowsbuild )
 		{
 			$registryitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items_without_name($registryitemsinproductlanguageresolvedarrayref, "RegistryItem");
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems3a.log", $registryitemsinproductlanguageresolvedarrayref); }			
 
 			installer::worker::prepare_windows_patchfiles($filesinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles16bpatch.log", $filesinproductlanguageresolvedarrayref); }
 
 			# For Windows patches, the directories can now be collected again
 			($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist4_patch.log", $directoriesforepmarrayref); }
 		
 			installer::sorter::sorting_array_of_hashes($directoriesforepmarrayref, "HostName");
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist5_patch.log", $directoriesforepmarrayref); }
 		}
 	}
 
@@ -1185,7 +1021,6 @@ for ( my $n = 0; $n <= $#installer::glob
 	{
 		$installer::logger::Info->print( "... creating inf files ...\n" );
 		installer::worker::create_inf_file($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $folderinproductlanguageresolvedarrayref, $folderitemsinproductlanguageresolvedarrayref, $modulesinproductlanguageresolvedarrayref, $languagesarrayref, $languagestringref, $allvariableshashref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles16c.log", $filesinproductlanguageresolvedarrayref); }
 	}
 
 	###########################################
@@ -1196,7 +1031,6 @@ for ( my $n = 0; $n <= $#installer::glob
 	if ( $allvariableshashref->{'UPXPRODUCT'} )
 	{
 		installer::upx::upx_on_libraries($filesinproductlanguageresolvedarrayref, $languagestringref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles16d.log", $filesinproductlanguageresolvedarrayref); }
 	}
 
 	###########################################################
@@ -1228,7 +1062,6 @@ for ( my $n = 0; $n <= $#installer::glob
 	installer::packagelist::log_packages_content($packages);
 	installer::packagelist::create_module_destination_hash($packages, $allvariableshashref);
 
-	if ( $installer::globals::debug ) { installer::logger::debuginfo("\nEnd of part 1b: The language dependent part\n"); }
 
 	# saving debug info, before starting part 2
 	if ( $installer::globals::debug ) { installer::logger::savedebug($installer::globals::exitlog); }
@@ -1237,13 +1070,11 @@ for ( my $n = 0; $n <= $#installer::glob
 	# Part 2: The platform dependent part
 	#################################################
 
-	if ( $installer::globals::debug ) { installer::logger::debuginfo("\nPart 2: The platform dependent part\n"); }
 
 	#################################################
 	# Part 2a: All non-Windows platforms
 	#################################################
 
-	if ( $installer::globals::debug ) { installer::logger::debuginfo("\nPart 2a: All non-Windows platforms\n"); }
 
 	#########################################################
 	# ... creating epm list file ...
@@ -1394,39 +1225,27 @@ for ( my $n = 0; $n <= $#installer::glob
 			#############################################
 
 			my $filesinpackage = installer::converter::copy_collector($filesinproductlanguageresolvedarrayref);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "files1_" . $packagename . ".log", $filesinpackage); }	
 			my $linksinpackage = installer::converter::copy_collector($linksinproductlanguageresolvedarrayref);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "links1_" . $packagename . ".log", $linksinpackage); }	
 			my $unixlinksinpackage = installer::converter::copy_collector($unixlinksinproductlanguageresolvedarrayref);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks1_" . $packagename . ".log", $unixlinksinpackage); }	
 			my $dirsinpackage = installer::converter::copy_collector($directoriesforepmarrayref);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "dirs1_" . $packagename . ".log", $dirsinpackage); }	
 
 			###########################################
 			# setting the root path for the packages
 			###########################################
 			
 			installer::scriptitems::add_rootpath_to_directories($dirsinpackage, $packagerootpath);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "dirs2_" . $packagename . ".log", $dirsinpackage); }	
 			installer::scriptitems::add_rootpath_to_files($filesinpackage, $packagerootpath);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "files2_" . $packagename . ".log", $filesinpackage); }	
 			installer::scriptitems::add_rootpath_to_links($linksinpackage, $packagerootpath);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "links2_" . $packagename . ".log", $linksinpackage); }	
 			installer::scriptitems::add_rootpath_to_files($unixlinksinpackage, $packagerootpath);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks2_" . $packagename . ".log", $unixlinksinpackage); }	
 
 			#################################
 			# collecting items for package
 			#################################
 
 			$filesinpackage = installer::packagelist::find_files_for_package($filesinpackage, $onepackage);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "files3_" . $packagename . ".log", $filesinpackage); }	
 			$unixlinksinpackage = installer::packagelist::find_files_for_package($unixlinksinpackage, $onepackage);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks3_" . $packagename . ".log", $unixlinksinpackage); }	
 			$linksinpackage = installer::packagelist::find_links_for_package($linksinpackage, $filesinpackage);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "links3_" . $packagename . ".log", $linksinpackage); }	
 			$dirsinpackage = installer::packagelist::find_dirs_for_package($dirsinpackage, $onepackage);
-			if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "dirs3_" . $packagename . ".log", $dirsinpackage); }	
 
 			###############################################
 			# nothing to do, if $filesinpackage is empty
@@ -1470,7 +1289,6 @@ for ( my $n = 0; $n <= $#installer::glob
 			if ( $installer::globals::strip )
 			{
 				installer::strip::strip_libraries($filesinpackage, $languagestringref);
-				if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . $packagename ."_files.log", $filesinpackage); }
 			}
 			
 			###############################################################
@@ -1494,9 +1312,6 @@ for ( my $n = 0; $n <= $#installer::glob
 						if ( $installer::globals::patch ) { $installer::globals::call_epm = 1; }	 # enabling packing again
 						$run = 1;
 
-						if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "files3b_" . $packagename . ".log", $filesinpackage); }
-						if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "links3b_" . $packagename . ".log", $linksinpackage); }
-						if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "dirs3b_" . $packagename . ".log", $dirsinpackage); }
 					}
 
 					if (( ! $installer::globals::makelinuxlinkrpm ) && ( ! $run ))
@@ -1509,9 +1324,6 @@ for ( my $n = 0; $n <= $#installer::glob
 						$shellscriptsfilename = "";	# shell scripts only need to be included into the link rpm
 						$run = 1;
 
-						if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "files3a_" . $packagename . ".log", $filesinpackage); }
-						if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "links3a_" . $packagename . ".log", $linksinpackage); }
-						if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "dirs3a_" . $packagename . ".log", $dirsinpackage); }
 					}					
 				}							
 			}
@@ -1560,7 +1372,6 @@ for ( my $n = 0; $n <= $#installer::glob
 				if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ))
 				{
 					$filesinpackage = installer::worker::analyze_patch_files($filesinpackage);
-					if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "files4_" . $packagename . ".log", $filesinpackage); }	
 
 					if ( ! ( $#{$filesinpackage} > -1 ))
 					{
@@ -1865,13 +1676,11 @@ for ( my $n = 0; $n <= $#installer::glob
 
 	}	# end of "if (!( $installer::globals::iswindowsbuild ))"
 
-	if ( $installer::globals::debug ) { installer::logger::debuginfo("\nEnd of part 2a: All non-Windows platforms\n"); }
 
 	#################################################
 	# Part 2b: The Windows platform
 	#################################################
 
-	if ( $installer::globals::debug ) { installer::logger::debuginfo("\nPart 2b: The Windows platform\n"); }
 
 	#####################################################################
 	# ... creating idt files ...
@@ -1891,7 +1700,6 @@ for ( my $n = 0; $n <= $#installer::glob
 		if ( $installer::globals::compiler =~ /wntgcci/ )
 		{
 		    installer::windows::strip::strip_binaries($filesinproductlanguageresolvedarrayref, $languagestringref);
-		    if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles16e.log", $filesinproductlanguageresolvedarrayref); }
 		}
 
 		$installdir = installer::worker::create_installation_directory($shipinstalldir, $languagestringref, \$current_install_number);
@@ -1930,7 +1738,6 @@ for ( my $n = 0; $n <= $#installer::glob
 		# Removing all files with flag "BINARYTABLE_ONLY"
 		@installer::globals::binarytableonlyfiles = ();
 		$filesinproductlanguageresolvedarrayref = installer::worker::remove_all_items_with_special_flag($filesinproductlanguageresolvedarrayref ,"BINARYTABLE_ONLY");
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles17.log", $filesinproductlanguageresolvedarrayref); }
 
 		# Collecting all profileitems with flag "INIFILETABLE" for table "IniFile"
 		my $inifiletableentries = installer::worker::collect_all_items_with_special_flag($profileitemsinproductlanguageresolvedarrayref ,"INIFILETABLE");
@@ -1941,41 +1748,28 @@ for ( my $n = 0; $n <= $#installer::glob
 
 		# Add cabinet assignments to files
 		installer::windows::file::assign_cab_to_files($filesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles17a.log", $filesinproductlanguageresolvedarrayref); }
 		installer::windows::file::assign_sequencenumbers_to_files($filesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles17b.log", $filesinproductlanguageresolvedarrayref); }
 
 		# Collection all available directory trees
 		installer::windows::directory::collectdirectorytrees($directoriesforepmarrayref);
 
-		$filesinproductlanguageresolvedarrayref = installer::windows::file::create_files_table($filesinproductlanguageresolvedarrayref, \@allfilecomponents, $newidtdir, $allvariableshashref, $uniquefilename, $allupdatesequences, $allupdatecomponents, $allupdatefileorder);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles17c.log", $filesinproductlanguageresolvedarrayref); }
-		if ( $installer::globals::updatedatabase ) { installer::windows::file::check_file_sequences($allupdatefileorder, $allupdatecomponentorder); }
+		$filesinproductlanguageresolvedarrayref = installer::windows::file::create_files_table($filesinproductlanguageresolvedarrayref, \@allfilecomponents, $newidtdir, $allvariableshashref, $uniquefilename);
 
 		installer::windows::directory::create_directory_table($directoriesforepmarrayref, $newidtdir, $allvariableshashref, $shortdirname, $loggingdir);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles18.log", $filesinproductlanguageresolvedarrayref); }
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforidt1.log", $directoriesforepmarrayref); }
 
 		# Attention: The table "Registry.idt" contains language specific strings -> parameter: $languagesarrayref !
 		installer::windows::registry::create_registry_table($registryitemsinproductlanguageresolvedarrayref, \@allregistrycomponents, $newidtdir, $languagesarrayref, $allvariableshashref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems4.log", $registryitemsinproductlanguageresolvedarrayref); }
 	
 		installer::windows::component::create_component_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, \@allfilecomponents, \@allregistrycomponents, $newidtdir, $componentid, $componentidkeypath, $allvariableshashref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles19.log", $filesinproductlanguageresolvedarrayref); }
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems5.log", $registryitemsinproductlanguageresolvedarrayref); }
 
 		# Attention: The table "Feature.idt" contains language specific strings -> parameter: $languagesarrayref !
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules4.log", $modulesinproductlanguageresolvedarrayref); }
 		installer::windows::feature::add_uniquekey($modulesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules4a.log", $modulesinproductlanguageresolvedarrayref); }
 		$modulesinproductlanguageresolvedarrayref = installer::windows::feature::sort_feature($modulesinproductlanguageresolvedarrayref);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules4b.log", $modulesinproductlanguageresolvedarrayref); }
 		installer::windows::feature::create_feature_table($modulesinproductlanguageresolvedarrayref, $newidtdir, $languagesarrayref, $allvariableshashref);
 
 		installer::windows::featurecomponent::create_featurecomponent_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $newidtdir);
 
-		installer::windows::media::create_media_table($filesinproductlanguageresolvedarrayref, $newidtdir, $allvariableshashref, $allupdatelastsequences, $allupdatediskids);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles20.log", $filesinproductlanguageresolvedarrayref); }
+		installer::windows::media::create_media_table($filesinproductlanguageresolvedarrayref, $newidtdir, $allvariableshashref);
 
 		installer::windows::font::create_font_table($filesinproductlanguageresolvedarrayref, $newidtdir);
 
@@ -1984,7 +1778,6 @@ for ( my $n = 0; $n <= $#installer::glob
 		my @iconfilecollector = ();
 
 		installer::windows::shortcut::create_shortcut_table($filesinproductlanguageresolvedarrayref, $linksinproductlanguageresolvedarrayref, $folderinproductlanguageresolvedarrayref, $folderitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, $newidtdir, $languagesarrayref, $includepatharrayref, \@iconfilecollector);
-		if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folderitems4.log", $folderitemsinproductlanguageresolvedarrayref); }
 
 		installer::windows::inifile::create_inifile_table($inifiletableentries, $filesinproductlanguageresolvedarrayref, $newidtdir);
 
@@ -2181,12 +1974,6 @@ for ( my $n = 0; $n <= $#installer::glob
 
 				installer::windows::msiglobal::write_summary_into_msi_database($msifilename, $onelanguage, $languagefile, $allvariableshashref);
 				
-				# if there are Merge Modules, they have to be integrated now
-				$filesinproductlanguageresolvedarrayref = installer::windows::mergemodule::merge_mergemodules_into_msi_database($mergemodulesarrayref, $filesinproductlanguageresolvedarrayref, $msifilename, $languagestringref, $onelanguage, $languagefile, $allvariableshashref, $includepatharrayref, $allupdatesequences, $allupdatelastsequences, $allupdatediskids);
-				if (( $installer::globals::globallogging ) && ($installer::globals::globalloggingform21)) { installer::files::save_array_of_hashes($loggingdir . "productfiles21_" . $onelanguage . ".log", $filesinproductlanguageresolvedarrayref); }
-				$installer::globals::globalloggingform21 = 0;
-				if ( $installer::globals::use_packages_for_cabs ) { installer::windows::media::create_media_table($filesinproductlanguageresolvedarrayref, $newidtdir, $allvariableshashref, $allupdatelastsequences, $allupdatediskids); }
-			
 				# copy msi database into installation directory
 
 				my $msidestfilename = $installdir . $installer::globals::separator . $msidatabasename;
@@ -2227,10 +2014,6 @@ for ( my $n = 0; $n <= $#installer::glob
 
 		installer::windows::msiglobal::copy_windows_installer_files_into_installset($installdir, $includepatharrayref, $allvariableshashref);
 
-		# ... copying MergeModules into installation set
-
-		if ( ! $installer::globals::fix_number_of_cab_files ) { installer::windows::msiglobal::copy_merge_modules_into_installset($installdir); }
-
 		# ... copying the child projects
 
 		if ($installer::globals::addchildprojects)
@@ -2273,20 +2056,6 @@ for ( my $n = 0; $n <= $#installer::glob
 		installer::worker::clean_output_tree();	# removing directories created in the output tree
 		($is_success, $finalinstalldir) = installer::worker::analyze_and_save_logfile($loggingdir, $installdir, $installlogdir, $allsettingsarrayref, $languagestringref, $current_install_number);
 
-		#######################################################
-		# Creating Windows msp patches
-		#######################################################
-		
-		if (( $is_success ) && ( $installer::globals::updatedatabase ) && ( $allvariableshashref->{'CREATE_MSP_INSTALLSET'} ))
-		{
-			# Required:
-			# Temp path for administrative installations: $installer::globals::temppath
-			# Path of new installation set: $finalinstalldir
-			# Path of old installation set: $installer::globals::updatedatabasepath
-			my $mspdir = installer::windows::msp::create_msp_patch($finalinstalldir, $includepatharrayref, $allvariableshashref, $languagestringref, $languagesarrayref, $filesinproductlanguageresolvedarrayref);
-			($is_success, $finalinstalldir) = installer::worker::analyze_and_save_logfile($loggingdir, $mspdir, $installlogdir, $allsettingsarrayref, $languagestringref, $current_install_number);
-			installer::worker::clean_output_tree();	# removing directories created in the output tree
-		}
 		
 		#######################################################
 		# Creating download installation set
@@ -2308,13 +2077,11 @@ for ( my $n = 0; $n <= $#installer::glob
 		
 	}	 # end of "if ( $installer::globals::iswindowsbuild )"
 
-	if ( $installer::globals::debug ) { installer::logger::debuginfo("\nEnd of part 2b: The Windows platform\n"); }
 
 	# saving file_info file for later analysis
 	my $speciallogfilename = "fileinfo_" . $installer::globals::product . "\.log";
 	installer::files::save_array_of_hashes($loggingdir . $speciallogfilename, $filesinproductlanguageresolvedarrayref);
-
-}	# end of iteration for one language group
+}
 
 # saving debug info at end
 if ( $installer::globals::debug ) { installer::logger::savedebug($installer::globals::exitlog); }

Modified: openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/control.pm
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/control.pm?rev=1546124&r1=1546123&r2=1546124&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/control.pm (original)
+++ openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/control.pm Wed Nov 27 17:25:40 2013
@@ -321,7 +321,7 @@ sub filter_log_error ($$$$)
 
         # Remove all filenames that contain the word "Error".
 		my $work_string = $message;
-		$work_string =~ s/Error\.(idt|mlf|ulf|html|hpp|ipp)//g;
+		$work_string =~ s/Error\.(idt|mlf|ulf|idl|html|hpp|ipp)//g;
 		
 		if ($work_string =~ /\bError\b/i)
 		{
@@ -497,7 +497,7 @@ sub check_updatepack
 
 					# try to write into $shipdrive
 
-					my $directory = $installer::globals::product . "_" . $installer::globals::compiler . "_" . $installer::globals::buildid . "_" . $installer::globals::languageproducts[0] . "_test_$$";
+					my $directory = $installer::globals::product . "_" . $installer::globals::compiler . "_" . $installer::globals::buildid . "_" . $installer::globals::languageproduct . "_test_$$";
 					$directory =~ s/\,/\_/g;	# for the list of languages
 					$directory =~ s/\-/\_/g;	# for en-US, pt-BR, ...
 					$directory = $shipdrive . $installer::globals::separator . $directory;

Modified: openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/epmfile.pm
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/epmfile.pm?rev=1546124&r1=1546123&r2=1546124&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/epmfile.pm (original)
+++ openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/epmfile.pm Wed Nov 27 17:25:40 2013
@@ -2312,7 +2312,7 @@ sub log_rpm_info
 
 			$infoline = "$rpmout\n";
 			$infoline =~ s/error/e_r_r_o_r/gi;  # avoiding log problems
-            $installer::logger::Lang->printf($infoline);
+            $installer::logger::Lang->print($infoline);
 		}
 	}
 	else

Modified: openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/globals.pm
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/globals.pm?rev=1546124&r1=1546123&r2=1546124&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/globals.pm (original)
+++ openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/globals.pm Wed Nov 27 17:25:40 2013
@@ -113,7 +113,7 @@ BEGIN
 	
 	$required_dotnet_version = "2.0.0.0";
 	$productextension = "";
-	@languageproducts = ();
+	$languageproduct = undef;
 	$build = "";
 	$minor = "";
 	$lastminor = "";
@@ -226,24 +226,14 @@ BEGIN
 	@linkrpms = ();
 	$archiveformat = "";
 	$minorupgradekey = "";
-	$updatelastsequence = 0;
-	$updatesequencecounter = 0;
-	$updatedatabase = 0;
-	$updatedatabasepath = "";
 	$pfffileexists = 0;
 	$pffcabfilename = "ooobasis3.0_pff.cab";
-	$mergemodulenumber = 0;
-	%allmergemodulefilesequences = ();
-	%newupdatefiles = ();
-	%allusedupdatesequences = ();
-	%mergemodulefiles = ();
 	$mergefiles_added_into_collector = 0;
 	$creating_windows_installer_patch = 0;
-	
+
 	$strip = 1;
 	
 	$globallogging = 0;
-	$globalloggingform21 = 1;
 	$logfilename = "logfile.log";	# the default logfile name for global errors
 #	@logfileinfo = ();
 #	@errorlogfileinfo = ();
@@ -273,7 +263,6 @@ BEGIN
 	$isopensourceproduct = 1;
 	$manufacturer = "";
 	$longmanufacturer = "";
-	$sundirname = "Oracle";
 	$codefilename = "codes.txt";
 	$componentfilename = "components.txt";	
 	$productcode = "";
@@ -292,7 +281,6 @@ BEGIN
 	$pwfile = "";
 	$pfxfile = "";
 
-	%mergemodules = ();
 	%merge_media_line = ();
 	%merge_allfeature_hash = ();
 	%merge_alldirectory_hash = ();
@@ -375,7 +363,6 @@ BEGIN
 	@pcfdiffcomment = ();
 	@epmdifflist = ();
 	$desktoplinkexists = 0;
-	$sundirexists = 0;
 	$analyze_spellcheckerlanguage = 0;
 	%spellcheckerlanguagehash = ();
 	%spellcheckerfilehash = ();
@@ -403,11 +390,8 @@ BEGIN
 	$officedirhostname = "";
 	$basisdirhostname = "";
 	$uredirhostname = "";
-	$sundirhostname = "";
 	$officedirgid = "";
 	$basisdirgid = "";
-	$uredirgid = "";
-	$sundirgid = "";
 	
 	%sign_extensions = ("dll" => "1", "exe" => "1", "cab" => "1");
 	%treestyles = ();
@@ -418,13 +402,10 @@ BEGIN
 	%usedtreeconditions = ();
 	%moduledestination = ();
 	
-	$one_cab_file = 0;
 	$fix_number_of_cab_files = 1;
-	$cab_file_per_component = 0;
 	$cabfilecompressionlevel = 2;
 	$number_of_cabfiles = 1;	# only for $fix_number_of_cab_files = 1 
 	$include_cab_in_msi = 0;
-	$use_packages_for_cabs = 0;
 	$msidatabasename = "";
 	$prepare_winpatch = 0;
 	$previous_idt_dir = "";	
@@ -451,7 +432,6 @@ BEGIN
 
 	$postprocess_specialepm = 0;
 	$postprocess_standardepm = 0;
-	$mergemodules_analyzed = 0;
 	
 	$starttime = "";
 

Modified: openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/languages.pm
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/languages.pm?rev=1546124&r1=1546123&r2=1546124&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/languages.pm (original)
+++ openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/languages.pm Wed Nov 27 17:25:40 2013
@@ -30,31 +30,46 @@ use installer::globals;
 use installer::remover;
 use installer::ziplist;
 
-#############################################################################
-# Analyzing the laguage list parameter and language list from zip list file
-#############################################################################
+=head2 analyze_languagelist()
 
-sub analyze_languagelist
-{	
-	my $first = $installer::globals::languagelist;
-	
-	$first =~ s/\_/\,/g;	# substituting "_" by ",", in case of dmake definition 01_49
+    Convert $installer::globals::languagelist into $installer::globals::languageproduct.
 
-	# Products are separated by a "#", if defined in zip-list by a "|". But "get_info_about_languages" 
-	# substitutes already "|" to "#". This procedure only knows "#" as product separator.
-	# Different languages for one product are separated by ",". But on the command line the "_" is used.
-	# Therefore "_" is replaced by "," at the beginning of this procedure.
-	
-	while ($first =~ /^(\S+)\#(\S+?)$/)	# Minimal matching, to keep the order of languages
-	{
-		$first = $1;
-		my $last = $2;	
-		unshift(@installer::globals::languageproducts, $last);
-	}	
+    That is now just a replacement of '_' with ','.
+
+    $installer::globals::languageproduct (specified by the -l option
+    on the command line) can contain multiple languages separated by
+    '_' to specify multilingual builds.
+
+    Separation by '#' to build multiple languages (single or
+    multilingual) in one make_installer.pl run is not supported
+    anymore.  Call make_installer.pl with all languages separately instead:
+    make_installer.pl -l L1#L2
+    ->
+    make_installer.pl -l L1
+    make_installer.pl -l L2
+
+=cut
+sub analyze_languagelist()
+{   
+    my $languageproduct = $installer::globals::languagelist;
+
+    $languageproduct =~ s/\_/\,/g;  # substituting "_" by ",", in case of dmake definition 01_49
+
+    if ($languageproduct =~ /\#/)
+    {
+        installer::exiter::exit_program(
+            "building more than one language (or language set) is not supported anymore\n"
+            ."please replace one call of 'make_installer.pl -l language1#language2'\n"
+            ."with two calls 'make_installer.pl -l language1' and 'make_installer.pl -l language2'",
+            "installer::language::analyze_languagelist");
+    }
 
-	unshift(@installer::globals::languageproducts, $first);
+    $installer::globals::languageproduct = $languageproduct;
 }
 
+
+
+
 ####################################################
 # Reading languages from zip list file
 ####################################################

Modified: openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/parameter.pm
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/parameter.pm?rev=1546124&r1=1546123&r2=1546124&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/parameter.pm (original)
+++ openoffice/branches/alg/aw080/main/solenv/bin/modules/installer/parameter.pm Wed Nov 27 17:25:40 2013
@@ -618,8 +618,7 @@ sub outputparameter ()
 	else  { push(@output, "Not unzipping ARCHIVE files\n"); }
 	if (!($installer::globals::languages_defined_in_productlist))
 	{
-		push(@output, "Languages:\n");
-		foreach my $element (@installer::globals::languageproducts) { push(@output, "\t$element\n"); }
+		push(@output, sprintf("Languages: %s\n", $installer::globals::languageproduct));
 	}
 	else
 	{