xref: /AOO41X/main/solenv/bin/modules/installer/control.pm (revision ef1ef8e674fabf3a541d12c6e6c14cecdfc2f9e7)
1#*************************************************************************
2#
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# Copyright 2000, 2010 Oracle and/or its affiliates.
6#
7# OpenOffice.org - a multi-platform office productivity suite
8#
9# This file is part of OpenOffice.org.
10#
11# OpenOffice.org is free software: you can redistribute it and/or modify
12# it under the terms of the GNU Lesser General Public License version 3
13# only, as published by the Free Software Foundation.
14#
15# OpenOffice.org is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18# GNU Lesser General Public License version 3 for more details
19# (a copy is included in the LICENSE file that accompanied this code).
20#
21# You should have received a copy of the GNU Lesser General Public License
22# version 3 along with OpenOffice.org.  If not, see
23# <http://www.openoffice.org/license.html>
24# for a copy of the LGPLv3 License.
25#
26#*************************************************************************
27
28package installer::control;
29
30use Cwd;
31use installer::converter;
32use installer::exiter;
33use installer::files;
34use installer::globals;
35use installer::pathanalyzer;
36use installer::scriptitems;
37use installer::systemactions;
38
39#########################################################
40# Function that can be used for additional controls.
41# Search happens in $installer::globals::patharray.
42#########################################################
43
44sub check_needed_files_in_path
45{
46    my ( $filesref ) = @_;
47
48    foreach $onefile ( @{$filesref} )
49    {
50        installer::logger::print_message( "...... searching $onefile ..." );
51
52        my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$onefile, $installer::globals::patharray , 0);
53
54        if ( $$fileref eq "" )
55        {
56            $error = 1;
57            installer::logger::print_error( "$onefile not found\n" );
58        }
59        else
60        {
61            installer::logger::print_message( "\tFound: $$fileref\n" );
62        }
63    }
64
65    if ( $error )
66    {
67        installer::exiter::exit_program("ERROR: Could not find all needed files in path!", "check_needed_files_in_path");
68    }
69}
70
71#########################################################
72# Checking the local system
73# Checking existence of needed files in include path
74#########################################################
75
76sub check_system_path
77{
78    # The following files have to be found in the environment variable PATH
79    # All platforms: zip
80    # Windows only: msvcp70.dll, msvcr70.dll for regcomp.exe
81    # Windows only: "msiinfo.exe", "msidb.exe", "uuidgen.exe", "makecab.exe", "msitran.exe", "expand.exe" for msi database and packaging
82
83    my $onefile;
84    my $error = 0;
85    my $pathvariable = $ENV{'PATH'};
86    my $local_pathseparator = $installer::globals::pathseparator;
87
88    if( $^O =~ /cygwin/i )
89    {   # When using cygwin's perl the PATH variable is POSIX style and ...
90        $pathvariable = qx{cygpath -mp "$pathvariable"} ;
91        # has to be converted to DOS style for further use.
92        $local_pathseparator = ';';
93    }
94    my $patharrayref = installer::converter::convert_stringlist_into_array(\$pathvariable, $local_pathseparator);
95
96    $installer::globals::patharray = $patharrayref;
97
98    my @needed_files_in_path = ();
99
100    if (($installer::globals::iswin) && ($installer::globals::iswindowsbuild))
101    {
102        @needed_files_in_path = ("zip.exe", "msiinfo.exe", "msidb.exe", "uuidgen.exe", "makecab.exe", "msitran.exe", "expand.exe");
103
104        if ( $installer::globals::compiler eq "wntmsci8" )
105        {
106            push(@needed_files_in_path, "msvcp70.dll");
107            push(@needed_files_in_path, "msvcr70.dll");
108        }
109
110        if ( $installer::globals::compiler eq "wntmsci10" )
111        {
112            push(@needed_files_in_path, "msvcp71.dll");
113            push(@needed_files_in_path, "msvcr71.dll");
114        }
115
116    }
117    elsif ($installer::globals::iswin)
118    {
119        @needed_files_in_path = ("zip.exe");
120    }
121    else
122    {
123        @needed_files_in_path = ("zip");
124    }
125
126    foreach $onefile ( @needed_files_in_path )
127    {
128        installer::logger::print_message( "...... searching $onefile ..." );
129
130        my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$onefile, $patharrayref , 0);
131
132        if ( $$fileref eq "" )
133        {
134            $error = 1;
135            installer::logger::print_error( "$onefile not found\n" );
136        }
137        else
138        {
139            installer::logger::print_message( "\tFound: $$fileref\n" );
140            # Saving the absolut path for msitran.exe. This is required for the determination of the checksum.
141            if ( $onefile eq "msitran.exe" ) { $installer::globals::msitranpath = $$fileref; }
142        }
143    }
144
145    if ( $error )
146    {
147        installer::exiter::exit_program("ERROR: Could not find all needed files in path!", "check_system_path");
148    }
149
150    # checking for epm, which has to be in the path or in the solver
151
152    if (( $installer::globals::call_epm ) && (!($installer::globals::iswindowsbuild)))
153    {
154        my $onefile = "epm";
155        my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$onefile, $patharrayref , 0);
156        if (!( $$fileref eq "" ))
157        {
158            $installer::globals::epm_in_path = 1;
159
160            if ( $$fileref =~ /^\s*\.\/epm\s*$/ )
161            {
162                my $currentdir = cwd();
163                $$fileref =~ s/\./$currentdir/;
164            }
165
166            $installer::globals::epm_path = $$fileref;
167        }
168    }
169
170    # checking, if upx can be found in path
171
172    if ( $installer::globals::iswindowsbuild ) { $installer::globals::upxfile = "upx.exe"; }
173    else { $installer::globals::upxfile = "upx"; }
174
175    my $upxfilename = $installer::globals::upxfile;
176    my $upxfileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$upxfilename, $patharrayref , 0);
177
178    if (!( $$upxfileref eq "" ))
179    {
180        $installer::globals::upx_in_path = 1;
181        $installer::globals::upxfile = $$upxfileref;
182        installer::logger::print_message( "\tFound: $$upxfileref\n" );
183    }
184
185}
186
187######################################################################
188# Determining the version of file makecab.exe
189######################################################################
190
191sub get_makecab_version
192{
193    my $makecabversion = -1;
194
195    my $systemcall = "makecab.exe |";
196    my @makecaboutput = ();
197
198    open (CAB, $systemcall);
199    while (<CAB>) { push(@makecaboutput, $_); }
200    close (CAB);
201
202    my $returnvalue = $?;   # $? contains the return value of the systemcall
203
204    if ($returnvalue)
205    {
206        $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
207        push( @installer::globals::globallogfileinfo, $infoline);
208    }
209    else
210    {
211        $infoline = "Success: Executed \"$systemcall\" successfully!\n";
212        push( @installer::globals::globallogfileinfo, $infoline);
213
214        my $versionline = "";
215
216        for ( my $i = 0; $i <= $#makecaboutput; $i++ )
217        {
218            if ( $makecaboutput[$i] =~ /\bVersion\b/i )
219            {
220                $versionline = $makecaboutput[$i];
221                last;
222            }
223        }
224
225        $infoline = $versionline;
226        push( @installer::globals::globallogfileinfo, $infoline);
227
228        if ( $versionline =~ /\bVersion\b\s+(\d+[\d\.]+\d+)\s+/ )
229        {
230            $makecabversion = $1;
231        }
232
233        # Only using the first number
234
235        if ( $makecabversion =~ /^\s*(\d+?)\D*/ )
236        {
237            $makecabversion = $1;
238        }
239
240        $infoline = "Using version: " . $makecabversion . "\n";
241        push( @installer::globals::globallogfileinfo, $infoline);
242    }
243
244    return $makecabversion;
245}
246
247######################################################################
248# Checking the version of file makecab.exe
249######################################################################
250
251sub check_makecab_version
252{
253    # checking version of makecab.exe
254    # Now it is guaranteed, that makecab.exe is in the path
255
256    my $do_check = 1;
257
258    my $makecabversion = get_makecab_version();
259
260    my $infoline = "Tested version: " . $installer::globals::controlledmakecabversion . "\n";
261    push( @installer::globals::globallogfileinfo, $infoline);
262
263    if ( $makecabversion < 0 ) { $do_check = 0; } # version could not be determined
264
265    if ( $do_check )
266    {
267        if ( $makecabversion < $installer::globals::controlledmakecabversion )
268        {
269            # warning for OOo, error for inhouse products
270            if ( $installer::globals::isopensourceproduct )
271            {
272                installer::logger::print_warning("Old version of makecab.exe. Found version: \"$makecabversion\", tested version: \"$installer::globals::controlledmakecabversion\"!\n");
273            }
274            else
275            {
276                installer::exiter::exit_program("makecab.exe too old. Found version: \"$makecabversion\", required version: \"$installer::globals::controlledmakecabversion\"!", "check_makecab_version");
277            }
278        }
279    }
280    else
281    {
282        $infoline = "Warning: No version check of makecab.exe\n";
283        push( @installer::globals::globallogfileinfo, $infoline);
284    }
285}
286
287######################################################################
288# Reading the environment variables for the pathes in ziplist.
289# solarpath, solarenvpath, solarcommonpath, os, osdef, pmiscpath
290######################################################################
291
292sub check_system_environment
293{
294    my %variables = ();
295    my $key;
296    my $error = 0;
297
298    foreach $key ( @installer::globals::environmentvariables )
299    {
300        my $value = "";
301        if ( $ENV{$key} ) { $value = $ENV{$key}; }
302        $variables{$key} = $value;
303
304        if ( $value eq "" )
305        {
306            installer::logger::print_error( "$key not set in environment\n" );
307            $error = 1;
308        }
309    }
310
311    if ( $error )
312    {
313        installer::exiter::exit_program("ERROR: Environment variable not set!", "check_system_environment");
314    }
315
316    return \%variables;
317}
318
319#############################################################
320# Controlling the log file at the end of the
321# packaging process
322#############################################################
323
324sub check_logfile
325{
326    my ($logfile) = @_;
327
328    my @errors = ();
329    my @output = ();
330    my $contains_error = 0;
331
332    my $ignore_error = 0;
333    my $make_error_to_warning = 0;
334
335    if (( ! $installer::globals::pro ) && ( $installer::globals::ignore_error_in_logfile )) { $ignore_error = 1; }
336
337    for ( my $i = 0; $i <= $#{$logfile}; $i++ )
338    {
339        my $line = ${$logfile}[$i];
340
341        # Errors are all errors, but not the Windows installer table "Error.idt"
342
343        my $compareline = $line;
344        $compareline =~ s/Error\.idt//g;    # removing all occurences of "Error.idt"
345        $compareline =~ s/Error\.mlf//g;    # removing all occurences of "Error.mlf"
346        $compareline =~ s/Error\.ulf//g;    # removing all occurences of "Error.ulf"
347        $compareline =~ s/Error\.idl//g;    # removing all occurences of "Error.idl"
348        $compareline =~ s/Error\.html//g;   # removing all occurences of "Error.html"
349
350        if ( $compareline =~ /\bError\b/i )
351        {
352            $contains_error = 1;
353            push(@errors, $line);
354
355            if ( $ignore_error )
356            {
357                $contains_error = 0;
358                $make_error_to_warning = 1;
359            }
360        }
361    }
362
363    if ($contains_error)
364    {
365        my $line = "\n*********************************************************************\n";
366        push(@output, $line);
367        $line = "ERROR: The following errors occured in packaging process:\n\n";
368        push(@output, $line);
369
370        for ( my $i = 0; $i <= $#errors; $i++ )
371        {
372            $line = "$errors[$i]";
373            push(@output, $line);
374        }
375
376        $line = "*********************************************************************\n";
377        push(@output, $line);
378#       exit(-1);
379    }
380    else
381    {
382        my $line = "";
383
384        if ( $make_error_to_warning )
385        {
386            $line = "\n*********************************************************************\n";
387            push(@output, $line);
388            $line = "The following errors in the log file were ignored:\n\n";
389            push(@output, $line);
390
391            for ( my $i = 0; $i <= $#errors; $i++ )
392            {
393                $line = "$errors[$i]";
394                push(@output, $line);
395            }
396
397            $line = "*********************************************************************\n";
398            push(@output, $line);
399        }
400
401        $line = "\n***********************************************************\n";
402        push(@output, $line);
403        $line = "Successful packaging process!\n";
404        push(@output, $line);
405        $line = "***********************************************************\n";
406        push(@output, $line);
407    }
408
409    # printing the output file and adding it to the logfile
410
411    installer::logger::include_header_into_logfile("Summary:");
412
413    my $force = 1; # print this message even in 'quiet' mode
414    for ( my $i = 0; $i <= $#output; $i++ )
415    {
416        my $line = "$output[$i]";
417        installer::logger::print_message( "$line", $force );
418        push( @installer::globals::logfileinfo, $line);
419        push( @installer::globals::errorlogfileinfo, $line);
420    }
421
422    return $contains_error;
423}
424
425#############################################################
426# Determining the ship installation directory
427#############################################################
428
429sub determine_ship_directory
430{
431    my ($languagesref) = @_;
432
433    if (!( $ENV{'SHIPDRIVE'} )) { installer::exiter::exit_program("ERROR: SHIPDRIVE must be set for updater!", "determine_ship_directory"); }
434
435    my $shipdrive = $ENV{'SHIPDRIVE'};
436
437    my $languagestring = $$languagesref;
438
439    if (length($languagestring) > $installer::globals::max_lang_length )
440    {
441        my $number_of_languages = installer::systemactions::get_number_of_langs($languagestring);
442        chomp(my $shorter = `echo $languagestring | md5sum | sed -e "s/ .*//g"`);
443        # $languagestring = $shorter;
444        my $id = substr($shorter, 0, 8); # taking only the first 8 digits
445        $languagestring = "lang_" . $number_of_languages . "_id_" . $id;
446    }
447
448    my $productstring = $installer::globals::product;
449    my $productsubdir = "";
450
451    if ( $productstring =~ /^\s*(.+?)\_\_(.+?)\s*$/ )
452    {
453        $productstring = $1;
454        $productsubdir = $2;
455    }
456
457    if ( $installer::globals::languagepack ) { $productstring = $productstring . "_languagepack"; }
458    if ( $installer::globals::patch ) { $productstring = $productstring . "_patch"; }
459
460    my $destdir = $shipdrive . $installer::globals::separator . $installer::globals::compiler .
461                $installer::globals::productextension . $installer::globals::separator .
462                $productstring . $installer::globals::separator;
463
464    if ( $productsubdir ) { $destdir = $destdir . $productsubdir . $installer::globals::separator; }
465
466    $destdir = $destdir . $installer::globals::installertypedir . $installer::globals::separator .
467                $installer::globals::build . "_" . $installer::globals::lastminor . "_" .
468                "native_inprogress-number_" . $languagestring . "\." . $installer::globals::buildid;
469
470    my $infoline = "\nSetting ship directory: $destdir\n";
471    push(@installer::globals::globallogfileinfo, $infoline);
472
473    return $destdir;
474}
475
476#############################################################
477# Controlling if this is an official RE pack process
478#############################################################
479
480sub check_updatepack
481{
482    my $shipdrive = "";
483    my $filename = "";
484    my $infoline = "";
485
486    if ( $ENV{'UPDATER'} )  # the environment variable UPDATER has to be set
487    {
488        $infoline = "\nEnvironment variable UPDATER set\n";
489        push(@installer::globals::globallogfileinfo, $infoline);
490
491        if ( ! $ENV{'CWS_WORK_STAMP'} ) # the environment variable CWS_WORK_STAMP must not be set (set only in CWS)
492        {
493            $infoline = "Environment variable CWS_WORK_STAMP not set\n";
494            push(@installer::globals::globallogfileinfo, $infoline);
495
496            if ( $ENV{'SHIPDRIVE'} )    # the environment variable SHIPDRIVE must be set
497            {
498                $shipdrive = $ENV{'SHIPDRIVE'};
499                $infoline = "Ship drive defined: $shipdrive\n";
500                push(@installer::globals::globallogfileinfo, $infoline);
501
502                if ( -d $shipdrive )    # SHIPDRIVE must be a directory
503                {
504                    $infoline = "Ship drive exists\n";
505                    push(@installer::globals::globallogfileinfo, $infoline);
506
507                    # try to write into $shipdrive
508
509                    $directory = $installer::globals::product . "_" . $installer::globals::compiler . "_" . $installer::globals::buildid . "_" . $installer::globals::languageproducts[0] . "_test_$$";
510                    $directory =~ s/\,/\_/g;    # for the list of languages
511                    $directory =~ s/\-/\_/g;    # for en-US, pt-BR, ...
512                    $directory = $shipdrive . $installer::globals::separator . $directory;
513
514                    $infoline = "Try to create directory: $directory\n";
515                    push(@installer::globals::globallogfileinfo, $infoline);
516
517                    # saving this directory for later removal
518                    $installer::globals::shiptestdirectory = $directory;
519
520                    if ( installer::systemactions::try_to_create_directory($directory))
521                    {
522                        $infoline = "Write access on Ship drive\n";
523                        push(@installer::globals::globallogfileinfo, $infoline);
524                        $infoline = "Ship test directory $installer::globals::shiptestdirectory was successfully created\n";
525                        push(@installer::globals::globallogfileinfo, $infoline);
526                        my $systemcall = "rmdir $directory";
527                        my $returnvalue = system($systemcall);
528
529                        # 5th condition: No local build environment.
530                        # In this case the content of SOLARENV starts with the content of SOL_TMP
531
532                        my $solarenv = "";
533                        my $sol_tmp;
534                        if ( $ENV{'SOLARENV'} ) { $solarenv = $ENV{'SOLARENV'}; }
535
536                        $infoline = "Environment variable SOLARENV: $solarenv\n";
537                        push(@installer::globals::globallogfileinfo, $infoline);
538
539                        if ( $ENV{'SOL_TMP'} )
540                        {
541                            $sol_tmp = $ENV{'SOL_TMP'};
542                            $infoline = "Environment variable SOL_TMP: $sol_tmp\n";
543                        } else {
544                            $infoline = "Environment variable SOL_TMP not set\n";
545                        }
546                        push(@installer::globals::globallogfileinfo, $infoline);
547
548                        if ( defined $sol_tmp && ( $solarenv =~ /^\s*\Q$sol_tmp\E/ ))
549                        {
550                            $infoline = "Content of SOLARENV starts with the content of SOL_TMP\: Local environment -\> No Updatepack\n";
551                            push(@installer::globals::globallogfileinfo, $infoline);
552                        }
553                        else
554                        {
555                            $infoline = "Content of SOLARENV does not start with the content of SOL_TMP: No local environment\n";
556                            push(@installer::globals::globallogfileinfo, $infoline);
557
558                            $installer::globals::updatepack = 1;    # That's it
559                        }
560
561                        # Additional logging information for the temporary ship directory
562
563                        if ( -d $installer::globals::shiptestdirectory )
564                        {
565                            $infoline = "Ship test directory $installer::globals::shiptestdirectory still exists. Trying removal later again.\n";
566                            push(@installer::globals::globallogfileinfo, $infoline);
567                        }
568                        else
569                        {
570                            $infoline = "Ship test directory $installer::globals::shiptestdirectory was successfully removed.\n";
571                            push(@installer::globals::globallogfileinfo, $infoline);
572                        }
573                    }
574                    else
575                    {
576                        $infoline = "No write access on Ship drive\n";
577                        push(@installer::globals::globallogfileinfo, $infoline);
578                        $infoline = "Failed to create directory $directory\n";
579                        push(@installer::globals::globallogfileinfo, $infoline);
580                        if ( defined $ENV{'BSCLIENT'} && ( uc $ENV{'BSCLIENT'} eq 'TRUE' ) ) {
581                            installer::exiter::exit_program("ERROR: No write access to SHIPDRIVE allthough BSCLIENT is set.", "check_updatepack");
582                        }
583                    }
584                }
585                else
586                {
587                    $infoline = "Ship drive not found: No updatepack\n";
588                    push(@installer::globals::globallogfileinfo, $infoline);
589                }
590            }
591            else
592            {
593                $infoline = "Environment variable SHIPDRIVE not set: No updatepack\n";
594                push(@installer::globals::globallogfileinfo, $infoline);
595            }
596        }
597        else
598        {
599            $infoline = "Environment variable CWS_WORK_STAMP defined: No updatepack\n";
600            push(@installer::globals::globallogfileinfo, $infoline);
601        }
602    }
603
604    if ( $installer::globals::updatepack ) { $infoline = "Setting updatepack true\n\n"; }
605    else { $infoline = "\nNo updatepack\n"; }
606    push(@installer::globals::globallogfileinfo, $infoline);
607
608}
609
610#############################################################
611# Reading the Windows list file for language encodings
612#############################################################
613
614sub read_encodinglist
615{
616    my ($patharrayref) = @_;
617
618    my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$installer::globals::encodinglistname, $patharrayref , 0);
619
620    if ( $$fileref eq "" ) { installer::exiter::exit_program("ERROR: Did not find Windows encoding list $installer::globals::encodinglistname!", "read_encodinglist"); }
621
622    my $infoline = "Found encoding file: $$fileref\n";
623    push(@installer::globals::globallogfileinfo, $infoline);
624
625    my $encodinglist = installer::files::read_file($$fileref);
626
627    my %msiencoding = ();
628    my %msilanguage = ();
629
630    # Controlling the encoding list
631
632    for ( my $i = 0; $i <= $#{$encodinglist}; $i++ )
633    {
634        my $line = ${$encodinglist}[$i];
635
636        if ( $line =~ /^\s*\#/ ) { next; }  # this is a comment line
637
638        if ( $line =~ /^(.*?)(\#.*)$/ ) { $line = $1; } # removing comments after "#"
639
640        if ( $line =~ /^\s*([\w-]+)\s*(\d+)\s*(\d+)\s*$/ )
641        {
642            my $onelanguage = $1;
643            my $codepage = $2;
644            my $windowslanguage = $3;
645
646            $msiencoding{$onelanguage} = $codepage;
647            $msilanguage{$onelanguage} = $windowslanguage;
648        }
649        else
650        {
651            installer::exiter::exit_program("ERROR: Wrong syntax in Windows encoding list $installer::globals::encodinglistname : en-US 1252 1033 !", "read_encodinglist");
652        }
653    }
654
655    $installer::globals::msiencoding = \%msiencoding;
656    $installer::globals::msilanguage = \%msilanguage;
657
658    # my $key;
659    # foreach $key (keys %{$installer::globals::msiencoding}) { print "A Key: $key : Value: $installer::globals::msiencoding->{$key}\n"; }
660    # foreach $key (keys %{$installer::globals::msilanguage}) { print "B Key: $key : Value: $installer::globals::msilanguage->{$key}\n"; }
661
662}
663
664#############################################################
665# Only for Windows and Linux (RPM)there is currently
666# a reliable mechanism to register extensions during
667# installation process. Therefore it is for all other
668# platforms forbidden to install oxt files into that
669# directory, in which they are searched for registration.
670#############################################################
671
672sub check_oxtfiles
673{
674    my ( $filesarray ) = @_;
675
676    for ( my $i = 0; $i <= $#{$filesarray}; $i++ )
677    {
678        my $onefile = ${$filesarray}[$i];
679
680        if (( $onefile->{'Name'} ) && ( $onefile->{'Dir'} ))
681        {
682            if (( $onefile->{'Name'} =~ /\.oxt\s*$/ ) && ( $onefile->{'Dir'} eq $installer::globals::extensioninstalldir ))
683            {
684                installer::exiter::exit_program("There is currently only for Linux (RPM) and Windows a reliable mechanism to register extensions during installation.\nPlease remove file \"$onefile->{'gid'}\" from your installation set!\nYou can use \"\#ifdef WNT\" and \"\#ifdef LINUX\" in scp.", "check_oxtfiles");
685            }
686        }
687    }
688}
689
690#############################################################
691# Check if Java is available to create xpd installer
692#############################################################
693
694sub check_java_for_xpd
695{
696    my ( $allvariables ) = @_;
697
698    if ( ! $installer::globals::solarjavaset ) { $allvariables->{'XPDINSTALLER'} = 0; }
699}
700
701####################################################################
702# Setting global variable "$installer::globals::addchildprojects"
703####################################################################
704
705sub set_addchildprojects
706{
707    my ($allvariables) = @_;
708
709    if (( $allvariables->{'JAVAPRODUCT'} ) ||
710        ( $allvariables->{'ADAPRODUCT'} ) ||
711        ( $allvariables->{'UREPRODUCT'} ) ||
712        ( $allvariables->{'ADDREQUIREDPACKAGES'} )) { $installer::globals::addchildprojects = 1; }
713
714    if ( $installer::globals::patch )
715    {
716        $installer::globals::addchildprojects = 0;  # no child projects for patches
717    }
718
719    my $infoline = "Value of \$installer::globals::addchildprojects: $installer::globals::addchildprojects\n";
720    push( @installer::globals::globallogfileinfo, $infoline);
721}
722
723####################################################################
724# Setting global variable "$installer::globals::addjavainstaller"
725####################################################################
726
727sub set_addjavainstaller
728{
729    my ($allvariables) = @_;
730
731    if ( $allvariables->{'JAVAINSTALLER'} ) { $installer::globals::addjavainstaller = 1; }
732
733    if ( $installer::globals::patch ) { $installer::globals::addjavainstaller = 0; }
734    if ( $installer::globals::languagepack ) { $installer::globals::addjavainstaller = 0; }
735    if ( $allvariableshashref->{'XPDINSTALLER'} ) { $installer::globals::addjavainstaller = 0; }
736
737    my $infoline = "Value of \$installer::globals::addjavainstaller: $installer::globals::addjavainstaller\n";
738    push( @installer::globals::globallogfileinfo, $infoline);
739}
740
741#######################################################################
742# Setting global variable "$installer::globals::addsystemintegration"
743#######################################################################
744
745sub set_addsystemintegration
746{
747    my ($allvariables) = @_;
748
749    if ( $allvariables->{'ADDSYSTEMINTEGRATION'} ) { $installer::globals::addsystemintegration = 1; }
750
751    if ( $installer::globals::patch ) { $installer::globals::addsystemintegration = 0; }
752    if ( $installer::globals::languagepack ) { $installer::globals::addsystemintegration = 0; }
753    if (( $installer::globals::packageformat eq "native" ) || ( $installer::globals::packageformat eq "portable" )) { $installer::globals::addsystemintegration = 0; }
754
755    my $infoline = "Value of \$installer::globals::addsystemintegration: $installer::globals::addsystemintegration\n";
756    push( @installer::globals::globallogfileinfo, $infoline);
757}
758
7591;
760