1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielskipackage installer::windows::property;
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielskiuse installer::exiter;
27*b1cdbd2cSJim Jagielskiuse installer::files;
28*b1cdbd2cSJim Jagielskiuse installer::globals;
29*b1cdbd2cSJim Jagielskiuse installer::windows::idtglobal;
30*b1cdbd2cSJim Jagielskiuse installer::windows::language;
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski#############################################
33*b1cdbd2cSJim Jagielski# Setting the properties dynamically
34*b1cdbd2cSJim Jagielski# for the table Property.idt
35*b1cdbd2cSJim Jagielski#############################################
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielskisub get_arpcomments_for_property_table
38*b1cdbd2cSJim Jagielski{
39*b1cdbd2cSJim Jagielski	my ( $allvariables, $languagestringref ) = @_;
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski	my $name = $allvariables->{'PRODUCTNAME'};
42*b1cdbd2cSJim Jagielski	my $version = $allvariables->{'PRODUCTVERSION'};
43*b1cdbd2cSJim Jagielski	my $comment = $name . " " . $version;
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim Jagielski	my $postversionextension = "";
46*b1cdbd2cSJim Jagielski	if ( $allvariables->{'POSTVERSIONEXTENSION'} )
47*b1cdbd2cSJim Jagielski	{
48*b1cdbd2cSJim Jagielski		$postversionextension = $allvariables->{'POSTVERSIONEXTENSION'};
49*b1cdbd2cSJim Jagielski		$comment = $comment . " " . $postversionextension;
50*b1cdbd2cSJim Jagielski	}
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski	if ( $installer::globals::languagepack ) { $comment = $comment . " " . "Language Pack"; }
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski	if ( $installer::globals::patch )
55*b1cdbd2cSJim Jagielski	{
56*b1cdbd2cSJim Jagielski		if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_arpcomments_for_property_table"); }
57*b1cdbd2cSJim Jagielski		my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'};
58*b1cdbd2cSJim Jagielski		$comment = $comment . " " . $patchstring;
59*b1cdbd2cSJim Jagielski	}
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski	my $languagestring = $$languagestringref;
62*b1cdbd2cSJim Jagielski	$languagestring =~ s/\_/\,/g;
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski	$comment = $comment . " ($languagestring)";
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski	my $localminor = "";
67*b1cdbd2cSJim Jagielski	if ( $installer::globals::updatepack ) { $localminor = $installer::globals::lastminor; }
68*b1cdbd2cSJim Jagielski	else { $localminor = $installer::globals::minor; }
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski	my $buildidstring = "(" . $installer::globals::build . $localminor . "(Build:" . $installer::globals::buildid . "))";
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski	# the environment variable CWS_WORK_STAMP is set only in CWS
73*b1cdbd2cSJim Jagielski	if ( $ENV{'CWS_WORK_STAMP'} ) { $buildidstring = $buildidstring . "\[CWS\:" . $ENV{'CWS_WORK_STAMP'} . "\]"; }
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski	$comment = $comment . " " . $buildidstring;
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski	return $comment;
78*b1cdbd2cSJim Jagielski}
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielskisub get_installlevel_for_property_table
81*b1cdbd2cSJim Jagielski{
82*b1cdbd2cSJim Jagielski	my $installlevel = "100";
83*b1cdbd2cSJim Jagielski	return $installlevel;
84*b1cdbd2cSJim Jagielski}
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielskisub get_ischeckforproductupdates_for_property_table
87*b1cdbd2cSJim Jagielski{
88*b1cdbd2cSJim Jagielski	my $ischeckforproductupdates = "1";
89*b1cdbd2cSJim Jagielski	return $ischeckforproductupdates;
90*b1cdbd2cSJim Jagielski}
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielskisub get_manufacturer_for_property_table
93*b1cdbd2cSJim Jagielski{
94*b1cdbd2cSJim Jagielski	return $installer::globals::manufacturer;
95*b1cdbd2cSJim Jagielski}
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielskisub get_productlanguage_for_property_table
98*b1cdbd2cSJim Jagielski{
99*b1cdbd2cSJim Jagielski	my ($language) = @_;
100*b1cdbd2cSJim Jagielski	my $windowslanguage = installer::windows::language::get_windows_language($language);
101*b1cdbd2cSJim Jagielski	return $windowslanguage;
102*b1cdbd2cSJim Jagielski}
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielskisub get_language_string
105*b1cdbd2cSJim Jagielski{
106*b1cdbd2cSJim Jagielski	my $langstring = "";
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#installer::globals::languagenames; $i++ )
109*b1cdbd2cSJim Jagielski	{
110*b1cdbd2cSJim Jagielski		$langstring = $langstring . $installer::globals::languagenames[$i] . ", ";
111*b1cdbd2cSJim Jagielski	}
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski	$langstring =~ s/\,\s*$//;
114*b1cdbd2cSJim Jagielski	$langstring = "(" . $langstring . ")";
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski	return $langstring;
117*b1cdbd2cSJim Jagielski}
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielskisub get_english_language_string
120*b1cdbd2cSJim Jagielski{
121*b1cdbd2cSJim Jagielski	my $langstring = "";
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski	# Sorting value not keys, therefore collecting all values
124*b1cdbd2cSJim Jagielski	my %helper = ();
125*b1cdbd2cSJim Jagielski	foreach my $lang ( keys %installer::globals::all_required_english_languagestrings )
126*b1cdbd2cSJim Jagielski	{
127*b1cdbd2cSJim Jagielski		$helper{$installer::globals::all_required_english_languagestrings{$lang}} = 1;
128*b1cdbd2cSJim Jagielski	}
129*b1cdbd2cSJim Jagielski
130*b1cdbd2cSJim Jagielski	foreach my $lang ( sort keys %helper )
131*b1cdbd2cSJim Jagielski	{
132*b1cdbd2cSJim Jagielski		$langstring = $langstring . $lang . ", ";
133*b1cdbd2cSJim Jagielski	}
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski	$langstring =~ s/\,\s*$//;
136*b1cdbd2cSJim Jagielski	$langstring = "(" . $langstring . ")";
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski	return $langstring;
139*b1cdbd2cSJim Jagielski}
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielskisub get_productname_for_property_table
142*b1cdbd2cSJim Jagielski{
143*b1cdbd2cSJim Jagielski	my ( $allvariables ) = @_;
144*b1cdbd2cSJim Jagielski
145*b1cdbd2cSJim Jagielski	my $name = $allvariables->{'PRODUCTNAME'};
146*b1cdbd2cSJim Jagielski	my $version = $allvariables->{'PRODUCTVERSION'};
147*b1cdbd2cSJim Jagielski	my $productname = $name . " " . $version;
148*b1cdbd2cSJim Jagielski
149*b1cdbd2cSJim Jagielski	my $postversionextension = "";
150*b1cdbd2cSJim Jagielski	if ( $allvariables->{'POSTVERSIONEXTENSION'} )
151*b1cdbd2cSJim Jagielski	{
152*b1cdbd2cSJim Jagielski		$postversionextension = $allvariables->{'POSTVERSIONEXTENSION'};
153*b1cdbd2cSJim Jagielski		$productname = $productname . " " . $postversionextension;
154*b1cdbd2cSJim Jagielski	}
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim Jagielski	my $productextension = "";
157*b1cdbd2cSJim Jagielski	if ( $allvariables->{'PRODUCTEXTENSION'} )
158*b1cdbd2cSJim Jagielski	{
159*b1cdbd2cSJim Jagielski		$productextension = $allvariables->{'PRODUCTEXTENSION'};
160*b1cdbd2cSJim Jagielski		$productname = $productname . " " . $productextension;
161*b1cdbd2cSJim Jagielski	}
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski	if ( $installer::globals::languagepack )
164*b1cdbd2cSJim Jagielski	{
165*b1cdbd2cSJim Jagielski		# my $langstring = get_language_string();	# Example (English, Deutsch)
166*b1cdbd2cSJim Jagielski		my $langstring = get_english_language_string(); # New: (English, German)
167*b1cdbd2cSJim Jagielski		$productname = $name . " " . $version . " Language Pack" . " " . $langstring;
168*b1cdbd2cSJim Jagielski	}
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski	if ( $installer::globals::patch )
171*b1cdbd2cSJim Jagielski	{
172*b1cdbd2cSJim Jagielski		if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_productname_for_property_table"); }
173*b1cdbd2cSJim Jagielski		my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'};
174*b1cdbd2cSJim Jagielski		$productname = $productname . " " . $patchstring;
175*b1cdbd2cSJim Jagielski	}
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski	# Saving this name in hash $allvariables for further usage
178*b1cdbd2cSJim Jagielski	$allvariables->{'PROPERTYTABLEPRODUCTNAME'} = $productname;
179*b1cdbd2cSJim Jagielski	my $infoline = "Defined variable PROPERTYTABLEPRODUCTNAME: $productname\n";
180*b1cdbd2cSJim Jagielski	$installer::logger::Lang->print($infoline);
181*b1cdbd2cSJim Jagielski
182*b1cdbd2cSJim Jagielski	return $productname;
183*b1cdbd2cSJim Jagielski}
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielskisub get_quickstarterlinkname_for_property_table
186*b1cdbd2cSJim Jagielski{
187*b1cdbd2cSJim Jagielski	my ( $allvariables ) = @_;
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim Jagielski	# no usage of POSTVERSIONEXTENSION for Quickstarter link name!
190*b1cdbd2cSJim Jagielski
191*b1cdbd2cSJim Jagielski	my $name = $allvariables->{'PRODUCTNAME'};
192*b1cdbd2cSJim Jagielski	my $version = $allvariables->{'PRODUCTVERSION'};
193*b1cdbd2cSJim Jagielski	my $quickstartername = $name . " " . $version;
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski	my $infoline = "Defined Quickstarter Link name: $quickstartername\n";
196*b1cdbd2cSJim Jagielski	$installer::logger::Lang->print($infoline);
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski	return $quickstartername;
199*b1cdbd2cSJim Jagielski}
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielskisub get_productversion_for_property_table
202*b1cdbd2cSJim Jagielski{
203*b1cdbd2cSJim Jagielski	return $installer::globals::msiproductversion;
204*b1cdbd2cSJim Jagielski}
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski#######################################################
207*b1cdbd2cSJim Jagielski# Setting all feature names as Properties. This is
208*b1cdbd2cSJim Jagielski# required for the Windows patch process.
209*b1cdbd2cSJim Jagielski#######################################################
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielskisub set_featurename_properties_for_patch ($)
212*b1cdbd2cSJim Jagielski{
213*b1cdbd2cSJim Jagielski	my ($propertyfile) = @_;
214*b1cdbd2cSJim Jagielski
215*b1cdbd2cSJim Jagielski	foreach my $feature_gid (keys %installer::globals::featurecollector)
216*b1cdbd2cSJim Jagielski	{
217*b1cdbd2cSJim Jagielski		push @$propertyfile, $feature_gid . "\t" . "1" . "\n";
218*b1cdbd2cSJim Jagielski	}
219*b1cdbd2cSJim Jagielski}
220*b1cdbd2cSJim Jagielski
221*b1cdbd2cSJim Jagielski#######################################################
222*b1cdbd2cSJim Jagielski# Setting some important properties
223*b1cdbd2cSJim Jagielski# (for finding the product in deinstallation process)
224*b1cdbd2cSJim Jagielski#######################################################
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielskisub set_important_properties
227*b1cdbd2cSJim Jagielski{
228*b1cdbd2cSJim Jagielski	my ($propertyfile, $allvariables, $languagestringref) = @_;
229*b1cdbd2cSJim Jagielski
230*b1cdbd2cSJim Jagielski	# Setting new variables with the content of %PRODUCTNAME and %PRODUCTVERSION
231*b1cdbd2cSJim Jagielski	if ( $allvariables->{'PRODUCTNAME'} )
232*b1cdbd2cSJim Jagielski	{
233*b1cdbd2cSJim Jagielski		my $onepropertyline =  "DEFINEDPRODUCT" . "\t" . $allvariables->{'PRODUCTNAME'} . "\n";
234*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
235*b1cdbd2cSJim Jagielski	}
236*b1cdbd2cSJim Jagielski
237*b1cdbd2cSJim Jagielski	if ( $allvariables->{'PRODUCTVERSION'} )
238*b1cdbd2cSJim Jagielski	{
239*b1cdbd2cSJim Jagielski		my $onepropertyline = "DEFINEDVERSION" . "\t" . $allvariables->{'PRODUCTVERSION'} . "\n";
240*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
241*b1cdbd2cSJim Jagielski	}
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski	if (( $allvariables->{'PRODUCTNAME'} ) && ( $allvariables->{'PRODUCTVERSION'} ) && ( $allvariables->{'MANUFACTURER'} ) && ( $allvariables->{'PRODUCTCODE'} ))
244*b1cdbd2cSJim Jagielski	{
245*b1cdbd2cSJim Jagielski		my $onepropertyline = "FINDPRODUCT" . "\t" . "Software\\" . $allvariables->{'MANUFACTURER'} . "\\" . $allvariables->{'PRODUCTNAME'} . $allvariables->{'PRODUCTADDON'} . "\\" . $allvariables->{'PRODUCTVERSION'} . "\\" . $allvariables->{'PRODUCTCODE'} . "\n";
246*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
247*b1cdbd2cSJim Jagielski	}
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielski	if ( $allvariables->{'PRODUCTMAJOR'} )
250*b1cdbd2cSJim Jagielski	{
251*b1cdbd2cSJim Jagielski		my $onepropertyline = "PRODUCTMAJOR" . "\t" . $allvariables->{'PRODUCTMAJOR'} . "\n";
252*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
253*b1cdbd2cSJim Jagielski	}
254*b1cdbd2cSJim Jagielski
255*b1cdbd2cSJim Jagielski	if ( $allvariables->{'PRODUCTMINOR'} )
256*b1cdbd2cSJim Jagielski	{
257*b1cdbd2cSJim Jagielski		my $onepropertyline = "PRODUCTMINOR" . "\t" . $allvariables->{'PRODUCTMINOR'} . "\n";
258*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
259*b1cdbd2cSJim Jagielski	}
260*b1cdbd2cSJim Jagielski
261*b1cdbd2cSJim Jagielski	if ( $allvariables->{'PRODUCTBUILDID'} )
262*b1cdbd2cSJim Jagielski	{
263*b1cdbd2cSJim Jagielski		my $onepropertyline = "PRODUCTBUILDID" . "\t" . $allvariables->{'PRODUCTBUILDID'} . "\n";
264*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
265*b1cdbd2cSJim Jagielski	}
266*b1cdbd2cSJim Jagielski
267*b1cdbd2cSJim Jagielski	if ( $allvariables->{'OOOBASEVERSION'} )
268*b1cdbd2cSJim Jagielski	{
269*b1cdbd2cSJim Jagielski		my $onepropertyline = "OOOBASEVERSION" . "\t" . $allvariables->{'OOOBASEVERSION'} . "\n";
270*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
271*b1cdbd2cSJim Jagielski	}
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski	if ( $allvariables->{'URELAYERVERSION'} )
274*b1cdbd2cSJim Jagielski	{
275*b1cdbd2cSJim Jagielski		my $onepropertyline = "URELAYERVERSION" . "\t" . $allvariables->{'URELAYERVERSION'} . "\n";
276*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
277*b1cdbd2cSJim Jagielski	}
278*b1cdbd2cSJim Jagielski
279*b1cdbd2cSJim Jagielski	if ( $allvariables->{'BRANDPACKAGEVERSION'} )
280*b1cdbd2cSJim Jagielski	{
281*b1cdbd2cSJim Jagielski		my $onepropertyline = "BRANDPACKAGEVERSION" . "\t" . $allvariables->{'BRANDPACKAGEVERSION'} . "\n";
282*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
283*b1cdbd2cSJim Jagielski	}
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski	if ( $allvariables->{'BASISROOTNAME'} )
286*b1cdbd2cSJim Jagielski	{
287*b1cdbd2cSJim Jagielski		my $onepropertyline = "BASISROOTNAME" . "\t" . $allvariables->{'BASISROOTNAME'} . "\n";
288*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
289*b1cdbd2cSJim Jagielski	}
290*b1cdbd2cSJim Jagielski
291*b1cdbd2cSJim Jagielski	if ( $allvariables->{'EXCLUDE_FROM_REBASE'} )
292*b1cdbd2cSJim Jagielski	{
293*b1cdbd2cSJim Jagielski		my $onepropertyline =  "EXCLUDE_FROM_REBASE" . "\t" . $allvariables->{'EXCLUDE_FROM_REBASE'} . "\n";
294*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
295*b1cdbd2cSJim Jagielski	}
296*b1cdbd2cSJim Jagielski
297*b1cdbd2cSJim Jagielski	if ( $allvariables->{'PREREQUIREDPATCH'} )
298*b1cdbd2cSJim Jagielski	{
299*b1cdbd2cSJim Jagielski		my $onepropertyline = "PREREQUIREDPATCH" . "\t" . $allvariables->{'PREREQUIREDPATCH'} . "\n";
300*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
301*b1cdbd2cSJim Jagielski	}
302*b1cdbd2cSJim Jagielski
303*b1cdbd2cSJim Jagielski    my $onepropertyline = "IGNOREPREREQUIREDPATCH" . "\t" . "1" . "\n";
304*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, $onepropertyline);
305*b1cdbd2cSJim Jagielski
306*b1cdbd2cSJim Jagielski    $onepropertyline = "DONTOPTIMIZELIBS" . "\t" . "0" . "\n";
307*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, $onepropertyline);
308*b1cdbd2cSJim Jagielski
309*b1cdbd2cSJim Jagielski	if ( $installer::globals::officedirhostname )
310*b1cdbd2cSJim Jagielski	{
311*b1cdbd2cSJim Jagielski		my $onepropertyline = "OFFICEDIRHOSTNAME" . "\t" . $installer::globals::officedirhostname . "\n";
312*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
313*b1cdbd2cSJim Jagielski
314*b1cdbd2cSJim Jagielski		my $localofficedirhostname = $installer::globals::officedirhostname;
315*b1cdbd2cSJim Jagielski		$localofficedirhostname =~ s/\//\\/g;
316*b1cdbd2cSJim Jagielski		$onepropertyline = "OFFICEDIRHOSTNAME_" . "\t" . $localofficedirhostname . "\n";
317*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
318*b1cdbd2cSJim Jagielski	}
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski	if ( $installer::globals::desktoplinkexists )
321*b1cdbd2cSJim Jagielski	{
322*b1cdbd2cSJim Jagielski		my $onepropertyline = "DESKTOPLINKEXISTS" . "\t" . "1" . "\n";
323*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
324*b1cdbd2cSJim Jagielski
325*b1cdbd2cSJim Jagielski		$onepropertyline = "CREATEDESKTOPLINK" . "\t" . "1" . "\n";	# Setting the default
326*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
327*b1cdbd2cSJim Jagielski	}
328*b1cdbd2cSJim Jagielski
329*b1cdbd2cSJim Jagielski	if ( $installer::globals::patch )
330*b1cdbd2cSJim Jagielski	{
331*b1cdbd2cSJim Jagielski		my $onepropertyline = "ISPATCH" . "\t" . "1" . "\n";
332*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
333*b1cdbd2cSJim Jagielski
334*b1cdbd2cSJim Jagielski		$onepropertyline = "SETUP_USED" . "\t" . "0" . "\n";
335*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
336*b1cdbd2cSJim Jagielski	}
337*b1cdbd2cSJim Jagielski
338*b1cdbd2cSJim Jagielski	if ( $installer::globals::languagepack )
339*b1cdbd2cSJim Jagielski	{
340*b1cdbd2cSJim Jagielski		my $onepropertyline = "ISLANGUAGEPACK" . "\t" . "1" . "\n";
341*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
342*b1cdbd2cSJim Jagielski	}
343*b1cdbd2cSJim Jagielski
344*b1cdbd2cSJim Jagielski	my $languagesline = "PRODUCTALLLANGUAGES" . "\t" . $$languagestringref . "\n";
345*b1cdbd2cSJim Jagielski	push(@{$propertyfile}, $languagesline);
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim Jagielski	if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'}  eq "Beta" ))
348*b1cdbd2cSJim Jagielski	{
349*b1cdbd2cSJim Jagielski		# my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n";
350*b1cdbd2cSJim Jagielski		# push(@{$propertyfile}, $registryline);
351*b1cdbd2cSJim Jagielski		my $betainfoline = "BETAPRODUCT" . "\t" . "1" . "\n";
352*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $betainfoline);
353*b1cdbd2cSJim Jagielski	}
354*b1cdbd2cSJim Jagielski	elsif ( $allvariables->{'DEVELOPMENTPRODUCT'} )
355*b1cdbd2cSJim Jagielski	{
356*b1cdbd2cSJim Jagielski		my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n";
357*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $registryline);
358*b1cdbd2cSJim Jagielski	}
359*b1cdbd2cSJim Jagielski	else
360*b1cdbd2cSJim Jagielski	{
361*b1cdbd2cSJim Jagielski		my $registryline = "WRITE_REGISTRY" . "\t" . "1" . "\n";	# Default: Write complete registry
362*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $registryline);
363*b1cdbd2cSJim Jagielski	}
364*b1cdbd2cSJim Jagielski
365*b1cdbd2cSJim Jagielski	# Adding also used tree conditions for multilayer products.
366*b1cdbd2cSJim Jagielski	# These are saved in %installer::globals::usedtreeconditions
367*b1cdbd2cSJim Jagielski	foreach my $treecondition (keys %installer::globals::usedtreeconditions)
368*b1cdbd2cSJim Jagielski	{
369*b1cdbd2cSJim Jagielski		my $onepropertyline = $treecondition . "\t" . "1" . "\n";
370*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
371*b1cdbd2cSJim Jagielski	}
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim Jagielski	# No more license dialog for selected products
374*b1cdbd2cSJim Jagielski	if ( $allvariables->{'HIDELICENSEDIALOG'} )
375*b1cdbd2cSJim Jagielski	{
376*b1cdbd2cSJim Jagielski		my $onepropertyline = "HIDEEULA" . "\t" . "1" . "\n";
377*b1cdbd2cSJim Jagielski
378*b1cdbd2cSJim Jagielski		my $already_defined = 0;
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski		for ( my $i = 0; $i <= $#{$propertyfile}; $i++ )
381*b1cdbd2cSJim Jagielski		{
382*b1cdbd2cSJim Jagielski			if ( ${$propertyfile}[$i] =~ /^\s*HIDEEULA\t/ )
383*b1cdbd2cSJim Jagielski			{
384*b1cdbd2cSJim Jagielski				${$propertyfile}[$i] = $onepropertyline;
385*b1cdbd2cSJim Jagielski				$already_defined = 1;
386*b1cdbd2cSJim Jagielski				last;
387*b1cdbd2cSJim Jagielski			}
388*b1cdbd2cSJim Jagielski		}
389*b1cdbd2cSJim Jagielski
390*b1cdbd2cSJim Jagielski		if ( ! $already_defined )
391*b1cdbd2cSJim Jagielski		{
392*b1cdbd2cSJim Jagielski			push(@{$propertyfile}, $onepropertyline);
393*b1cdbd2cSJim Jagielski		}
394*b1cdbd2cSJim Jagielski	}
395*b1cdbd2cSJim Jagielski
396*b1cdbd2cSJim Jagielski	# Setting .NET requirements
397*b1cdbd2cSJim Jagielski	if ( $installer::globals::required_dotnet_version ne "" )
398*b1cdbd2cSJim Jagielski	{
399*b1cdbd2cSJim Jagielski		my $onepropertyline = "REQUIRED_DOTNET_VERSION" . "\t" . $installer::globals::required_dotnet_version . "\n";
400*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
401*b1cdbd2cSJim Jagielski
402*b1cdbd2cSJim Jagielski		$onepropertyline = "DOTNET_SUFFICIENT" . "\t" . "1" . "\n";	# default value for found .NET
403*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
404*b1cdbd2cSJim Jagielski	}
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski}
407*b1cdbd2cSJim Jagielski
408*b1cdbd2cSJim Jagielski#######################################################
409*b1cdbd2cSJim Jagielski# Setting properties needed for ms file type registration
410*b1cdbd2cSJim Jagielski#######################################################
411*b1cdbd2cSJim Jagielski
412*b1cdbd2cSJim Jagielskisub set_ms_file_types_properties
413*b1cdbd2cSJim Jagielski{
414*b1cdbd2cSJim Jagielski	my ($propertyfile) = @_;
415*b1cdbd2cSJim Jagielski
416*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_PPS"  . "\t" . "0" . "\n");
417*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_PPSX" . "\t" . "0" . "\n");
418*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_PPSM" . "\t" . "0" . "\n");
419*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_PPAM" . "\t" . "0" . "\n");
420*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_PPT"  . "\t" . "0" . "\n");
421*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_PPTX" . "\t" . "0" . "\n");
422*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_PPTM" . "\t" . "0" . "\n");
423*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_POT"  . "\t" . "0" . "\n");
424*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_POTX" . "\t" . "0" . "\n");
425*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_POTM" . "\t" . "0" . "\n");
426*b1cdbd2cSJim Jagielski
427*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_DOC"  . "\t" . "0" . "\n");
428*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_DOCX" . "\t" . "0" . "\n");
429*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_DOCM" . "\t" . "0" . "\n");
430*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_DOT"  . "\t" . "0" . "\n");
431*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_DOTX" . "\t" . "0" . "\n");
432*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_DOTM" . "\t" . "0" . "\n");
433*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_RTF"  . "\t" . "0" . "\n");
434*b1cdbd2cSJim Jagielski
435*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLS"  . "\t" . "0" . "\n");
436*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLSX" . "\t" . "0" . "\n");
437*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLSM" . "\t" . "0" . "\n");
438*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLSB" . "\t" . "0" . "\n");
439*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLAM" . "\t" . "0" . "\n");
440*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLT"  . "\t" . "0" . "\n");
441*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLTX" . "\t" . "0" . "\n");
442*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_XLTM" . "\t" . "0" . "\n");
443*b1cdbd2cSJim Jagielski
444*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_NO_MSO_TYPES"  . "\t" . "0" . "\n");
445*b1cdbd2cSJim Jagielski    push(@{$propertyfile}, "REGISTER_ALL_MSO_TYPES"  . "\t" . "0" . "\n");
446*b1cdbd2cSJim Jagielski}
447*b1cdbd2cSJim Jagielski
448*b1cdbd2cSJim Jagielski####################################################################################
449*b1cdbd2cSJim Jagielski# Updating the file Property.idt dynamically
450*b1cdbd2cSJim Jagielski# Content:
451*b1cdbd2cSJim Jagielski# Property Value
452*b1cdbd2cSJim Jagielski####################################################################################
453*b1cdbd2cSJim Jagielski
454*b1cdbd2cSJim Jagielskisub update_property_table
455*b1cdbd2cSJim Jagielski{
456*b1cdbd2cSJim Jagielski	my ($basedir, $language, $allvariables, $languagestringref) = @_;
457*b1cdbd2cSJim Jagielski
458*b1cdbd2cSJim Jagielski	my $properyfilename = $basedir . $installer::globals::separator . "Property.idt";
459*b1cdbd2cSJim Jagielski
460*b1cdbd2cSJim Jagielski	my $propertyfile = installer::files::read_file($properyfilename);
461*b1cdbd2cSJim Jagielski
462*b1cdbd2cSJim Jagielski	# Getting the new values
463*b1cdbd2cSJim Jagielski	# Some values (arpcomments, arpcontacts, ...) are inserted from the Property.mlf
464*b1cdbd2cSJim Jagielski
465*b1cdbd2cSJim Jagielski	my $arpcomments = get_arpcomments_for_property_table($allvariables, $languagestringref);
466*b1cdbd2cSJim Jagielski	my $installlevel = get_installlevel_for_property_table();
467*b1cdbd2cSJim Jagielski	my $ischeckforproductupdates = get_ischeckforproductupdates_for_property_table();
468*b1cdbd2cSJim Jagielski	my $manufacturer = $allvariables->{'OOOVENDOR'};
469*b1cdbd2cSJim Jagielski	my $productlanguage = get_productlanguage_for_property_table($language);
470*b1cdbd2cSJim Jagielski	my $productname = get_productname_for_property_table($allvariables);
471*b1cdbd2cSJim Jagielski	my $productversion = get_productversion_for_property_table();
472*b1cdbd2cSJim Jagielski	my $quickstarterlinkname = get_quickstarterlinkname_for_property_table($allvariables);
473*b1cdbd2cSJim Jagielski
474*b1cdbd2cSJim Jagielski	# Updating the values
475*b1cdbd2cSJim Jagielski
476*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$propertyfile}; $i++ )
477*b1cdbd2cSJim Jagielski	{
478*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bARPCOMMENTSTEMPLATE\b/$arpcomments/;
479*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bINSTALLLEVELTEMPLATE\b/$installlevel/;
480*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bISCHECKFORPRODUCTUPDATESTEMPLATE\b/$ischeckforproductupdates/;
481*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bMANUFACTURERTEMPLATE\b/$manufacturer/;
482*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bPRODUCTLANGUAGETEMPLATE\b/$productlanguage/;
483*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bPRODUCTNAMETEMPLATE\b/$productname/;
484*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bPRODUCTVERSIONTEMPLATE\b/$productversion/;
485*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bQUICKSTARTERLINKNAMETEMPLATE\b/$quickstarterlinkname/;
486*b1cdbd2cSJim Jagielski	}
487*b1cdbd2cSJim Jagielski
488*b1cdbd2cSJim Jagielski	# Setting variables into propertytable
489*b1cdbd2cSJim Jagielski	set_important_properties($propertyfile, $allvariables, $languagestringref);
490*b1cdbd2cSJim Jagielski
491*b1cdbd2cSJim Jagielski	# Setting feature names as properties for Windows patch mechanism
492*b1cdbd2cSJim Jagielski	if ( $installer::globals::patch ) { set_featurename_properties_for_patch($propertyfile); }
493*b1cdbd2cSJim Jagielski
494*b1cdbd2cSJim Jagielski	# Setting variables for register for ms file types
495*b1cdbd2cSJim Jagielski	set_ms_file_types_properties($propertyfile);
496*b1cdbd2cSJim Jagielski
497*b1cdbd2cSJim Jagielski	# Saving the file
498*b1cdbd2cSJim Jagielski
499*b1cdbd2cSJim Jagielski	installer::files::save_file($properyfilename ,$propertyfile);
500*b1cdbd2cSJim Jagielski	my $infoline = "Updated idt file: $properyfilename\n";
501*b1cdbd2cSJim Jagielski	$installer::logger::Lang->print($infoline);
502*b1cdbd2cSJim Jagielski
503*b1cdbd2cSJim Jagielski}
504*b1cdbd2cSJim Jagielski
505*b1cdbd2cSJim Jagielski####################################################################################
506*b1cdbd2cSJim Jagielski# Setting language specific Properties in file Property.idt dynamically
507*b1cdbd2cSJim Jagielski# Adding:
508*b1cdbd2cSJim Jagielski# is1033 = 1
509*b1cdbd2cSJim Jagielski# isMulti = 1
510*b1cdbd2cSJim Jagielski####################################################################################
511*b1cdbd2cSJim Jagielski
512*b1cdbd2cSJim Jagielskisub set_languages_in_property_table
513*b1cdbd2cSJim Jagielski{
514*b1cdbd2cSJim Jagielski	my ($basedir, $languagesarrayref) = @_;
515*b1cdbd2cSJim Jagielski
516*b1cdbd2cSJim Jagielski	my $properyfilename = $basedir . $installer::globals::separator . "Property.idt";
517*b1cdbd2cSJim Jagielski	my $propertyfile = installer::files::read_file($properyfilename);
518*b1cdbd2cSJim Jagielski
519*b1cdbd2cSJim Jagielski	# Setting the component properties saved in %installer::globals::languageproperties
520*b1cdbd2cSJim Jagielski	foreach my $localproperty ( keys %installer::globals::languageproperties )
521*b1cdbd2cSJim Jagielski	{
522*b1cdbd2cSJim Jagielski		$onepropertyline =  $localproperty . "\t" . $installer::globals::languageproperties{$localproperty} . "\n";
523*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
524*b1cdbd2cSJim Jagielski	}
525*b1cdbd2cSJim Jagielski
526*b1cdbd2cSJim Jagielski	# Setting the info about multilingual installation in property "isMulti"
527*b1cdbd2cSJim Jagielski
528*b1cdbd2cSJim Jagielski	my $propertyname = "isMulti";
529*b1cdbd2cSJim Jagielski	my $ismultivalue = 0;
530*b1cdbd2cSJim Jagielski
531*b1cdbd2cSJim Jagielski	if ( $installer::globals::ismultilingual ) { $ismultivalue = 1; }
532*b1cdbd2cSJim Jagielski
533*b1cdbd2cSJim Jagielski	my $onepropertyline =  $propertyname . "\t" . $ismultivalue . "\n";
534*b1cdbd2cSJim Jagielski	push(@{$propertyfile}, $onepropertyline);
535*b1cdbd2cSJim Jagielski
536*b1cdbd2cSJim Jagielski	# setting the ARPPRODUCTICON
537*b1cdbd2cSJim Jagielski
538*b1cdbd2cSJim Jagielski	if ($installer::globals::sofficeiconadded)	# set in shortcut.pm
539*b1cdbd2cSJim Jagielski	{
540*b1cdbd2cSJim Jagielski		$onepropertyline =  "ARPPRODUCTICON" . "\t" . "soffice.ico" . "\n";
541*b1cdbd2cSJim Jagielski		push(@{$propertyfile}, $onepropertyline);
542*b1cdbd2cSJim Jagielski	}
543*b1cdbd2cSJim Jagielski
544*b1cdbd2cSJim Jagielski	# Saving the file
545*b1cdbd2cSJim Jagielski
546*b1cdbd2cSJim Jagielski	installer::files::save_file($properyfilename ,$propertyfile);
547*b1cdbd2cSJim Jagielski	my $infoline = "Added language content into idt file: $properyfilename\n";
548*b1cdbd2cSJim Jagielski	$installer::logger::Lang->print($infoline);
549*b1cdbd2cSJim Jagielski
550*b1cdbd2cSJim Jagielski}
551*b1cdbd2cSJim Jagielski
552*b1cdbd2cSJim Jagielski############################################################
553*b1cdbd2cSJim Jagielski# Setting the ProductCode and the UpgradeCode
554*b1cdbd2cSJim Jagielski# into the Property table. Both have to be stored
555*b1cdbd2cSJim Jagielski# in the global file $installer::globals::codefilename
556*b1cdbd2cSJim Jagielski############################################################
557*b1cdbd2cSJim Jagielski
558*b1cdbd2cSJim Jagielskisub set_codes_in_property_table
559*b1cdbd2cSJim Jagielski{
560*b1cdbd2cSJim Jagielski	my ($basedir) = @_;
561*b1cdbd2cSJim Jagielski
562*b1cdbd2cSJim Jagielski	# Reading the property file
563*b1cdbd2cSJim Jagielski
564*b1cdbd2cSJim Jagielski	my $properyfilename = $basedir . $installer::globals::separator . "Property.idt";
565*b1cdbd2cSJim Jagielski	my $propertyfile = installer::files::read_file($properyfilename);
566*b1cdbd2cSJim Jagielski
567*b1cdbd2cSJim Jagielski	# Updating the values
568*b1cdbd2cSJim Jagielski
569*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$propertyfile}; $i++ )
570*b1cdbd2cSJim Jagielski	{
571*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bPRODUCTCODETEMPLATE\b/$installer::globals::productcode/;
572*b1cdbd2cSJim Jagielski		${$propertyfile}[$i] =~ s/\bUPGRADECODETEMPLATE\b/$installer::globals::upgradecode/;
573*b1cdbd2cSJim Jagielski	}
574*b1cdbd2cSJim Jagielski
575*b1cdbd2cSJim Jagielski	# Saving the property file
576*b1cdbd2cSJim Jagielski
577*b1cdbd2cSJim Jagielski	installer::files::save_file($properyfilename ,$propertyfile);
578*b1cdbd2cSJim Jagielski	my $infoline = "Added language content into idt file: $properyfilename\n";
579*b1cdbd2cSJim Jagielski	$installer::logger::Lang->print($infoline);
580*b1cdbd2cSJim Jagielski
581*b1cdbd2cSJim Jagielski}
582*b1cdbd2cSJim Jagielski
583*b1cdbd2cSJim Jagielski############################################################
584*b1cdbd2cSJim Jagielski# Setting the variable REGKEYPRODPATH, that is used
585*b1cdbd2cSJim Jagielski# by the language packs.
586*b1cdbd2cSJim Jagielski############################################################
587*b1cdbd2cSJim Jagielski
588*b1cdbd2cSJim Jagielskisub set_regkeyprodpath_in_property_table
589*b1cdbd2cSJim Jagielski{
590*b1cdbd2cSJim Jagielski	my ($basedir, , $allvariables) = @_;
591*b1cdbd2cSJim Jagielski
592*b1cdbd2cSJim Jagielski	# Reading the property file
593*b1cdbd2cSJim Jagielski
594*b1cdbd2cSJim Jagielski	my $properyfilename = $basedir . $installer::globals::separator . "Property.idt";
595*b1cdbd2cSJim Jagielski	my $propertyfile = installer::files::read_file($properyfilename);
596*b1cdbd2cSJim Jagielski
597*b1cdbd2cSJim Jagielski	my $name = $allvariables->{'PRODUCTNAME'};
598*b1cdbd2cSJim Jagielski	my $version = $allvariables->{'PRODUCTVERSION'};
599*b1cdbd2cSJim Jagielski
600*b1cdbd2cSJim Jagielski	my $onepropertyline = "REGKEYPRODPATH" . "\t" . "Software" . "\\" . $installer::globals::manufacturer . "\\". $name;
601*b1cdbd2cSJim Jagielski
602*b1cdbd2cSJim Jagielski	push(@{$propertyfile}, $onepropertyline);
603*b1cdbd2cSJim Jagielski
604*b1cdbd2cSJim Jagielski	# Saving the property file
605*b1cdbd2cSJim Jagielski
606*b1cdbd2cSJim Jagielski	installer::files::save_file($properyfilename ,$propertyfile);
607*b1cdbd2cSJim Jagielski	my $infoline = "Added language content into idt file: $properyfilename\n";
608*b1cdbd2cSJim Jagielski	$installer::logger::Lang->print($infoline);
609*b1cdbd2cSJim Jagielski
610*b1cdbd2cSJim Jagielski}
611*b1cdbd2cSJim Jagielski
612*b1cdbd2cSJim Jagielski############################################################
613*b1cdbd2cSJim Jagielski# Changing default for MS file type registration
614*b1cdbd2cSJim Jagielski# in Beta products.
615*b1cdbd2cSJim Jagielski############################################################
616*b1cdbd2cSJim Jagielski
617*b1cdbd2cSJim Jagielskisub update_checkbox_table
618*b1cdbd2cSJim Jagielski{
619*b1cdbd2cSJim Jagielski	my ($basedir, $allvariables) = @_;
620*b1cdbd2cSJim Jagielski
621*b1cdbd2cSJim Jagielski	if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'}  eq "Beta" ))
622*b1cdbd2cSJim Jagielski	{
623*b1cdbd2cSJim Jagielski		my $checkboxfilename = $basedir . $installer::globals::separator . "CheckBox.idt";
624*b1cdbd2cSJim Jagielski
625*b1cdbd2cSJim Jagielski		if ( -f $checkboxfilename )
626*b1cdbd2cSJim Jagielski		{
627*b1cdbd2cSJim Jagielski			my $checkboxfile = installer::files::read_file($checkboxfilename);
628*b1cdbd2cSJim Jagielski
629*b1cdbd2cSJim Jagielski			my $checkboxline = "SELECT_WORD" . "\t" . "0" . "\n";
630*b1cdbd2cSJim Jagielski			push(@{$checkboxfile}, $checkboxline);
631*b1cdbd2cSJim Jagielski			$checkboxline = "SELECT_EXCEL" . "\t" . "0" . "\n";
632*b1cdbd2cSJim Jagielski			push(@{$checkboxfile}, $checkboxline);
633*b1cdbd2cSJim Jagielski			$checkboxline = "SELECT_POWERPOINT" . "\t" . "0" . "\n";
634*b1cdbd2cSJim Jagielski			push(@{$checkboxfile}, $checkboxline);
635*b1cdbd2cSJim Jagielski
636*b1cdbd2cSJim Jagielski			# Saving the property file
637*b1cdbd2cSJim Jagielski			installer::files::save_file($checkboxfilename ,$checkboxfile);
638*b1cdbd2cSJim Jagielski			my $infoline = "Added ms file type defaults into idt file: $checkboxfilename\n";
639*b1cdbd2cSJim Jagielski			$installer::logger::Lang->print($infoline);
640*b1cdbd2cSJim Jagielski		}
641*b1cdbd2cSJim Jagielski	}
642*b1cdbd2cSJim Jagielski}
643*b1cdbd2cSJim Jagielski
644*b1cdbd2cSJim Jagielski1;
645