mirror of
https://github.com/ctm/executor.git
synced 2024-11-30 05:51:22 +00:00
333 lines
9.1 KiB
Bash
Executable File
333 lines
9.1 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
# $Id: q6_installer.sh,v 1.8 1999/05/19 02:35:38 ctm Exp $
|
|
|
|
# This installer installs Quicken 6 from the Quicken 6 Deluxe CD.
|
|
#
|
|
# This installer itself is ugly, but the end-result illustrates some
|
|
# of the ways in which Executor can be configured to run things a bit
|
|
# nicer than by just the command line.
|
|
#
|
|
# It would be better to have a generic app-that-uses-Executor
|
|
# installer than to build one that's Quicken specific, but Linux Expo
|
|
# is just a few days away. We'll ship this now and do more later
|
|
# after we build Executor enthusiasm in the Linux community and build
|
|
# Linux enthusiasm in the Mac-developer community (Carbonless Copies).
|
|
#
|
|
# This script is designed to work on any distribution, although if
|
|
# you're running a Red Hat system, it will make an entry in the
|
|
# wmconfig directory so Quicken can easily be started from a menu.
|
|
|
|
exedir=/home/executor
|
|
cdrom=/dev/cdrom
|
|
minfree=12000
|
|
wmconfigdir=/etc/X11/wmconfig
|
|
quickconfig=quicken
|
|
manualconfig=quicken_manual
|
|
|
|
# make sure executor-aux is installed
|
|
|
|
if [ ! -d "$exedir" ]; then
|
|
echo You have to install executor-aux and Executor before you can install Quicken
|
|
exit 1
|
|
fi
|
|
|
|
# check for enough disk space
|
|
|
|
if [ -d "$exedir/Commercial" ]; then
|
|
prefq6="$exedir/Commercial"
|
|
else
|
|
prefq6="$exedir"
|
|
fi
|
|
|
|
free=`df -k "$prefq6" | awk 'NR==2{print $4}'`
|
|
if [ $free -lt $minfree ]; then
|
|
echo Not enough free space in $prefq6 -- $minfree needed during installation
|
|
exit 1
|
|
fi
|
|
|
|
# Undo MacVolumes so it won't lead us away from the CD drive
|
|
|
|
unset MacVolumes
|
|
|
|
# verify the CD-ROM is readable
|
|
|
|
if [ ! -r "$cdrom" ]; then
|
|
echo "The CD-ROM drive isn't readable"
|
|
exit 1
|
|
fi
|
|
|
|
# verify that the Quicken 6 CD is in the drive
|
|
|
|
if dd < "$cdrom" bs=6k count=1 2>/dev/null | grep -q 'Quicken Deluxe 6' > /dev/null; then
|
|
>/dev/null;
|
|
else
|
|
echo "The Quicken 6 CD is not in $cdrom"
|
|
exit 1
|
|
fi
|
|
|
|
# figure out which flavor of Executor they're using
|
|
|
|
sysdir="$exedir/System Folder"
|
|
cpanel="$sysdir/Control Panels"
|
|
pref_file1="$sysdir/Preferences/Quicken 6 Preferences"
|
|
pref_file2="$sysdir/Preferences/%Quicken 6 Preferences"
|
|
|
|
for dir in /usr/local/bin /opt/executor/bin; do
|
|
for exe in executor executor-sdl executor-svga; do
|
|
if [ -x "$dir/$exe" ]; then
|
|
executor="$dir/$exe"
|
|
break 2
|
|
fi
|
|
done
|
|
done
|
|
|
|
if [ "x$executor" = "x" ]; then
|
|
echo "Can't find executor binary"
|
|
exit 1
|
|
fi
|
|
|
|
svga=`expr "$executor" : '.*svga'`
|
|
|
|
# Make sure we can write where we need to
|
|
|
|
for f in "$prefq6" /opt/executor/bin /usr/local/bin "$sysdir"; do
|
|
if [ ! -w "$f" ]; then
|
|
echo "$f"' is not writable. You may need to use the "su" command to
|
|
run this installer as root. If you do, you should type "xhost localhost"
|
|
before you type "su".'
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# oops -- create directory that should have been in 2.1pr2
|
|
|
|
if [ ! -e "$cpanel" ]; then
|
|
mkdir "$cpanel"
|
|
fi
|
|
|
|
# make a time-stamp for later
|
|
timestamp=/tmp/q6_installer
|
|
> $timestamp.$$
|
|
|
|
# give some instructions
|
|
|
|
echo 'Starting the Quicken Installer in Executor. In Executor, click
|
|
on each of the four highlited buttons ("Continue", "Continue",
|
|
"Install" and "Yes"). Then use the mouse to descend into
|
|
/home/executor/Commercial. Once you get there, click the Install
|
|
button. You don'\''t need to use your keyboard.
|
|
'
|
|
|
|
# start Executor, guess at likely reasons for failure
|
|
|
|
if $executor -system 7 'Quicken Deluxe 6 CD:Quicken Deluxe 6 Installer'; then
|
|
> /dev/null
|
|
else
|
|
echo '
|
|
'"$executor failed to run."'
|
|
'
|
|
if [ $svga != 0 ]; then
|
|
echo 'Make sure you have configured svgalib properly.'
|
|
elseif [ x"$DISPLAY" = "x" ];
|
|
echo 'You need to use "startx" to start your X server.'
|
|
else
|
|
echo 'If you'\''re using the "su" command, you may need to "suspend" it,
|
|
then run "xhost localhost" and then "fg" to resume your super-user session.'
|
|
fi
|
|
echo 'After that, try running this installer again.'
|
|
exit 1
|
|
fi
|
|
|
|
# find out where they really installed it
|
|
|
|
for dir in "$prefq6" "$exedir" "$exedir/.."; do
|
|
cd "$dir"
|
|
pwd=`pwd`
|
|
q6folder=`find "$pwd" -follow -name "Quicken 6 Folder" -print 2>/dev/null`
|
|
qd6folder=`expr "$q6folder" : '\(.*\)/.*'`
|
|
if [ "x$qd6folder" != x ]; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
# check for error
|
|
|
|
if [ "x$qd6folder" = x ]; then
|
|
"Can't find the installed files. You should have installed in $prefq6"
|
|
exit 1
|
|
fi
|
|
|
|
# remove extraneous files
|
|
|
|
if [ "$qd6folder" -nt $timestamp.$$ ]; then
|
|
|
|
cd "$qd6folder"
|
|
|
|
rm -r *"Home Inventory Folder" \
|
|
*"Mutual Fund Finder Folder" \
|
|
*"Quicken Deluxe 6" \
|
|
*"Quicken Preview Folder" \
|
|
"Quicken 6 Folder"/*Guide
|
|
fi
|
|
|
|
rm $timestamp.$$
|
|
|
|
# TODO: extract bitmaps for menus and start button?
|
|
# that requires an application that isn't ready to ship yet
|
|
|
|
# install quicken wrapper
|
|
|
|
qd6="$qd6folder/Quicken 6 Folder/Quicken 6"
|
|
|
|
echo '#! /bin/sh
|
|
exec "'"$executor"'" "'"$qd6"'" $*' > /opt/executor/bin/quicken
|
|
chmod +x /opt/executor/bin/quicken
|
|
cd /usr/local/bin
|
|
if [ ! -e quicken ]; then
|
|
ln -s ../../../opt/executor/bin/quicken .
|
|
fi
|
|
|
|
# install quicken manual wrapper
|
|
|
|
# NOTE: Executor 2.1pr2 and previous versions have a bug that prevents
|
|
# DocViewer from opening up the files that it is provided on the
|
|
# command line. This has been fixed internally at ARDI, but the
|
|
# fix didn't make it into 2.1pr2 -- it will be present in the next
|
|
# release, after Linux Expo.
|
|
|
|
# Preferred size is 600x800 (i.e. portrait), but need to leave 16 and
|
|
# 64 pixels for the window frame
|
|
|
|
if [ $svga != 0 ]; then
|
|
size=""
|
|
else
|
|
size=`xwininfo -root | grep geometry | tr 'x+' ' ' | awk '
|
|
{
|
|
x=$2-16;
|
|
y=$3-64;
|
|
if (x > 600)
|
|
x = 600;
|
|
if (y > 800)
|
|
y = 800;
|
|
printf ("-size %dx%d", x, y);
|
|
}'`
|
|
fi
|
|
|
|
dv="$qd6folder/User's Manuals Folder/Apple DocViewer"
|
|
echo '#! /bin/sh
|
|
exec "'"$executor"'" "'"$dv"'" '"$size"' $* "Quicken Deluxe 6 CD:Misc Files 4:Quicken User'"'"'s Manual"' > /opt/executor/bin/quicken_manual
|
|
chmod +x /opt/executor/bin/quicken_manual
|
|
cd /usr/local/bin
|
|
if [ ! -e quicken_manual ]; then
|
|
ln -s ../../../opt/executor/bin/quicken_manual .
|
|
fi
|
|
|
|
# start quicken so they can register it -- this can create permission problems
|
|
|
|
/usr/local/bin/quicken
|
|
|
|
# change ownership so that non-root users won't get surprised
|
|
|
|
user="$USER"
|
|
group=`groups | awk '{print $1}'`
|
|
writable=n
|
|
acceptable=n
|
|
cdromfix=y
|
|
|
|
until expr "$acceptable" : '[yY].*' > /dev/null; do
|
|
acceptable=y
|
|
echo -n "Which user should own the Quicken files ($user)? "
|
|
read newuser
|
|
user=`expr "$newuser" "|" "$user"`
|
|
echo -n "Which group should own the Quicken files ($group)? "
|
|
read newgroup
|
|
group=`expr "$newgroup" "|" "$group"`
|
|
echo -n "Should members of $group be able to write to the Quicken files ($writable)? "
|
|
read newwritable
|
|
writable=`expr "$newwritable" "|" "$writable"`
|
|
if expr "$writable" : '[yY].*' > /dev/null; then
|
|
allowance=can
|
|
else
|
|
allowance=can\'t
|
|
fi
|
|
|
|
echo -n "Make CD-ROM readable so users can access Quicken 6 Manual ($cdromfix)? "
|
|
read newcdromfix
|
|
cdromfix=`expr "$newcdromfix" "|" "$cdromfix"`
|
|
if expr "$cdromfix" : '[yY].*' > /dev/null; then
|
|
cdromfix=y
|
|
else
|
|
cdromfix=n
|
|
fi
|
|
|
|
echo "user = $user, group = $group, group $allowance write to the Quicken files, fixcd = $cdromfix"
|
|
if grep -q "^$user:" /etc/passwd; then
|
|
> /dev/null
|
|
else
|
|
echo "WARNING: $user does not appear to be a valid user."
|
|
acceptable=n
|
|
fi
|
|
if grep -q "^$group:" /etc/group; then
|
|
> /dev/null
|
|
else
|
|
echo "WARNING: $group does not appear to be a valid group."
|
|
acceptable=n
|
|
fi
|
|
echo -n "Do you want to use these values ($acceptable)? "
|
|
read newacceptable
|
|
acceptable=`expr "$newacceptable" "|" "$acceptable"`
|
|
done
|
|
|
|
if [ $allowance = "can" ]; then
|
|
group_perm=+w
|
|
else
|
|
group_perm=-w
|
|
fi
|
|
|
|
chown -R "$user.$group" "$qd6folder" "$pref_file1" "$pref_file2"
|
|
chmod -R g$group_perm "$qd6folder" "$pref_file1" "$pref_file2"
|
|
|
|
if [ $cdromfix = y ]; then
|
|
chmod a+r /dev/cdrom
|
|
fi
|
|
|
|
# TODO: Install Zapf-dingbats font
|
|
|
|
# NOTE: if we just chuck them into /etc/X11/wmconfig then they'll be visible
|
|
# from the NextLevel menu, which is correct, since they're neither GNOME nor
|
|
# KDE compliant
|
|
|
|
if [ -d "$wmconfigdir" ]; then
|
|
cd "$wmconfigdir"
|
|
if [ ! -e "$quickconfig" ]; then
|
|
echo 'quicken name "Quicken"
|
|
quicken description "Financial Tool"
|
|
quicken exec "quicken &"
|
|
quicken group "Applications/Finance"' > "$quickconfig"
|
|
fi
|
|
|
|
if [ ! -e "$manualconfig" ]; then
|
|
echo 'quicken_manual name "Quicken Manual"
|
|
quicken_manual description "Documentation (requires Quicken CD-ROM in drive)"
|
|
quicken_manual exec "quicken_manual &"
|
|
quicken_manual group "Applications/Finance"' > "$manualconfig"
|
|
fi
|
|
|
|
fi
|
|
|
|
echo '
|
|
Quicken is now installed. You can start Quicken directly by using the
|
|
command "quicken" from a terminal, or using the features of your desktop,
|
|
window manager or control-panel to add a quicken entry.
|
|
|
|
When your Quicken CD-ROM is in your CD-ROM drive, you can use the
|
|
command "quicken_manual" to view the Quicken Manual. When Apple
|
|
DocViewer starts up, you'\''ll need to choose "Open..." from the
|
|
"File" menu, then click on the drive button to find your Quicken CD
|
|
and descend into "Misc Files 4" to open the Quicken User'\''s Manual.
|
|
Some things that are described in the Quicken User'\''s Manual will work
|
|
on a Macintosh, but won'\''t work under Executor.'
|
|
|
|
exit 0
|