#!/bin/bash # Copyright 2009 Nick White # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program 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 General Public License for more details. # # See for a copy of the GNU General # Public License. # # Runs the appropriate installer(s) for an Infinity Engine game, # based on the CD inserted FULLGAMENAME='' MINSCRIPT='' EXTRASCRIPT='' PATCHES='' CDNO='' scriptdir="$(dirname $0)" source "$scriptdir/includes/generic-includes.sh" source "$scriptdir/includes/cd-includes.sh" source "$scriptdir/includes/patch-includes.sh" source "$scriptdir/includes/autoinstall-includes.sh" parseargs "$@" echo "Checking CD version" CDMD5=$(md5sum $CDMOUNT/data1.cab|awk '{print $1}') while [ -z "$MINSCRIPT" ]; do case "$CDMD5" in $BG1_5CD_INTL_MD5 ) FULLGAMENAME="Baldurs Gate 1: 5CD International version" SHORTGAMENAME="baldursgate1" MINSCRIPT="bg1/install-5cd-minimal.sh" EXTRASCRIPT="bg1/install-5cd-extra.sh" PATCHES="bg1/install-patch-intl.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-baldurdash-text.sh" WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" CDNO=5 ;; $BG1_TOTSC_3CD_US_MD5 ) FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 3CD US version" SHORTGAMENAME="baldursgate1totsc" MINSCRIPT="bg1/install-3cd-minimal.sh" EXTRASCRIPT="bg1/install-3cd-extra.sh" PATCHES="bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" CDNO=3 ;; $BG1_TOTSC_1CD_UK_MD5 ) FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 1CD UK version" SHORTGAMENAME="baldursgate1totsc" MINSCRIPT="bg1/install-1cd-totsc-uk.sh" PATCHES="bg1/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" WINDOWSFILES="bgmain2.exe baldur.exe config.exe mconvert.exe" ;; $BG2_4CD_US_MD5 ) FULLGAMENAME="Baldurs Gate 2 - Shadows of Amn: 4CD US version" SHORTGAMENAME="baldursgate2soa" MINSCRIPT="bg2/install-4cd-minimal-us.sh" # TODO: uncomment when complete EXTRASCRIPT="bg2/install-4cd-extra-us.sh" PATCHES="" # TODO: fill in patches # bg2/install-patch-soa-us.sh bg2/install-patch-baldurdash-fix.sh bg2/install-patch-soa-baldurdash-text.sh" WINDOWSFILES="bgdxtest.exe bggltest.exe glsetup.exe bgconfig.exe bgmain.exe charview.exe" ;; # $BG2_TOB_1CD_US_MD5 ) # FULLGAMENAME="Baldurs Gate 2 - Throne of Bhaal: 1CD US version" # SHORTGAMENAME="baldursgate2tob" # MINSCRIPT="bg2/install-1cd-tob-us.sh" # PATCHES="" # TODO: fill in patches # # bg2/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" # # TODO: correct the list of windows files. # WINDOWSFILES="" # "bgmain2.exe baldur.exe config.exe mconvert.exe" # ;; $PST_2CD_MD5 ) FULLGAMENAME="Planescape Torment: 2CD version" SHORTGAMENAME="planescapetorment" MINSCRIPT="pst/install-2cd-minimal.sh" EXTRASCRIPT="pst/install-2cd-extra.sh" PATCHES="pst/install-patch-fixpack.sh pst/install-patch-ub.sh pst/install-patch-tweaks.sh" WINDOWSFILES="torment.exe ereg" CDNO=2 ;; $PST_4CD_MD5 ) FULLGAMENAME="Planescape Torment: 4CD version" SHORTGAMENAME="planescapetorment" MINSCRIPT="pst/install-4cd-minimal.sh" EXTRASCRIPT="pst/install-4cd-extra.sh" PATCHES="pst/install-patch-official.sh pst/install-patch-fixpack.sh pst/install-patch-ub.sh pst/install-patch-tweaks.sh" WINDOWSFILES="torment.exe ereg" CDNO=4 ;; $IWD_2CD_UK_MD5 ) FULLGAMENAME="Icewind Dale 2CD UK version" SHORTGAMENAME="icewinddale" MINSCRIPT="iwd/install-2cd-uk-minimal.sh" EXTRASCRIPT="iwd/install-2cd-uk-extra.sh" PATCHES="iwd/install-patch-uk-fix.sh iwd/install-patch-us.sh" WINDOWSFILES="3dfx.dll config.exe icewind.ini keymap.ini language.ini mpicewnd.mpi" CDNO=2 ;; * ) echo "Unrecognised CD - please select game from menu" choosegame ;; esac done [ -z "$TARGETDIR" ] && [ -n "$SHORTGAMENAME" ] && export TARGETDIR="$PWD/$SHORTGAMENAME" [ -z "$TARGETDIR" ] && diequietly # if targetdir already exists, make sure we never clobber it [ -d "$TARGETDIR" ] && export alwaysdiesafely=1 echo "$FULLGAMENAME detected, installing" "${scriptdir}/${MINSCRIPT}" -i "$TARGETDIR" -c "$CDMOUNT" 1>/dev/null || diequietly if [ -n "$EXTRASCRIPT" ]; then if query "Do you want to do a full install, so the CDs will not be needed again?" y; then FULLINSTALL=1 "${scriptdir}/${EXTRASCRIPT}" -i "$TARGETDIR" -c "$CDMOUNT" 1>/dev/null || diequietly else FULLINSTALL=0 fi fi if [ -n "$PATCHES" ]; then for patch in $PATCHES; do patch="$scriptdir/$patch" # grab 17th line from scripts (description line; after license) patchtitle=$(sed -n 17p $patch|cut -d ' ' -f 2-) if query "Do you want to install $patchtitle" y; then $patch \ -i "$TARGETDIR" \ -p "$PATCHDIR" \ -l "$LANGUAGE" \ -c "$CDMOUNT" \ 1>/dev/null fi done fi if [ -n "$WINDOWSFILES" ]; then if query "Do you want to remove unneeded windows files?" n; then for badfile in $WINDOWSFILES; do rm -rf "$TARGETDIR"/$badfile done fi fi echo echo "$FULLGAMENAME installed successfully" recommendcfg $CDNO