summaryrefslogtreecommitdiff
path: root/solenv/bin/modules/installer/windows/registry.pm
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin/modules/installer/windows/registry.pm')
-rw-r--r--solenv/bin/modules/installer/windows/registry.pm35
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);
}
}