diff options
Diffstat (limited to 'solenv/bin/modules/installer/windows/registry.pm')
-rw-r--r-- | solenv/bin/modules/installer/windows/registry.pm | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/solenv/bin/modules/installer/windows/registry.pm b/solenv/bin/modules/installer/windows/registry.pm index 832fd213a9f0..9f9da9485677 100644 --- a/solenv/bin/modules/installer/windows/registry.pm +++ b/solenv/bin/modules/installer/windows/registry.pm @@ -216,6 +216,27 @@ sub get_registry_value } ############################################################## +# Returning 64 bit value for registry table. +############################################################## + +sub get_registry_val64 +{ + my ($registry, $allvariableshashref) = @_; + + my $value = ""; + + if ( $registry->{'Val64'} ) { $value = $registry->{'Val64'}; } + + $value =~ s/\\\"/\"/g; # no more masquerading of '"' + $value =~ s/\<progpath\>/\[OFFICEINSTALLLOCATION\]/; + $value =~ s/\[OFFICEINSTALLLOCATION\]\\/\[OFFICEINSTALLLOCATION\]/; # removing "\" after "[OFFICEINSTALLLOCATION]" + + if ( $value =~ /\%/ ) { $value = installer::worker::replace_variables_in_string($value, $allvariableshashref); } + + return $value; +} + +############################################################## # Returning component for registry table. ############################################################## @@ -286,8 +307,10 @@ sub create_registry_table my $onelanguage = ${$languagesarrayref}[$m]; my @registrytable = (); + my @reg64table = (); installer::windows::idtglobal::write_idt_header(\@registrytable, "registry"); + installer::windows::idtglobal::write_idt_header(\@reg64table, "reg64"); for ( my $i = 0; $i <= $#{$registryref}; $i++ ) { @@ -306,6 +329,7 @@ sub create_registry_table $registry{'Key'} = get_registry_key($oneregistry, $allvariableshashref); $registry{'Name'} = get_registry_name($oneregistry, $allvariableshashref); $registry{'Value'} = get_registry_value($oneregistry, $allvariableshashref); + $registry{'Val64'} = get_registry_val64($oneregistry, $allvariableshashref); $registry{'Component_'} = get_registry_component($oneregistry, $allvariableshashref); # Collecting all components @@ -343,7 +367,11 @@ sub create_registry_table my $oneline = $registry{'Registry'} . "\t" . $registry{'Root'} . "\t" . $registry{'Key'} . "\t" . $registry{'Name'} . "\t" . $registry{'Value'} . "\t" . $registry{'Component_'} . "\n"; - push(@registrytable, $oneline); + my $oneline64 = $registry{'Registry'} . "\t" . $registry{'Root'} . "\t" . $registry{'Key'} . "\t" + . $registry{'Name'} . "\t" . $registry{'Val64'} . "\t" . $registry{'Component_'} . "\n"; + + if ( ! ( $style =~ /\bX64_ONLY\b/ )) { push(@registrytable, $oneline); } # standard registry table for 32 Bit + if (( $style =~ /\bX64\b/ ) || ( $style =~ /\bX64_ONLY\b/ )) { push(@reg64table , $oneline64); } } # If there are added user registry keys for files collected in @@ -360,6 +388,11 @@ sub create_registry_table installer::files::save_file($registrytablename ,\@registrytable); my $infoline = "Created idt file: $registrytablename\n"; push(@installer::globals::logfileinfo, $infoline); + + $registrytablename = $basedir . $installer::globals::separator . "Reg64.idt" . "." . $onelanguage; + installer::files::save_file($registrytablename ,\@reg64table ); + my $infoline = "Created idt file: $registrytablename\n"; + push(@installer::globals::logfileinfo, $infoline); } } |