diff options
Diffstat (limited to 'solenv/bin/installoffice.pl')
-rwxr-xr-x | solenv/bin/installoffice.pl | 933 |
1 files changed, 0 insertions, 933 deletions
diff --git a/solenv/bin/installoffice.pl b/solenv/bin/installoffice.pl deleted file mode 100755 index b6c852ae8624..000000000000 --- a/solenv/bin/installoffice.pl +++ /dev/null @@ -1,933 +0,0 @@ -: -eval 'exec perl -wS $0 ${1+"$@"}' - if 0; - -#************************************************************************* -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#***********************************************************************/ - -use strict; -use File::Find; -use File::Path; -my $script = $0; - -( our $script_name = $script ) =~ s/^.*\b(\w+)\.pl$/$1/; -( our $script_path = $script ) =~ s/$script_name.*//; - -# Prototypes -sub installOffice(); - -our $debug = 0; # run without executing commands - -our $is_command_infos = 1; # print command details before exec -our $show_NoMessage = 0; -our $show_Message = 1; - -# special handling for cwschackapi -our $cwsCheckApi = 0; - -# remove existant office installation -our $cleanup = 0; - -# should the office be startable without user interaction -our $autorun = 0; - -# should impress open documents without autopilot -our $autoimpress = 0; - -# force openOffice.org installation if StarOffice is available -our $is_ooo = 0; - -parseArgs(); - -our $is_admin_installation = 1; - -our $gui = $ENV{GUI}; -our $temp_path = $ENV{TEMP}; -if (!defined($temp_path)) { - $temp_path = $ENV{TMP}; -} - -our $vcsid = $ENV{VCSID}; -our $sversion_saved = 0; -our $FileURLPrefix = "file:///"; -our $userinstalldir = "UserInstallation"; -our $cygwin = "cygwin"; -our $prefered_lang = "en-US"; -our $global_instset_mask = ""; -#$smoketest_install = $ENV{SMOKETESTINSTALLSET}; - -if (!defined($gui)) { - print "The workstamp is missing. Please use setsolar\n"; - exit(1); -} - -our $OfficeDestinationPath; -our $is_do_deinstall; -our $CygwinLineends; -our $WinLineends; -our $PS ; -our $NewPathSeparator ; -our $shell ; -our $shellSetEnvVar; -our $shellCommandSep; -our $cdCommand; -our $PERL ; -our $REMOVE_DIR ; -our $REMOVE_FILE ; -our $LIST_DIR ; -our $COPY_FILE ; -our $COPY_DIR ; -our $MK_DIR ; -our $RENAME_FILE ; -our $nul ; -our $RESPFILE; -our $SVERSION_INI ; -our $SOFFICEBIN ; -our $UNOPKGBIN; -our $bootstrapini ; -our $bootstrapiniTemp ; -our $packpackage ; -our $user; - -if ($gui eq "WNT") { - $gui = $cygwin; -} - -if ($gui eq "WNT") { - $user = $ENV{USERNAME}; - $PS = '\\'; - $NewPathSeparator = ';'; - $shell = "$ENV{COMSPEC} -c "; - $shellSetEnvVar = "set "; - $shellCommandSep = "& "; - $cdCommand="cd /d "; - $PERL = "$shell $ENV{PERL}"; - $REMOVE_DIR = "$shell del /qsxyz"; - $REMOVE_FILE = "$shell del /q"; - $LIST_DIR = "$shell ls"; - $COPY_FILE = "$shell copy"; - $COPY_DIR = "$shell copy /s"; - $MK_DIR = "md"; - $RENAME_FILE = "ren"; - $nul = '> NUL'; - $RESPFILE="response_fat_wnt"; - $SVERSION_INI = $ENV{USERPROFILE} . $PS . "Anwendungsdaten" . $PS . "sversion.ini"; - $SOFFICEBIN = "soffice.exe"; - $bootstrapini = "bootstrap.ini"; - $UNOPKGBIN="unopkg.exe"; - $bootstrapiniTemp = $bootstrapini . "_"; - $packpackage = "msi"; - if (!defined($temp_path)) { - print "temp value is missing. Please set temp-variable\n"; - exit(1); - } -} -elsif ($gui eq "UNX") { - $user = $ENV{USER}; - $is_do_deinstall = 0; - $PS = '/'; - $shell = "/bin/sh -c "; - $shellSetEnvVar = "export "; - $shellCommandSep = ";"; - $cdCommand="cd "; - $NewPathSeparator = ':'; - $shell = ""; - $PERL = "$ENV{PERL}"; - $REMOVE_DIR = "rm -rf"; - $REMOVE_FILE = "rm -f"; - $LIST_DIR = "ls"; - $COPY_FILE = "cp -f"; - $COPY_DIR = "cp -rf"; - $MK_DIR = "mkdir"; - $RENAME_FILE = "mv"; - $nul = '> /dev/null'; - $RESPFILE="response_fat_unx"; - $SVERSION_INI = $ENV{HOME} . $PS . ".sversionrc"; - $SOFFICEBIN = "soffice"; - $bootstrapini = "bootstraprc"; - $UNOPKGBIN="unopkg"; - $bootstrapiniTemp = $bootstrapini . "_"; - $packpackage = $ENV{PKGFORMAT}; - if (!defined($temp_path)) { - $temp_path="/tmp"; - if (! -e $temp_path){ - print "temp value is missing. Please set temp-variable\n"; - exit(1); - } - } -} -elsif ($gui eq $cygwin) { - - $PS = '/'; - $NewPathSeparator = ':'; - $shell = "/bin/sh -c "; - $shellSetEnvVar = "export "; - $shellCommandSep = ";"; - $cdCommand = "cd "; - $PERL = "$ENV{PERL}"; - $REMOVE_DIR = "rm -rf"; - $REMOVE_FILE = "rm -f"; - $LIST_DIR = "ls"; - $COPY_FILE = "cp -f"; - $COPY_DIR = "cp -rf"; - $MK_DIR = "mkdir"; - $RENAME_FILE = "mv"; - $nul = '> /dev/null'; - $RESPFILE="response_fat_wnt"; - $SVERSION_INI = $ENV{USERPROFILE} . $PS . "Anwendungsdaten" . $PS . "sversion.ini"; - $SOFFICEBIN = "soffice"; - $bootstrapini = "bootstrap.ini"; - $bootstrapiniTemp = $bootstrapini . "_"; - $CygwinLineends = $/; - $WinLineends = "\r\n"; - &SetWinLineends(); - $packpackage = "msi"; - if (!defined($temp_path)) { - $temp_path="/tmp"; - if (! -e $temp_path){ - print "temp value is missing. Please set temp-variable\n"; - exit(1); - } - } -} -else { - print_error ("not supported system\n",1); -} - -my %PRODUCT1 = (Name => "StarOffice", instset => "instset_native"); -my %PRODUCT2 = (Name => "OpenOffice", instset => "instsetoo_native"); -our @PRODUCT = (\%PRODUCT1, \%PRODUCT2); - -our $SHIP = defined $ENV{SHIPDRIVE} ? $ENV{SHIPDRIVE} . $PS : "shipdrive_not_set"; - -if (defined($ENV{CWS_WORK_STAMP})){ - print " found CWS\n"; -} -elsif (isLocalEnv()){ - print " local environment\n"; -} -elsif (defined $ENV{SHIPDRIVE}) { - print " master version\n"; -} -elsif (defined $ENV{SOLARSRC}) { - print " OpenOffice master version\n"; -} -else { - print "Could not determine environment. Exit\n"; - exit 1 -} - - -our @error_messages = ( '', - 'lock flag for pkgadd still exist. Installation not possible!', - 'Error during installation!', - 'Error: patching configuration failed!', - 'Error: starting office failed or office crashed!', - 'Error during testing', - 'can not copy extension', - 'Error in setup log', - 'installationsset is not complete', - 'can not copy all basic scripts', - 'can not patch bottstrapini', - 'msiexec failed. Maybe you have got an installed version', - 'deinstallation is incomplete' -); - - -my $success = 0; -$success = installOffice(); - -if ($success != 0){ - exit(1); -} -exit(0); - -sub installOffice(){ - - # <DISABLED> - # my ($officeVersion, $instsetPath)= getInstset(); - # print "OFFICEVERSION:$officeVersion INSTSETPATH:$instsetPath\n" if $debug; - # my $sourcePath=$instsetPath.$PS.$officeVersion; - # </DISABLED> - # - # currently this installer does not install an office, it do pack a runnable office. - # Therefore we do not need to search for an instSet - my $sourcePath="dummy"; - my $officeVersion="dummy"; - - my $destinationPath = getDestinationPath($officeVersion); - print "destinationPath: $destinationPath\n" if $debug; - - removeOffice($destinationPath); - mkdirs($destinationPath); - - my $installCommand = getInstallCommand($sourcePath, $destinationPath, $officeVersion); - print "installCommand: $installCommand\n" if $debug; - - my $success=0; - $success = system($installCommand); - print "installoofice.pl::installoffice::success $success\n" if ($debug); - - if ($autorun) { - makeAutoRun($destinationPath); - } - - if ($autoimpress) { - makeAutoImpress($destinationPath); - } - - return $success; -} - -sub makeAutoImpress(){ - my $destinationPath = shift; - - if (patchXCU ($destinationPath, $script_path.$script_name."_impress.oxt") != 0) { - print_error("could not register ".$script_path.$script_name."_impress.oxt", "1"); - } - return 0; -} - - -sub makeAutoRun(){ - - my $destinationPath = shift; - - patchBootstraprc($destinationPath); - - if (patchXCU ($destinationPath, $script_path.$script_name.".oxt") != 0) { - print_error("could not register ".$script_path.$script_name.".oxt", "1"); - } - return 0; -} - - -sub patchBootstraprc(){ - my $destinationPath = shift; - my $bootstraprc=""; - - find sub { $bootstraprc=$File::Find::name if -e _ && /$bootstrapini$/ }, $destinationPath; - - print_error("could not find $bootstrapini", "1") if ( ! -e $bootstraprc ); - - open(BSRC, "<$bootstraprc") or errorFromOpen(" for reading " .$bootstraprc); - my @content = <BSRC>; - close(BSRC); - my @newContent; - foreach(@content) { - if ( /UserInstallation=./ ) { - push(@newContent, "UserInstallation=\$ORIGIN/../UserInstallation\n"); - } - else { - push(@newContent,$_); - } - } - - chmod(0755,$bootstraprc); - - open OUTFILE, ">$bootstraprc" or return errorFromOpen (" for writing " . $bootstraprc); - print OUTFILE @newContent; - close OUTFILE; - -} - -sub patchXCU(){ - my $destinationPath = shift; - my $oxt = shift; - my $unopkg=""; - - find sub { $unopkg=$File::Find::name if -e _ && /$UNOPKGBIN$/ }, $destinationPath; - - print_error("could not find $UNOPKGBIN", "1") if ( !-e $unopkg ); - print "unopkg: '$unopkg'\n" if $debug; - - if ($gui eq "WNT") { - $unopkg = "\"$unopkg\""; - } - - my $unopkgCommand = "$unopkg add $oxt"; - print "register oxt file ...\n" if $debug; - print "call $unopkgCommand\n" if $debug; - my $success=0; - $success = system($unopkgCommand); - - return $success; -} - -sub writeFile(){ - my $fileName = shift; - my @content = @_; - - open OUTFILE, ">$fileName" or return errorFromOpen (" for writing " . $fileName); - - my $lf; - if ($packpackage eq "msi"){ - $lf = "\r\n"; - } else { - $lf = "\n"; - } - - my $line; - foreach $line(@content) { - print "LINE: $line\n" if $debug; - print OUTFILE $line.$lf; - } - close(OUTFILE); - return 0; -} - -sub mkdirs(){ - my $directory = shift; - my $splitter=$PS; - if ( $PS eq "\\" ){ - $splitter="\\\\"; - } - my @aFolder=split($splitter,$directory); - - my $dir; - my $folder; - foreach $folder(@aFolder){ - if ( (! defined($dir)) && ($PS eq "\\")){ - $dir=$folder; - } else { - $dir=$dir.$PS.$folder; - } - if (! -e $dir ){ - print "try to create $dir\n" if $debug; - mkdir($dir); - } - } -} - -sub removeOffice(){ - - my $destPath=shift; - - if ($cleanup){ - print "remove old office installation...\n"; - - print "remove $destPath...\n" if $debug; - rmtree($destPath); - - } -} - -sub getInstallCommand() { - my $command; - $command = getDmakeInstalledCommand(@_); - # if ($packpackage eq "msi"){ - # $command = getWindowsInallCommand(@_); - # } else { - # $command = getUnixInstallCommand(@_); - # } - return $command; -} - -sub getDmakeInstalledCommand(){ - my ($sourcePath, $destPath, $officeVersion) = @_; - my $RootDir=$ENV{SRC_ROOT}; - - my $ProductName; - my $instset; - - # check if instset_native could be found - foreach my $pointer (@PRODUCT) { - $instset = $pointer->{'instset'}; - $ProductName = $pointer->{'Name'}; - my $instsetDir = "$RootDir$PS$instset"; - print "instsetDir: $instsetDir \n" if $debug; - - last if ($is_ooo && $ProductName eq "OpenOffice"); - last if ( ! $is_ooo && -e "$instsetDir"); - } - print "Product: $ProductName\n" if $debug;; - - my $dmakeTarget=lc($ProductName)."_en-US"; - - my $utilFolder = getInstsetUtilFolder($instset, $destPath, $RootDir); - my $dmakeCommand = " $cdCommand \"$utilFolder\" $shellCommandSep dmake $dmakeTarget PKGFORMAT=installed -vt"; - my $envset; - if ($gui eq "WNT") { - $envset="set LOCALINSTALLDIR=$destPath & set LOCALUNPACKDIR=$destPath &"; - }else { - $envset="LOCALINSTALLDIR=$destPath ; LOCALUNPACKDIR=$destPath ; export LOCALINSTALLDIR ; export LOCALUNPACKDIR ; "; - } - #my $command=$envset.$dmakeCommand; - my $command=$dmakeCommand; - return $command; -} - -sub getInstsetUtilFolder(){ - my $instset = shift; - my $destPath = shift; - my $RootDir = shift; - - my $instsetFolder = $RootDir.$PS.$instset; - my $utilFolder=""; - - if( open(DATEI, ">$instsetFolder".$PS."touch")) - { - close(DATEI); - unlink($instsetFolder.$PS."touch"); - print "$instsetFolder is writable \n" if $debug; - $utilFolder = $RootDir.$PS.$instset.$PS."util"; - } - else - { - print "$instsetFolder is NOT writable \n" if $debug; - print "copy $instset to $destPath$PS..\n" if $debug; - my $prjPath=$destPath.$PS.".."; - - my $command = "$ENV{COPYPRJ} -x $instset $prjPath"; - print $command if $debug; - system($command); - $utilFolder=$prjPath.$PS.$ENV{WORK_STAMP}.$PS.$instset.$PS."util"; - } - print "utilFolder: $utilFolder\n" if $debug; - return $utilFolder; -} - -# sub getInstsetFomInstsetNative(){ -# my (@DirArray, $TestDir1, $TestDir2); -# my $instset; -# my $ProductName; -# my $instDir=""; -# my $lang; -# my $RootDir=$ENV{SRC_ROOT}; -# my $StandDir = $ENV{SOLARSRC} . $PS; -# #$RootDir=~s/\w+$//; - -# foreach my $pointer (@PRODUCT) { -# $instset = $pointer->{'instset'}; -# $ProductName = $pointer->{'Name'}; -# @DirArray=(); -# $TestDir1 = "$RootDir$PS$instset$PS$ENV{INPATH}$PS$ProductName$PS$packpackage$PS" . "install$PS"; -# $TestDir2 = "$StandDir$instset$PS$ENV{INPATH}$PS$ProductName$PS$packpackage$PS" . "install$PS"; -# print "TestDir1: $TestDir1 \n"; -# print "TestDir2: $TestDir2 \n"; -# if (-e "$TestDir1") { -# $instDir= $TestDir1; -# } -# elsif (-e "$TestDir2") { -# $instDir="$TestDir2"; -# } -# if ($instDir eq "") { -# next; -# } - -# getSubDirs ("$instDir", \@DirArray); -# $lang = findSubDir (\@DirArray); -# print "Lang-Sel: $lang\n" if $is_command_infos; -# ; -# if (($instDir ne "") and (-e $instDir)) { -# return ($lang, $instDir, $ProductName, $instset); -# } -# } -# print_error ("no installationset found\n",2); - -# } - -sub getWindowsInallCommand(){ - my ($sourcePath, $destPath) = @_; - my $mask = "\\.msi\$"; - #my $DirArray; - my @DirArray = (); - getSubFiles ("$sourcePath", \@DirArray, $mask); - if ($#DirArray == -1) { - print_error ("Installationset in $sourcePath is incomplete", 2); - } - if ($#DirArray >= 1) { - print_error ("Installationset in $sourcePath hat too many msi-files", 2); - print "found the following msi-files: @DirArray\n" if $debug; - } - my $command = "msiexec.exe /a $sourcePath$PS$DirArray[0] -qn ALLUSERS=2 INSTALLLOCATION=$destPath"; - - return $command; -} - -sub getUnixInstallCommand() { - my ($sourcePath, $destPath, $officeVersion) = @_; - - my $userland="unknown"; - - if (defined($ENV{CWS_WORK_STAMP})){ - print " found CWS\n"; - $userland=$ENV{SOLARVERSION}.$PS.$ENV{INPATH}.$PS."bin".$ENV{UPDMINOREXT}.$PS."userscripts".$PS."install"; - } - elsif (isLocalEnv()){ - print " local environment\n"; - } - elsif (defined $ENV{SHIPDRIVE}) { - print " master version\n"; - $userland=$ENV{SHIPDRIVE}.$PS.$ENV{INPATH}.$PS."UserScripts".$PS.$ENV{PKGFORMAT}.$PS.$officeVersion.$PS."install"; - } - elsif (defined $ENV{SOLARSRC}) { - print " OpenOffice master version\n"; - print " command to install Office not implementet yet\n"; - exit(1); - } - else { - print "Could not determine environment. Exit\n"; - exit(1); - } - return "$userland $sourcePath $destPath"; -; - -} - -sub getDestinationPath { - # if (defined $ENV{SOLARROOT}){ - # # seems to be a Sun environment - # if (! -e $OfficeDestinationPath){ - - # } - # } - my $officeVersion = shift; - my $officename; - - if (defined($ENV{LOCALINSTALLDIR})){ - $OfficeDestinationPath=$ENV{LOCALINSTALLDIR}; - if(index($OfficeDestinationPath," ") >= 0) { - my $msg="You environemt variable '\$LOCALINSTALLDIR=$OfficeDestinationPath' contains white spaces."; - $msg = $msg." This is not allowed!"; - print_error($msg, "1"); - } - } - if (!defined($OfficeDestinationPath)){ - $officename = $officeVersion; - if (defined($ENV{CWS_WORK_STAMP})){ - $officename=$ENV{CWS_WORK_STAMP}; - } - $OfficeDestinationPath=$temp_path.$PS.$user.$PS."office".$PS.$officename; - } - - return $OfficeDestinationPath; -} - -# sub getInstset { - -# my ($INSTSET, $NEWINSTSET, $ProductName); - -# if (defined ($ENV{EPM}) && ($ENV{EPM} eq 'NO') && ($gui eq "UNX")) { # we do the install ourselves ... -# return (); -# } - -# print "get Instset\n" if $debug; -# $NEWINSTSET = ""; - -# if (!isLocalEnv() and !defined($ENV{CWS_WORK_STAMP}) and (-e $SHIP) and ($gui ne $cygwin)) { -# ($NEWINSTSET, $INSTSET) = getSetFromServer(); -# } -# else { -# ($NEWINSTSET, $INSTSET, $ProductName) = getInstsetFomInstsetNative(); -# } -# return ($NEWINSTSET, $INSTSET); -# } - -# sub getSetFromServer { -# my ($DirName, $SetupFullPath); -# my $workspace = $ENV{WORK_STAMP}; -# my $platform = $ENV{INPATH}; -# my $latestset; -# my (@DirArray, $mask, $buildid, $milestone); - -# foreach my $pointer (@PRODUCT) { -# my $ProductName = $pointer->{'Name'}; - -# print "##PRODUCT: $ProductName\n"; -# my $SetupFullPath = "$SHIP$ENV{INPATH}$PS$ProductName$PS$packpackage$PS"; -# if ( ! ( $workspace && $platform ) ) { -# print_error ( "Error: environment not set correctly.", 1); -# } -# # get latest broadcastet milestone and pack number -# ($milestone, $buildid) = get_milestoneAndBuildID( $workspace, $platform ); - -# if (defined $ENV{CWS_WORK_STAMP}) { -# # /unxlngi6.pro/StarOffice/rpm/ SRC680_m245_native_packed-2_en-US.9267/ -# $mask = "^$workspace" . "_" . $milestone . "_native_packed-(\\d+)_en-US\\.$buildid"; -# } else { -# # cws03/os110/OOH680/src.m4/instset_native/unxlngi6.pro/StarOffice/rpm install/en-US/RPMS -# $mask = "^$workspace" . "_" . $milestone . "_native_packed-(\\d+)_en-US\\.$buildid"; -# } -# print "MASK: $mask\n"; -# $global_instset_mask = $mask; -# getSubFiles ($SetupFullPath, \@DirArray, $mask); -# @DirArray = sort InstsetSort @DirArray; - -# if ($#DirArray > -1) { -# $latestset = $DirArray [$#DirArray]; -# $DirName = $latestset; -# } -# else { -# print_error ("Cannot find install set $SetupFullPath for $workspace $milestone", 2); -# } - -# print "Latest install sets: $latestset\n" if $debug; - -# print "$DirName\t $SetupFullPath\n" if $debug; -# # compare with file system -# # at the moment just the existence is checked. For security reasons it might be -# # better to additionally check whether there are newer sets (this must not happen, -# # but who knows ...) -# if ( -d $SetupFullPath ) { -# # if found => return and don't continue searching -# # this is usefull to set a priority to find installsets in @PRODUCT -# # first comes, first wins -# return ($DirName, $SetupFullPath); -# } -# } - -# # compare with file system -# # at the moment just the existence is checked. For security reasons it might be -# # better to additionally check whether there are newer sets (this must not happen, -# # but who knows ...) -# if ( -d $SetupFullPath ) { -# return ($DirName, $SetupFullPath); -# } else { -# print_error ("Cannot find install set $SetupFullPath for $workspace $milestone", 2); -# } -# } - -# sub get_milestoneAndBuildID { -# my ( $ws, $pf ) = @_; -# my ($milestone, $buildid, $upd, $path, $updext, $line); - -# if ( $ws =~ /^\D+(\d+)$/) { -# $upd = $1; -# } - -# if (defined ($ENV{UPDMINOREXT})) { -# $updext = $ENV{UPDMINOREXT}; -# } -# else { -# $updext = ""; -# } - -# $path = "$ENV{SOLARVER}$PS$pf$PS" . "inc$updext$PS$upd" . "minor.mk"; -# print "$path\n" if $debug; -# local *MINORMK; - -# if ( !open(MINORMK,$path) ) { -# print "FATAL: can't open $path\n"; -# return (0,0); -# } - -# if (!eof(MINORMK)) { -# while ($line = <MINORMK>) { -# chomp($line); -# if ( $line =~ /LAST_MINOR=(\w+)/ ) { -# $milestone = $1; -# } -# elsif ( $line =~ /BUILD=(\d+)/ ) { -# $buildid = $1; -# } -# } - -# close(MINORMK); -# } -# if (!defined($milestone)) { -# print_error ("Milestone ist not defined!", 2); -# } -# if (!defined($buildid)) { -# print_error ("Build-ID ist not defined!", 2); -# } - -# return ($milestone, $buildid); -# } - -sub print_error -{ - my $message = shift; - my $error_code = shift; - - print STDERR "ERROR: $message\n"; - doExit($error_code); -} - -sub getSubFiles { - my ($startDir, $DirArray_ref, $mask) = @_; - my ($dir); - local *DIR; - opendir(DIR,"$startDir"); - while($dir = readdir(DIR)) { - if (($dir =~ /\.$/) or ($dir !~ /$mask/)) { - next; - } - push (@{$DirArray_ref}, "$dir"); - } - closedir(DIR); - -} - -sub InstsetSort { - my ($a1, $b1); - if ($a =~ /$global_instset_mask/) { - $a1 = $1; - } - if ($b =~ /$global_instset_mask/) { - $b1 = $1; - } - $a1 <=> $b1; -} - -sub isLocalEnv { - my $returnvalue = 0; - if (defined ($ENV{SOL_TMP}) && defined ($ENV{SOLARVERSION})) { - my $mask = $ENV{SOL_TMP}; - $mask =~ s/\\/\\\\/; - print "Mask: $mask\n" if $debug; - if ($ENV{SOLARVERSION}=~ /$mask/) { - $returnvalue = 1; - } - } - return $returnvalue; -} - -sub getSubDirs { - my ($startDir, $DirArray_ref) = @_; - my ($dir); - opendir(DIR,"$startDir"); - while($dir = readdir(DIR)) { - if (($dir !~ /\.$/) and ( -d "$startDir$dir") ) { - push (@{$DirArray_ref}, "$dir"); - } - } - closedir(DIR); - -} - -sub findSubDir { - my ($DirArray_ref) = @_; - my (@sortedArray, $dir, $instdir); - @sortedArray = sort langsort @{$DirArray_ref}; - print "Langs: @sortedArray\n" if $is_command_infos; - foreach $dir (@sortedArray) { - if ($dir =~ /log$/) { - next; - } - $instdir = "$dir"; - return $instdir; - } - return ""; -} - -sub langsort { - if ($a eq $prefered_lang) { - return -1; - } - elsif ($b eq $prefered_lang) { - return 1; - } - else { - $a cmp $b; - } -} - -sub doExit -{ - my $error_code = shift; - # if ($sversion_saved) { - # restore_sversion ($SVERSION_INI); - # } - # if ($is_remove_on_error) { - # if ($is_do_deinstall) { - # deinstallInstallation ($installpath); - # } - # removeInstallation($installpath); - # } - # else { - # print_notRemoved ($installpath); - # } - if ( $error_code ) { - print STDERR "\nFAILURE: $script_name aborted.\n"; - } - exit($error_code); - -} - - -sub parseArgs -{ - for (my $i=0; $i<=$#ARGV; $i++) { - if ( $ARGV[$i] =~ /^-cwscheckapi$/ ) { - my $value = $ARGV[++$i]; - if ($value =~ /^true$/ || ($value =~ /^1$/) ) { - $cwsCheckApi = 1; - $cleanup = 1; - $autorun = 1; - }; - - } - - if ( $ARGV[$i] =~ /^-dest$/ ) { - $OfficeDestinationPath = $ARGV[++$i]; - } - - if ( $ARGV[$i] =~ /^-cleanup$/ ) { - my $value = $ARGV[++$i]; - if ($value =~ /^true$/ || ($value =~ /^1$/ )) { $cleanup = 1 }; - } - - if ( $ARGV[$i] =~ /^-autorun$/ ) { - my $value = $ARGV[++$i]; - if ($value =~ /^true$/ || ($value =~ /^1$/ )) { $autorun = 1 }; - } - - if ( $ARGV[$i] =~ /^-autoimpress$/ ) { - my $value = $ARGV[++$i]; - if ($value =~ /^true$/ || ($value =~ /^1$/ )) { $autoimpress = 1 }; - } - - if ( $ARGV[$i] =~ /^-debug$/ ) { - my $value = $ARGV[++$i]; - if ($value =~ /^true$/ || ($value =~ /^1$/ )) { $debug = 1 }; - } - - if ( $ARGV[$i] =~ /^-ooo$/ ) { - my $value = $ARGV[++$i]; - if ($value =~ /^true$/ || ($value =~ /^1$/ )) { $is_ooo = 1 }; - } - } - -} - -sub getSubDirsFullPath { - my ($startDir, $DirArray_ref) = @_; - my ($dir); - opendir(DIR,"$startDir"); - while($dir = readdir(DIR)) { - if (($dir !~ /\.$/) and ( -d "$startDir$dir") ) { - push (@{$DirArray_ref}, "$startDir$dir"); - } - } - closedir(DIR); -} - -sub errorFromOpen { - my ($file) = @_; - print_error( "can not open $file", "1"); -} - |