1 #*************************************************************************
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 # Copyright 2008 by Sun Microsystems, Inc.
7 # OpenOffice.org - a multi-platform office productivity suite
9 # $RCSfile: property.pm,v $
13 # This file is part of OpenOffice.org.
15 # OpenOffice.org is free software: you can redistribute it and/or modify
16 # it under the terms of the GNU Lesser General Public License version 3
17 # only, as published by the Free Software Foundation.
19 # OpenOffice.org is distributed in the hope that it will be useful,
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 # GNU Lesser General Public License version 3 for more details
23 # (a copy is included in the LICENSE file that accompanied this code).
25 # You should have received a copy of the GNU Lesser General Public License
26 # version 3 along with OpenOffice.org. If not, see
27 # <http://www.openoffice.org/license.html>
28 # for a copy of the LGPLv3 License.
30 #*************************************************************************
32 package installer
::windows
::property
;
34 use installer
::exiter
;
36 use installer
::globals
;
37 use installer
::windows
::idtglobal
;
38 use installer
::windows
::language
;
40 #############################################
41 # Setting the properties dynamically
42 # for the table Property.idt
43 #############################################
45 sub get_arpcomments_for_property_table
47 my ( $allvariables, $languagestringref ) = @_;
49 my $name = $allvariables->{'PRODUCTNAME'};
50 my $version = $allvariables->{'PRODUCTVERSION'};
51 my $comment = $name . " " . $version;
53 my $postversionextension = "";
54 if ( $allvariables->{'POSTVERSIONEXTENSION'} )
56 $postversionextension = $allvariables->{'POSTVERSIONEXTENSION'};
57 $comment = $comment . " " . $postversionextension;
60 if ( $installer::globals
::languagepack
) { $comment = $comment . " " . "Language Pack"; }
62 if ( $installer::globals
::patch
)
64 if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer
::exiter
::exit_program
("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_arpcomments_for_property_table"); }
65 my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'};
66 $comment = $comment . " " . $patchstring;
69 my $languagestring = $$languagestringref;
70 $languagestring =~ s/\_/\,/g;
72 $comment = $comment . " ($languagestring)";
75 if ( $installer::globals
::updatepack
) { $localminor = $installer::globals
::lastminor
; }
76 else { $localminor = $installer::globals
::minor
; }
78 my $buildidstring = "(" . $installer::globals
::build
. $localminor . "(Build:" . $installer::globals
::buildid
. "))";
80 # the environment variable CWS_WORK_STAMP is set only in CWS
81 if ( $ENV{'CWS_WORK_STAMP'} ) { $buildidstring = $buildidstring . "\[CWS\:" . $ENV{'CWS_WORK_STAMP'} . "\]"; }
83 $comment = $comment . " " . $buildidstring;
88 sub get_installlevel_for_property_table
90 my $installlevel = "100";
94 sub get_ischeckforproductupdates_for_property_table
96 my $ischeckforproductupdates = "1";
97 return $ischeckforproductupdates;
100 sub get_manufacturer_for_property_table
102 return $installer::globals
::manufacturer
;
105 sub get_productlanguage_for_property_table
108 my $windowslanguage = installer
::windows
::language
::get_windows_language
($language);
109 return $windowslanguage;
112 sub get_language_string
116 for ( my $i = 0; $i <= $#installer::globals
::languagenames
; $i++ )
118 $langstring = $langstring . $installer::globals
::languagenames
[$i] . ", ";
121 $langstring =~ s/\,\s*$//;
122 $langstring = "(" . $langstring . ")";
127 sub get_english_language_string
131 # Sorting value not keys, therefore collecting all values
133 foreach my $lang ( keys %installer::globals
::all_required_english_languagestrings
)
135 $helper{$installer::globals
::all_required_english_languagestrings
{$lang}} = 1;
138 foreach my $lang ( sort keys %helper )
140 $langstring = $langstring . $lang . ", ";
143 $langstring =~ s/\,\s*$//;
144 $langstring = "(" . $langstring . ")";
149 sub get_productname_for_property_table
151 my ( $allvariables ) = @_;
153 my $name = $allvariables->{'PRODUCTNAME'};
154 my $version = $allvariables->{'PRODUCTVERSION'};
155 my $productname = $name . " " . $version;
157 my $postversionextension = "";
158 if ( $allvariables->{'POSTVERSIONEXTENSION'} )
160 $postversionextension = $allvariables->{'POSTVERSIONEXTENSION'};
161 $productname = $productname . " " . $postversionextension;
164 my $productextension = "";
165 if ( $allvariables->{'PRODUCTEXTENSION'} )
167 $productextension = $allvariables->{'PRODUCTEXTENSION'};
168 $productname = $productname . " " . $productextension;
171 if ( $installer::globals
::languagepack
)
173 # my $langstring = get_language_string(); # Example (English, Deutsch)
174 my $langstring = get_english_language_string
(); # New: (English, German)
175 $productname = $name . " " . $version . " Language Pack" . " " . $langstring;
178 if ( $installer::globals
::patch
)
180 if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer
::exiter
::exit_program
("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_productname_for_property_table"); }
181 my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'};
182 $productname = $productname . " " . $patchstring;
185 # Saving this name in hash $allvariables for further usage
186 $allvariables->{'PROPERTYTABLEPRODUCTNAME'} = $productname;
187 my $infoline = "Defined variable PROPERTYTABLEPRODUCTNAME: $productname\n";
188 push(@installer::globals
::logfileinfo
, $infoline);
193 sub get_quickstarterlinkname_for_property_table
195 my ( $allvariables ) = @_;
197 # no usage of POSTVERSIONEXTENSION for Quickstarter link name!
199 my $name = $allvariables->{'PRODUCTNAME'};
200 my $version = $allvariables->{'PRODUCTVERSION'};
201 my $quickstartername = $name . " " . $version;
203 my $infoline = "Defined Quickstarter Link name: $quickstartername\n";
204 push(@installer::globals
::logfileinfo
, $infoline);
206 return $quickstartername;
209 sub get_productversion_for_property_table
211 return $installer::globals
::msiproductversion
;
214 #######################################################
215 # Setting all feature names as Properties. This is
216 # required for the Windows patch process.
217 #######################################################
219 sub set_featurename_properties_for_patch
221 ($propertyfile) = @_;
223 for ( my $i = 0; $i <= $#installer::globals
::featurecollector
; $i++ )
225 my $onepropertyline = $installer::globals
::featurecollector
[$i] . "\t" . "1" . "\n";
226 push(@
{$propertyfile}, $onepropertyline);
231 #######################################################
232 # Setting some important properties
233 # (for finding the product in deinstallation process)
234 #######################################################
236 sub set_important_properties
238 my ($propertyfile, $allvariables, $languagestringref) = @_;
240 # Setting new variables with the content of %PRODUCTNAME and %PRODUCTVERSION
241 if ( $allvariables->{'PRODUCTNAME'} )
243 my $onepropertyline = "DEFINEDPRODUCT" . "\t" . $allvariables->{'PRODUCTNAME'} . "\n";
244 push(@
{$propertyfile}, $onepropertyline);
247 if ( $allvariables->{'PRODUCTVERSION'} )
249 my $onepropertyline = "DEFINEDVERSION" . "\t" . $allvariables->{'PRODUCTVERSION'} . "\n";
250 push(@
{$propertyfile}, $onepropertyline);
253 if (( $allvariables->{'PRODUCTNAME'} ) && ( $allvariables->{'PRODUCTVERSION'} ) && ( $allvariables->{'MANUFACTURER'} ) && ( $allvariables->{'PRODUCTCODE'} ))
255 my $onepropertyline = "FINDPRODUCT" . "\t" . "Software\\" . $allvariables->{'MANUFACTURER'} . "\\" . $allvariables->{'PRODUCTNAME'} . $allvariables->{'PRODUCTADDON'} . "\\" . $allvariables->{'PRODUCTVERSION'} . "\\" . $allvariables->{'PRODUCTCODE'} . "\n";
256 push(@
{$propertyfile}, $onepropertyline);
259 if ( $allvariables->{'PRODUCTMAJOR'} )
261 my $onepropertyline = "PRODUCTMAJOR" . "\t" . $allvariables->{'PRODUCTMAJOR'} . "\n";
262 push(@
{$propertyfile}, $onepropertyline);
265 if ( $allvariables->{'PRODUCTMINOR'} )
267 my $onepropertyline = "PRODUCTMINOR" . "\t" . $allvariables->{'PRODUCTMINOR'} . "\n";
268 push(@
{$propertyfile}, $onepropertyline);
271 if ( $allvariables->{'PRODUCTBUILDID'} )
273 my $onepropertyline = "PRODUCTBUILDID" . "\t" . $allvariables->{'PRODUCTBUILDID'} . "\n";
274 push(@
{$propertyfile}, $onepropertyline);
277 if ( $allvariables->{'OOOBASEVERSION'} )
279 my $onepropertyline = "OOOBASEVERSION" . "\t" . $allvariables->{'OOOBASEVERSION'} . "\n";
280 push(@
{$propertyfile}, $onepropertyline);
283 if ( $allvariables->{'URELAYERVERSION'} )
285 my $onepropertyline = "URELAYERVERSION" . "\t" . $allvariables->{'URELAYERVERSION'} . "\n";
286 push(@
{$propertyfile}, $onepropertyline);
289 if ( $allvariables->{'BRANDPACKAGEVERSION'} )
291 my $onepropertyline = "BRANDPACKAGEVERSION" . "\t" . $allvariables->{'BRANDPACKAGEVERSION'} . "\n";
292 push(@
{$propertyfile}, $onepropertyline);
295 if ( $allvariables->{'BASISROOTNAME'} )
297 my $onepropertyline = "BASISROOTNAME" . "\t" . $allvariables->{'BASISROOTNAME'} . "\n";
298 push(@
{$propertyfile}, $onepropertyline);
301 if ( $allvariables->{'PREREQUIREDPATCH'} )
303 my $onepropertyline = "PREREQUIREDPATCH" . "\t" . $allvariables->{'PREREQUIREDPATCH'} . "\n";
304 push(@
{$propertyfile}, $onepropertyline);
307 my $onepropertyline = "IGNOREPREREQUIREDPATCH" . "\t" . "1" . "\n";
308 push(@
{$propertyfile}, $onepropertyline);
310 $onepropertyline = "DONTOPTIMIZELIBS" . "\t" . "0" . "\n";
311 push(@
{$propertyfile}, $onepropertyline);
313 if ( $installer::globals
::sundirexists
)
315 my $onepropertyline = "SUNDIREXISTS" . "\t" . "1" . "\n";
316 push(@
{$propertyfile}, $onepropertyline);
319 if ( $installer::globals
::officedirhostname
)
321 my $onepropertyline = "OFFICEDIRHOSTNAME" . "\t" . $installer::globals
::officedirhostname
. "\n";
322 push(@
{$propertyfile}, $onepropertyline);
325 if ( $installer::globals
::basisdirhostname
)
327 my $onepropertyline = "BASISDIRHOSTNAME" . "\t" . $installer::globals
::basisdirhostname
. "\n";
328 push(@
{$propertyfile}, $onepropertyline);
331 if ( $installer::globals
::uredirhostname
)
333 my $onepropertyline = "UREDIRHOSTNAME" . "\t" . $installer::globals
::uredirhostname
. "\n";
334 push(@
{$propertyfile}, $onepropertyline);
337 if ( $installer::globals
::sundirhostname
)
339 my $onepropertyline = "SUNDIRHOSTNAME" . "\t" . $installer::globals
::sundirhostname
. "\n";
340 push(@
{$propertyfile}, $onepropertyline);
343 if ( $installer::globals
::desktoplinkexists
)
345 my $onepropertyline = "DESKTOPLINKEXISTS" . "\t" . "1" . "\n";
346 push(@
{$propertyfile}, $onepropertyline);
348 $onepropertyline = "CREATEDESKTOPLINK" . "\t" . "1" . "\n"; # Setting the default
349 push(@
{$propertyfile}, $onepropertyline);
352 if ( $installer::globals
::patch
)
354 my $onepropertyline = "ISPATCH" . "\t" . "1" . "\n";
355 push(@
{$propertyfile}, $onepropertyline);
357 $onepropertyline = "SETUP_USED" . "\t" . "0" . "\n";
358 push(@
{$propertyfile}, $onepropertyline);
361 if ( $installer::globals
::languagepack
)
363 my $onepropertyline = "ISLANGUAGEPACK" . "\t" . "1" . "\n";
364 push(@
{$propertyfile}, $onepropertyline);
367 my $languagesline = "PRODUCTALLLANGUAGES" . "\t" . $$languagestringref . "\n";
368 push(@
{$propertyfile}, $languagesline);
370 if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'} eq "Beta" ))
372 my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n";
373 push(@
{$propertyfile}, $registryline);
374 my $betainfoline = "BETAPRODUCT" . "\t" . "1" . "\n";
375 push(@
{$propertyfile}, $betainfoline);
377 elsif ( $allvariables->{'DEVELOPMENTPRODUCT'} )
379 my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n";
380 push(@
{$propertyfile}, $registryline);
384 my $registryline = "WRITE_REGISTRY" . "\t" . "1" . "\n"; # Default: Write complete registry
385 push(@
{$propertyfile}, $registryline);
388 # Adding also used tree conditions for multilayer products.
389 # These are saved in %installer::globals::usedtreeconditions
390 foreach my $treecondition (keys %installer::globals
::usedtreeconditions
)
392 my $onepropertyline = $treecondition . "\t" . "1" . "\n";
393 push(@
{$propertyfile}, $onepropertyline);
396 # No more license dialog for selected products
397 if ( $allvariables->{'HIDELICENSEDIALOG'} )
399 my $onepropertyline = "HIDEEULA" . "\t" . "1" . "\n";
400 push(@
{$propertyfile}, $onepropertyline);
403 # Setting .NET requirements
404 if ( $installer::globals
::required_dotnet_version
ne "" )
406 my $onepropertyline = "REQUIRED_DOTNET_VERSION" . "\t" . $installer::globals
::required_dotnet_version
. "\n";
407 push(@
{$propertyfile}, $onepropertyline);
409 $onepropertyline = "DOTNET_SUFFICIENT" . "\t" . "1" . "\n"; # default value for found .NET
410 push(@
{$propertyfile}, $onepropertyline);
415 #######################################################
416 # Setting properties needed for ms file type registration
417 #######################################################
419 sub set_ms_file_types_properties
421 my ($propertyfile) = @_;
423 push(@
{$propertyfile}, "REGISTER_PPS" . "\t" . "0" . "\n");
424 push(@
{$propertyfile}, "REGISTER_PPSX" . "\t" . "0" . "\n");
425 push(@
{$propertyfile}, "REGISTER_PPSM" . "\t" . "0" . "\n");
426 push(@
{$propertyfile}, "REGISTER_PPAM" . "\t" . "0" . "\n");
427 push(@
{$propertyfile}, "REGISTER_PPT" . "\t" . "0" . "\n");
428 push(@
{$propertyfile}, "REGISTER_PPTX" . "\t" . "0" . "\n");
429 push(@
{$propertyfile}, "REGISTER_PPTM" . "\t" . "0" . "\n");
430 push(@
{$propertyfile}, "REGISTER_POT" . "\t" . "0" . "\n");
431 push(@
{$propertyfile}, "REGISTER_POTX" . "\t" . "0" . "\n");
432 push(@
{$propertyfile}, "REGISTER_POTM" . "\t" . "0" . "\n");
434 push(@
{$propertyfile}, "REGISTER_DOC" . "\t" . "0" . "\n");
435 push(@
{$propertyfile}, "REGISTER_DOCX" . "\t" . "0" . "\n");
436 push(@
{$propertyfile}, "REGISTER_DOCM" . "\t" . "0" . "\n");
437 push(@
{$propertyfile}, "REGISTER_DOT" . "\t" . "0" . "\n");
438 push(@
{$propertyfile}, "REGISTER_DOTX" . "\t" . "0" . "\n");
439 push(@
{$propertyfile}, "REGISTER_DOTM" . "\t" . "0" . "\n");
440 push(@
{$propertyfile}, "REGISTER_RTF" . "\t" . "0" . "\n");
442 push(@
{$propertyfile}, "REGISTER_XLS" . "\t" . "0" . "\n");
443 push(@
{$propertyfile}, "REGISTER_XLSX" . "\t" . "0" . "\n");
444 push(@
{$propertyfile}, "REGISTER_XLSM" . "\t" . "0" . "\n");
445 push(@
{$propertyfile}, "REGISTER_XLSB" . "\t" . "0" . "\n");
446 push(@
{$propertyfile}, "REGISTER_XLAM" . "\t" . "0" . "\n");
447 push(@
{$propertyfile}, "REGISTER_XLT" . "\t" . "0" . "\n");
448 push(@
{$propertyfile}, "REGISTER_XLTX" . "\t" . "0" . "\n");
449 push(@
{$propertyfile}, "REGISTER_XLTM" . "\t" . "0" . "\n");
451 push(@
{$propertyfile}, "REGISTER_NO_MSO_TYPES" . "\t" . "0" . "\n");
452 push(@
{$propertyfile}, "REGISTER_ALL_MSO_TYPES" . "\t" . "0" . "\n");
455 ####################################################################################
456 # Updating the file Property.idt dynamically
459 ####################################################################################
461 sub update_property_table
463 my ($basedir, $language, $allvariables, $languagestringref) = @_;
465 my $properyfilename = $basedir . $installer::globals
::separator
. "Property.idt";
467 my $propertyfile = installer
::files
::read_file
($properyfilename);
469 # Getting the new values
470 # Some values (arpcomments, arpcontacts, ...) are inserted from the Property.mlf
472 my $arpcomments = get_arpcomments_for_property_table
($allvariables, $languagestringref);
473 my $installlevel = get_installlevel_for_property_table
();
474 my $ischeckforproductupdates = get_ischeckforproductupdates_for_property_table
();
475 my $manufacturer = get_manufacturer_for_property_table
();
476 my $productlanguage = get_productlanguage_for_property_table
($language);
477 my $productname = get_productname_for_property_table
($allvariables);
478 my $productversion = get_productversion_for_property_table
();
479 my $quickstarterlinkname = get_quickstarterlinkname_for_property_table
($allvariables);
481 # Updating the values
483 for ( my $i = 0; $i <= $#{$propertyfile}; $i++ )
485 ${$propertyfile}[$i] =~ s/\bARPCOMMENTSTEMPLATE\b/$arpcomments/;
486 ${$propertyfile}[$i] =~ s/\bINSTALLLEVELTEMPLATE\b/$installlevel/;
487 ${$propertyfile}[$i] =~ s/\bISCHECKFORPRODUCTUPDATESTEMPLATE\b/$ischeckforproductupdates/;
488 ${$propertyfile}[$i] =~ s/\bMANUFACTURERTEMPLATE\b/$manufacturer/;
489 ${$propertyfile}[$i] =~ s/\bPRODUCTLANGUAGETEMPLATE\b/$productlanguage/;
490 ${$propertyfile}[$i] =~ s/\bPRODUCTNAMETEMPLATE\b/$productname/;
491 ${$propertyfile}[$i] =~ s/\bPRODUCTVERSIONTEMPLATE\b/$productversion/;
492 ${$propertyfile}[$i] =~ s/\bQUICKSTARTERLINKNAMETEMPLATE\b/$quickstarterlinkname/;
495 # Setting variables into propertytable
496 set_important_properties
($propertyfile, $allvariables, $languagestringref);
498 # Setting feature names as properties for Windows patch mechanism
499 if ( $installer::globals
::patch
) { set_featurename_properties_for_patch
($propertyfile); }
501 # Setting variables for register for ms file types
502 set_ms_file_types_properties
($propertyfile);
506 installer
::files
::save_file
($properyfilename ,$propertyfile);
507 my $infoline = "Updated idt file: $properyfilename\n";
508 push(@installer::globals
::logfileinfo
, $infoline);
512 ####################################################################################
513 # Setting language specific Properties in file Property.idt dynamically
517 ####################################################################################
519 sub set_languages_in_property_table
521 my ($basedir, $languagesarrayref) = @_;
523 my $properyfilename = $basedir . $installer::globals
::separator
. "Property.idt";
524 my $propertyfile = installer
::files
::read_file
($properyfilename);
526 # Setting the component properties saved in %installer::globals::languageproperties
527 foreach my $localproperty ( keys %installer::globals
::languageproperties
)
529 $onepropertyline = $localproperty . "\t" . $installer::globals
::languageproperties
{$localproperty} . "\n";
530 push(@
{$propertyfile}, $onepropertyline);
533 # Setting the info about multilingual installation in property "isMulti"
535 my $propertyname = "isMulti";
536 my $ismultivalue = 0;
538 if ( $installer::globals
::ismultilingual
) { $ismultivalue = 1; }
540 my $onepropertyline = $propertyname . "\t" . $ismultivalue . "\n";
541 push(@
{$propertyfile}, $onepropertyline);
543 # setting the ARPPRODUCTICON
545 if ($installer::globals
::sofficeiconadded
) # set in shortcut.pm
547 $onepropertyline = "ARPPRODUCTICON" . "\t" . "soffice.exe" . "\n";
548 push(@
{$propertyfile}, $onepropertyline);
553 installer
::files
::save_file
($properyfilename ,$propertyfile);
554 my $infoline = "Added language content into idt file: $properyfilename\n";
555 push(@installer::globals
::logfileinfo
, $infoline);
559 ############################################################
560 # Setting the ProductCode and the UpgradeCode
561 # into the Property table. Both have to be stored
562 # in the global file $installer::globals::codefilename
563 ############################################################
565 sub set_codes_in_property_table
569 # Reading the property file
571 my $properyfilename = $basedir . $installer::globals
::separator
. "Property.idt";
572 my $propertyfile = installer
::files
::read_file
($properyfilename);
574 # Updating the values
576 for ( my $i = 0; $i <= $#{$propertyfile}; $i++ )
578 ${$propertyfile}[$i] =~ s/\bPRODUCTCODETEMPLATE\b/$installer::globals::productcode/;
579 ${$propertyfile}[$i] =~ s/\bUPGRADECODETEMPLATE\b/$installer::globals::upgradecode/;
582 # Saving the property file
584 installer
::files
::save_file
($properyfilename ,$propertyfile);
585 my $infoline = "Added language content into idt file: $properyfilename\n";
586 push(@installer::globals
::logfileinfo
, $infoline);
590 ############################################################
591 # Setting the variable REGKEYPRODPATH, that is used
592 # by the language packs.
593 ############################################################
595 sub set_regkeyprodpath_in_property_table
597 my ($basedir, , $allvariables) = @_;
599 # Reading the property file
601 my $properyfilename = $basedir . $installer::globals
::separator
. "Property.idt";
602 my $propertyfile = installer
::files
::read_file
($properyfilename);
604 my $name = $allvariables->{'PRODUCTNAME'};
605 my $version = $allvariables->{'PRODUCTVERSION'};
607 my $onepropertyline = "REGKEYPRODPATH" . "\t" . "Software" . "\\" . $installer::globals
::manufacturer
. "\\". $name;
609 push(@
{$propertyfile}, $onepropertyline);
611 # Saving the property file
613 installer
::files
::save_file
($properyfilename ,$propertyfile);
614 my $infoline = "Added language content into idt file: $properyfilename\n";
615 push(@installer::globals
::logfileinfo
, $infoline);
619 ############################################################
620 # Changing default for MS file type registration
622 ############################################################
624 sub update_checkbox_table
626 my ($basedir, $allvariables) = @_;
628 if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'} eq "Beta" ))
630 my $checkboxfilename = $basedir . $installer::globals
::separator
. "CheckBox.idt";
632 if ( -f
$checkboxfilename )
634 my $checkboxfile = installer
::files
::read_file
($checkboxfilename);
636 my $checkboxline = "SELECT_WORD" . "\t" . "0" . "\n";
637 push(@
{$checkboxfile}, $checkboxline);
638 $checkboxline = "SELECT_EXCEL" . "\t" . "0" . "\n";
639 push(@
{$checkboxfile}, $checkboxline);
640 $checkboxline = "SELECT_POWERPOINT" . "\t" . "0" . "\n";
641 push(@
{$checkboxfile}, $checkboxline);
643 # Saving the property file
644 installer
::files
::save_file
($checkboxfilename ,$checkboxfile);
645 my $infoline = "Added ms file type defaults into idt file: $checkboxfilename\n";
646 push(@installer::globals
::logfileinfo
, $infoline);