#!/bin/sh # # vi:set ts=40 sw=2: # # Install Script for UNIX Acrobat Exchange and Reader v. 2.0 # # Copyright (c)1995, Adobe Systems Incorporated # All Rights Reserved # # High Level Design: # # Initialization # Output License to controlling terminal # Does the user accept the terms and conditions of the license? # No: exit # Yes: continue # Enumerate all of the configurations # If just one configuration # Do an easy installation # else # Do a custom installation # ########################################################################## echoawk () { echo $* | awk '{ printf "%s", $0 }' } echon () { echo -n "$*" } echoc () { echo "${*}\c" } ########################################################################## yesno() { msg="$1" def="$2" while true ; do echo " " $echonl "$msg" read answer if [ "$answer" ] ; then case "$answer" in y|Y|yes|YES) return 0 ;; n|N|no|NO) return 1 ;; *) echo " " echo "ERROR: Invalid response, expected \"yes\" or \"no\"." continue ;; esac else return $def fi done } OutputLicense () { if [ -z "$1" ] ; then return fi if [ ! -f "$1" ] ; then echo " " echo "ERROR: Cannot find license file ... aborting" echo " " exit 1 fi if [ -z "$PAGER" -o "`type $PAGER`" = "$PAGER not found" ] ; then if [ "`type more`" != "more not found" ] ; then command=more elif [ "`type pg`" != "pg not found" ] ; then command=pg else command=cat fi else command="$PAGER" fi echo " " "$command" "$1" answer= while [ -z "$answer" ] ; do echo " " echo " " echo "To accept the terms and conditions of this agreement enter \"accept\"." echo "To decline the terms and conditions of this agreement enter \"decline\"." echo " " $echonl "Do you accept the terms and conditions of this license agreement? " read answer ucanswer=`echo "${answer}" | tr '[a-z]' '[A-Z]'` case "$ucanswer" in ACCEPT) ;; DECLINE) echo " " echo "License not accepted ... aborting installation" echo " " exit 1 ;; *) echo " " echo "ERROR: Invalid response, expected \"accept\" or \"decline\" ... try again" answer= ;; esac done } PrintRequiredFree() { total=0 for i in $* ; do if [ "$i" -a -f "$i" ] ; then size=`ls -lLon "$i" | ( read perm links owner size date ; echo $size )` if [ "$size" ] ; then total=`expr $total + $size` fi fi done megs=`expr $total / 1048576 + 1` echo " " echo "This installation requires ${megs}MB of free disk space." } FilterPathName () { newpathname="$1" case "$newpathname" in ~*) if [ -f /bin/csh -a -x /bin/csh ] ; then newpathname=`/bin/csh -c "echo $newpathname"` fi ;; ../*|./*) newpathname=`pwd`/"${newpathname}" ;; *) ;; esac echo "${newpathname}" } ExtractFiles () { ( cd "$1" ; tar xf "$2" ) } InstallFiles () { msg="$1" install="$2" shift shift echo " " for i in "$@" ; do if [ "$i" ] ; then if [ "$msg" ] ; then $echonl "$msg" msg="" fi ExtractFiles "$install" "$i" fi done if [ -z "$msg" ] ; then echo "Done" fi } InstallBin() { install="$1" for i in "$install"/bin/acro*.sh ; do if [ -f "$i" ] ; then filename="$install"/bin/`basename "$i" .sh` ed -s "$i" <<__EOF__ 1,\$s@REPLACE_ME@$install@ w q __EOF__ if [ $? != 0 ] ; then echo "ERROR installing $filename" continue fi chmod +x "$i" if [ $? != 0 ] ; then echo "ERROR installing $filename" continue fi mv "$i" "$filename" if [ $? != 0 ] ; then echo "ERROR installing $filename" continue fi fi done } GetInstallDirectory () { if [ -z "$1" ] ; then product=Acrobat else product="$1" fi var=$2 case "$product" in AcroExch) productName="Acrobat Exchange" ;; AcroRead) productName="Acrobat Reader" ;; *) productName="Acrobat" ;; esac defdir="/usr/local/$product" case "$OSname" in SunOS) case "$OSrelease" in 4.1.3*|4.1.4*) defdir="/usr/$product" ;; 5.*) defdir="/opt/$product" ;; esac ;; HP-UX) case "$OSrelease" in *.09.*) defdir="/usr/$product" ;; *.10.*) defdir="/opt/$product" ;; *) defdir="/opt/$product" ;; esac ;; esac while true ; do if [ -z "$InstallDir" ] ; then InstallDir="$defdir" fi echo " " $echonl "Enter installation directory for $product [${InstallDir}] " read answer case "$answer" in "") ;; *) InstallDir="$answer" ;; esac InstallDir=`FilterPathName "$InstallDir"` if [ ! -d "$InstallDir" ] ; then echo " " $echonl "Directory \"$InstallDir\" does not exist create it now? [y] " read answer if [ "$answer" ] ; then case "$answer" in y|Y|yes|YES) ;; n|N|no|NO) echo " " echo "Acrobat installation aborted." echo " " exit 1 ;; *) echo " " echo "ERROR: Invalid response, expected \"yes\" or \"no\"." continue ;; esac fi mkdir -p "$InstallDir" if [ ! -d "$InstallDir" ] ; then echo " " echo "ERROR: Cannot make directory \"$InstallDir\"." InstallDir="" continue; fi fi if ( echo foo > "$InstallDir"/AcroWriteTest ) 2> /dev/null ; then rm -f "$InstallDir"/AcroWriteTest break else echo " " echo "ERROR: Cannot write to directory \"$InstallDir\"." InstallDir="" continue fi done eval $var=\"$InstallDir\" } CheckSerialNumber() { p1="^[a-zA-Z]\{3\}[0-9]\{3\}[a-zA-Z0-9]\{2\}[0-9]\{6\}-[0-9]\{3\}$" p2="^[a-zA-Z]\{3\}[0-9]\{3\}[a-zA-Z0-9]\{2\}[0-9]\{6\}-[0-9]\{3\}-[0-9]\{3\}$" if [ `expr "$1" : "$p1"` != 0 ] \ || [ `expr "$1" : "$p2"` != 0 ] ; then return 0 fi return 1 } GetSerialNumber() { dir="$2" file="$2/${1}Data" while true ; do echo " " $echonl "Enter product serial number? " read sn if CheckSerialNumber "$sn" ; then break fi echo " " echo "ERROR: Invalid serial number ... try again" done echo " " $echonl "Enter company name? " read co if [ ! -d "$dir" ] ; then mkdir "$dir" fi rm -f "$file" echo "serialNumber:$sn" > "$file" echo "companyName:$co" >> "$file" } InstallReader() { ReadConfig="$1" ReadPlatformTar="$2" SearchPlatformTar="$3" CustomPlatformTar="$4" dosearch=no if [ "$SearchTar" -o "$CustomTar" -o "$SearchPlatformTar" -o "$CustomPlatformTar" ] ; then if [ "$SerialNumber" ] ; then dosearch=yes else echo "" echo "WARNING: This Acrobat Reader installation does not include Acrobat Search." if yesno "Proceed with installation? [y] " 0 ; then : else exit 1 fi fi fi OutputLicense "$ReadLicense" ReadLicense="" if [ "$dosearch" = yes ] ; then PrintRequiredFree "$ReadTar" "$SearchTar" "$CustomTar" \ "$ReadPlatformTar" "$SearchPlatformTar" "$CustomPlatformTar" if [ -z "$ReadInstallDir" ] ; then GetInstallDirectory AcroRead ReadInstallDir fi InstallFiles "Installing platform independent files ... " \ "$ReadInstallDir" "$ReadTar" "$SearchTar" "$CustomTar" InstallFiles "Installing platform dependent files ... " \ "$ReadInstallDir" \ "$ReadPlatformTar" "$SearchPlatformTar" "$CustomPlatformTar" InstallBin "$ReadInstallDir" ReadTar="" SearchTar="" CustomTar="" if [ "$SerialNumber" ] ; then dir="$ReadInstallDir/$ReadConfig" if [ ! -d "$dir" ] ; then mkdir "$dir" fi rm -f "$dir/AcroReadData" echo "serialNumber:$SerialNumber" > "$dir/AcroReadData" fi else PrintRequiredFree "$ReadTar" "$ReadPlatformTar" if [ -z "$ReadInstallDir" ] ; then GetInstallDirectory AcroRead ReadInstallDir fi InstallFiles "Installing platform independent files ... " \ "$ReadInstallDir" "$ReadTar" InstallFiles "Installing platform dependent files ... " \ "$ReadInstallDir" "$ReadPlatformTar" InstallBin "$ReadInstallDir" ReadTar="" fi } InstallExchange() { ExchConfig="$1" ExchPlatformTar="$2" SearchPlatformTar="$3" CustomPlatformTar="$4" OutputLicense "$ExchLicense" ExchLicense="" PrintRequiredFree "$ExchTar $SearchTar $CustomTar" \ "$ExchPlatformTar" "$SearchPlatformTar" "$CustomPlatformTar" if [ -z "$ExchInstallDir" ] ; then GetInstallDirectory AcroExch ExchInstallDir fi GetSerialNumber AcroExch "$ExchInstallDir/$ExchConfig" InstallFiles "Installing platform independent files ... " \ "$ExchInstallDir" "$ExchTar" "$SearchTar" "$CustomTar" InstallFiles "Installing platform dependent files ... " \ "$ExchInstallDir" \ "$ExchPlatformTar" "$SearchPlatformTar" "$CustomPlatformTar" InstallBin "$ExchInstallDir" ExchTar="" SearchTar="" CustomTar="" } ############################################################## # # Initialization: # umask 022 ScriptName=`basename $0` CurrentDirectory=`pwd` ScriptDirectory=`dirname $0` case "${ScriptDirectory}" in /*) ;; .) ScriptDirectory="$CurrentDirectory" ;; *) ScriptDirectory="$CurrentDirectory"/"$ScriptDirectory" ;; esac if [ "`type uname`" != "uname not found" ] ; then OSname=`uname -s` OSrelease=`uname -r` else OSname=unknown OSrelease=unknown fi if [ `echo "x\c"` = "x" ] ; then echonl=echoc else echonl=echon fi # # Get the filenames: # for i in ${ScriptDirectory}/* ; do if [ -f "$i" ] ; then case $i in */sernum.txt|*/SERNUM.TXT) a="`cat "$i" | tr '\015' '\012' | ( read a b ; echo $a )`" if CheckSerialNumber "$a" ; then SerialNumber="$a" fi ;; */licread.txt|*/LICREAD.TXT) ReadLicense="$i" ;; */licexch.txt|*/LICEXCH.TXT) ExchLicense="$i" ;; */read.tar|*/READ.TAR) ReadTar="$i" ;; */exch.tar|*/EXCH.TAR) ExchTar="$i" ;; */search.tar|*/SEARCH.TAR) SearchTar="$i" ;; */custom.tar|*/CUSTOM.TAR) CustomTar="$i" ;; */ssole.tar|*/SSOLE.TAR) ExchSparcSolarisTar="$i" ;; */ssolr.tar|*/SSOLR.TAR) ReadSparcSolarisTar="$i" ;; */ssols.tar|*/SSOLS.TAR) SearchSparcSolarisTar="$i" ;; */ssolc.tar|*/SSOLC.TAR) CustomSparcSolarisTar="$i" ;; */ssune.tar|*/SSUNE.TAR) ExchSparcSunTar="$i" ;; */ssunr.tar|*/SSUNR.TAR) ReadSparcSunTar="$i" ;; */ssuns.tar|*/SSUNS.TAR) SearchSparcSunTar="$i" ;; */ssunc.tar|*/SSUNC.TAR) CustomSparcSunTar="$i" ;; */hpuxe.tar|*/HPUXE.TAR) ExchHppaHpuxTar="$i" ;; */hpuxr.tar|*/HPUXR.TAR) ReadHppaHpuxTar="$i" ;; */hpuxs.tar|*/HPUXS.TAR) SearchHppaHpuxTar="$i" ;; */hpuxc.tar|*/HPUXC.TAR) CustomHppaHpuxTar="$i" ;; esac fi done # # Validate the configurations: # NumConfigs=0 if [ "$ExchTar" -a "$ExchLicense" ] ; then if [ "$ExchSparcSolarisTar" ] ; then NumConfigs=`expr $NumConfigs + 1` ExchSparcSolarisNum=$NumConfigs fi if [ "$ExchSparcSunTar" ] ; then NumConfigs=`expr $NumConfigs + 1` ExchSparcSunNum=$NumConfigs fi if [ "$ExchHppaHpuxTar" ] ; then NumConfigs=`expr $NumConfigs + 1` ExchHppaHpuxNum=$NumConfigs fi fi if [ "$ReadTar" -a "$ReadLicense" ] ; then if [ "$ReadSparcSolarisTar" ] ; then NumConfigs=`expr $NumConfigs + 1` ReadSparcSolarisNum=$NumConfigs fi if [ "$ReadSparcSunTar" ] ; then NumConfigs=`expr $NumConfigs + 1` ReadSparcSunNum=$NumConfigs fi if [ "$ReadHppaHpuxTar" ] ; then NumConfigs=`expr $NumConfigs + 1` ReadHppaHpuxNum=$NumConfigs fi fi if [ "$NumConfigs" = "0" ] ; then echo " " echo "ERROR: No configurations found ... aborting" echo " " exit 1 elif [ "$NumConfigs" = "1" ] ; then SingleConfig=true fi NumConfigs=`expr $NumConfigs + 1` ExitNum=$NumConfigs # # Check if there is a configuration supported by this OS. # case "$OSname" in SunOS) case "$OSrelease" in 4.1.3*|4.1.4*) ExchDefaultNum="$ExchSparcSunNum" ReadDefaultNum="$ReadSparcSunNum" DefaultName="SPARC/Solaris 1.x" ;; 5.1|5.1.*|5.2|5.2.*) ;; 5.*) ExchDefaultNum="$ExchSparcSolarisNum" ReadDefaultNum="$ReadSparcSolarisNum" DefaultName="SPARC/Solaris 2.x" ;; esac ;; HP-UX) case "$OSrelease" in *.09.*|*.10.*) ExchDefaultNum="$ExchHppaHpuxNum" ReadDefaultNum="$ReadHppaHpuxNum" DefaultName="HP-UX" ;; esac ;; esac if [ -z "$ExchDefaultNum" -a -z "$ReadDefaultNum" ] ; then echo "" echo "WARNING: The current OS ($OSname/$OSrelease) is not supported." if yesno "Continue installation? [n] " 1 ; then : else exit 1 fi fi # # If multiple confurations, get the default configuration # if [ -z "$SingleConfig" ] ; then if [ "$ExchDefaultNum" ] ; then if yesno "Install default configuration, Acrobat Exchange for $DefaultName? [y] " 0 ; then DefaultConfig="$ExchDefaultNum" fi elif [ "$ReadDefaultNum" ] ; then if yesno "Install default configuration, Acrobat Reader for $DefaultName? [y] " 0 ; then DefaultConfig="$ReadDefaultNum" fi fi fi # # If a single configuration available the loop will be executed once # otherwise it will ask for each configuration to install # while [ "$NumConfigs" -gt 1 ] ; do # # If multiple configuration ask for which to install # if [ "$SingleConfig" ] ; then ConfigNum=1 elif [ "$DefaultConfig" ] ; then ConfigNum="$DefaultConfig" else # # Display multiple configurations # echo " " echo "The following configurations are available for installation:" echo " " if [ "$ExchSparcSolarisNum" ] ; then echo " ${ExchSparcSolarisNum}. Acrobat Exchange for SPARC/Solaris 2.x" fi if [ "$ExchSparcSunNum" ] ; then echo " ${ExchSparcSunNum}. Acrobat Exchange for SPARC/Solaris 1.x" fi if [ "$ExchHppaHpuxNum" ] ; then echo " ${ExchHppaHpuxNum}. Acrobat Exchange for HP-UX" fi if [ "$ReadSparcSolarisNum" ] ; then echo " ${ReadSparcSolarisNum}. Acrobat Reader for SPARC/Solaris 2.x" fi if [ "$ReadSparcSunNum" ] ; then echo " ${ReadSparcSunNum}. Acrobat Reader for SPARC/Solaris 1.x" fi if [ "$ReadHppaHpuxNum" ] ; then echo " ${ReadHppaHpuxNum}. Acrobat Reader for HP-UX" fi if [ "$ExitNum" ] ; then echo " ${ExitNum}. Exit Acrobat installation" fi echo " " $echonl "Enter the configuration number to install: " read ConfigNum fi # # Install the configuration # if [ -z "$ConfigNum" ] ; then echo " " echo "ERROR: Invalid response ... try again" continue elif [ "$ConfigNum" = "$ExchSparcSolarisNum" ] ; then InstallExchange sparcsolaris "$ExchSparcSolarisTar" \ "$SearchSparcSolarisTar" "$CustomSparcSolarisTar" ExchSparcSolarisNum="" elif [ "$ConfigNum" = "$ReadSparcSolarisNum" ] ; then InstallReader sparcsolaris "$ReadSparcSolarisTar" \ "$SearchSparcSolarisTar" "$CustomSparcSolarisTar" ReadSparcSolarisNum="" elif [ "$ConfigNum" = "$ExchSparcSunNum" ] ; then InstallExchange sparcsun "$ExchSparcSunTar" \ "$SearchSparcSunTar" "$CustomSparcSunTar" ExchSparcSunNum="" elif [ "$ConfigNum" = "$ReadSparcSunNum" ] ; then InstallReader sparcsun "$ReadSparcSunTar" \ "$SearchSparcSunTar" "$CustomSparcSunTar" ReadSparcSunNum="" elif [ "$ConfigNum" = "$ExchHppaHpuxNum" ] ; then InstallExchange hppahpux "$ExchHppaHpuxTar" \ "$SearchHppaHpuxTar" "$CustomHppaHpuxTar" ExchHppaHpuxNum="" elif [ "$ConfigNum" = "$ReadHppaHpuxNum" ] ; then InstallReader hppahpux "$ReadHppaHpuxTar" \ "$SearchHppaHpuxTar" "$CustomHppaHpuxTar" ReadHppaHpuxNum="" elif [ "$ConfigNum" = "$ExitNum" ] ; then break else echo " " echo "ERROR: Invalid response ... try again" continue fi if [ "$DefaultConfig" ] ; then break; fi if [ -z "$MultipleInstall" ] ; then break; fi NumConfigs=`expr $NumConfigs - 1` done echo " " exit 0