diff options
31 files changed, 408 insertions, 179 deletions
diff --git a/auto-installer.sh b/auto-installer.sh index 797623a..3654263 100755 --- a/auto-installer.sh +++ b/auto-installer.sh @@ -22,104 +22,20 @@ MINSCRIPT='' EXTRASCRIPT='' PATCHES='' CDNO='' +CDSTART='' 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" +source "$scriptdir/includes/cd-list.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" - 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" - 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 keymap.ini language.ini mpicewnd.mpi" - CDNO=2 - ;; - $IWD2_2CD_US_MD5 ) - FULLGAMENAME="Icewind Dale 2: 2CD US version" - SHORTGAMENAME="icewinddale2" - MINSCRIPT="iwd2/install-2cd-us-minimal.sh" - EXTRASCRIPT="iwd2/install-2cd-us-extra.sh" - PATCHES="iwd2/install-patch-us.sh" - WINDOWSFILES="config.exe icewind2.ini keymap.ini language.ini binkw32.dll iwd2.exe" - CDNO=2 - ;; - * ) - echo "Unrecognised CD - please select game from menu" - choosegame - ;; - esac -done +export CDMD5=$(md5sum "${CDMOUNT}/data1.cab"|awk '{print $1}') [ -z "$TARGETDIR" ] && [ -n "$SHORTGAMENAME" ] && export TARGETDIR="$PWD/$SHORTGAMENAME" [ -z "$TARGETDIR" ] && diequietly @@ -139,13 +55,24 @@ if [ -n "$EXTRASCRIPT" ]; then fi fi +if [ "$FULLINSTALL" -eq 0 ]; then + if [ -n "$EXPANSIONSCRIPT" ]; then + if query "Do you want to install the files needed by the $EXPANSIONNAME expansion?" y; then + EXPANSIONINSTALL=1 + "${scriptdir}/${EXPANSIONSCRIPT}" -i "$TARGETDIR" -c "$CDMOUNT" 1>/dev/null || diequietly + else + EXPANSIONINSTALL=0 + fi + fi +fi + if [ -n "$PATCHES" ]; then - for patch in $PATCHES; do + 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-) + patchtitle=$(sed -n 17p "$patch"|cut -d ' ' -f 2-) if query "Do you want to install $patchtitle" y; then - $patch \ + "$patch" \ -i "$TARGETDIR" \ -p "$PATCHDIR" \ -l "$LANGUAGE" \ @@ -157,8 +84,8 @@ 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 + for badfile in "$WINDOWSFILES"; do + rm -rf "${TARGETDIR}/${badfile}" done fi fi @@ -166,4 +93,4 @@ fi echo echo "$FULLGAMENAME installed successfully" -recommendcfg $CDNO +recommendcfg $CDNO $CDSTART diff --git a/bg1/install-1cd-totsc-uk.sh b/bg1/install-1cd-totsc-uk.sh index 4067e6b..49270fd 100755 --- a/bg1/install-1cd-totsc-uk.sh +++ b/bg1/install-1cd-totsc-uk.sh @@ -45,4 +45,4 @@ copylower "$CDMOUNT/cd6/" "$TARGETDIR" mkdir -p "${TARGETDIR}/mpsave" cp -R "${CDMOUNT}/"[Ss]ave/* "${TARGETDIR}/mpsave" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-3cd-extra.sh b/bg1/install-3cd-extra.sh index 7af0cbb..f517bb0 100755 --- a/bg1/install-3cd-extra.sh +++ b/bg1/install-3cd-extra.sh @@ -36,4 +36,5 @@ getcd 3 "$CD3_MD5" "CD3/Movies/MovieCD3.bif" copylower "${CDMOUNT}/cd3/" "$TARGETDIR" copylower "${CDMOUNT}/cd4/" "$TARGETDIR" copylower "${CDMOUNT}/cd6/" "$TARGETDIR" -setperms "$TARGETDIR" + +teardown "$TARGETDIR" diff --git a/bg1/install-3cd-minimal.sh b/bg1/install-3cd-minimal.sh index a0b49e8..24f9dd8 100755 --- a/bg1/install-3cd-minimal.sh +++ b/bg1/install-3cd-minimal.sh @@ -48,4 +48,4 @@ cp "${CDMOUNT}/Manual/TotscManual.pdf" "${TARGETDIR}/manual/" || die cp "${CDMOUNT}/baldur.ico" "$TARGETDIR" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR"
\ No newline at end of file diff --git a/bg1/install-5cd-extra.sh b/bg1/install-5cd-extra.sh index df5dbef..dcca194 100755 --- a/bg1/install-5cd-extra.sh +++ b/bg1/install-5cd-extra.sh @@ -36,5 +36,6 @@ for CDNUMBER in 1 2 3 4 5; do fi copylower "${CDMOUNT}/cd${CDNUMBER}/" "$TARGETDIR" - setperms "$TARGETDIR" done + +teardown "$TARGETDIR" diff --git a/bg1/install-5cd-minimal.sh b/bg1/install-5cd-minimal.sh index 0e34e33..ad8c681 100755 --- a/bg1/install-5cd-minimal.sh +++ b/bg1/install-5cd-minimal.sh @@ -42,4 +42,4 @@ mkdir -p "${TARGETDIR}/movies" copylower "${CDMOUNT}/baldur.ico" "$TARGETDIR" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-baldurdash-fix.sh b/bg1/install-patch-baldurdash-fix.sh index 90b629b..71ffab9 100755 --- a/bg1/install-patch-baldurdash-fix.sh +++ b/bg1/install-patch-baldurdash-fix.sh @@ -41,5 +41,4 @@ unzip -L "${TMPDIR}/${patch_name}" -d "$TMPDIR" 2>/dev/null rm "${TMPDIR}/${patch_name}" "${TMPDIR}/bg1fixpack11readme.txt" cp "${TMPDIR}/"* "${TARGETDIR}/override/" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-baldurdash-text.sh b/bg1/install-patch-baldurdash-text.sh index 885bc1b..7fa845f 100755 --- a/bg1/install-patch-baldurdash-text.sh +++ b/bg1/install-patch-baldurdash-text.sh @@ -45,5 +45,4 @@ getpatch $patch_url unzip -L "${TMPDIR}/${patch_name}" -d "$TMPDIR" 2>/dev/null cp "${TMPDIR}/dialog.tlk" "${TARGETDIR}/" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-intl.sh b/bg1/install-patch-intl.sh index 4f8a45f..745ee38 100755 --- a/bg1/install-patch-intl.sh +++ b/bg1/install-patch-intl.sh @@ -41,5 +41,4 @@ unshield -g "$LANGUAGE" -d "$TMPDIR" -L x "${TMPDIR}/data1.cab" || diesoftly LANGUAGE="$(echo $LANGUAGE|tr A-Z a-z|tr ' ' _)" # alter formatting cp -R "${TMPDIR}/${LANGUAGE}/"* "$TARGETDIR" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-totsc-baldurdash-text.sh b/bg1/install-patch-totsc-baldurdash-text.sh index 5a9bc71..ac576bc 100755 --- a/bg1/install-patch-totsc-baldurdash-text.sh +++ b/bg1/install-patch-totsc-baldurdash-text.sh @@ -45,5 +45,4 @@ getpatch $patch_url unzip -L "${TMPDIR}/${patch_name}" -d "$TMPDIR" 2>/dev/null cp "${TMPDIR}/dialog.tlk" "${TARGETDIR}/" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-totsc-intl.sh b/bg1/install-patch-totsc-intl.sh index c2f2162..337aa1d 100755 --- a/bg1/install-patch-totsc-intl.sh +++ b/bg1/install-patch-totsc-intl.sh @@ -40,5 +40,4 @@ unshield -d "$TMPDIR" -L x "${TMPDIR}/data1.cab" || diesoftly cp -R "${TMPDIR}/minimumdata/"* "$TARGETDIR" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-totsc-uk.sh b/bg1/install-patch-totsc-uk.sh index 29638a5..4a7727d 100755 --- a/bg1/install-patch-totsc-uk.sh +++ b/bg1/install-patch-totsc-uk.sh @@ -40,5 +40,4 @@ unshield -d "$TMPDIR" -L x "${TMPDIR}/data1.cab" || diesoftly cp -R "${TMPDIR}/minimumdata/"* "$TARGETDIR" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-totsc-us.sh b/bg1/install-patch-totsc-us.sh index 9581919..f01e4ec 100755 --- a/bg1/install-patch-totsc-us.sh +++ b/bg1/install-patch-totsc-us.sh @@ -40,5 +40,4 @@ unshield -d "$TMPDIR" -L x "${TMPDIR}/data1.cab" || diesoftly cp -R "${TMPDIR}/minimumdata/"* "$TARGETDIR" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg1/install-patch-us.sh b/bg1/install-patch-us.sh index f22045f..5ed2d8e 100755 --- a/bg1/install-patch-us.sh +++ b/bg1/install-patch-us.sh @@ -40,5 +40,4 @@ unshield -d "$TMPDIR" -L x "${TMPDIR}/data1.cab" || diesoftly cp -R "${TMPDIR}/english/"* "$TARGETDIR" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/bg2/install-soa-4cd-us-extra.sh b/bg2/install-soa-4cd-us-extra.sh new file mode 100755 index 0000000..a6a0687 --- /dev/null +++ b/bg2/install-soa-4cd-us-extra.sh @@ -0,0 +1,53 @@ +#! /bin/bash +# +# Baldur's Gate 2 (4CD US version) Full Install +# Copyright (C) 2009 GemRB Installers, Nick Daly +# +# 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 <http://www.gnu.org/licenses/> for a copy of the GNU General +# Public License. + +scriptdir="$(dirname $0)"/.. +source "${scriptdir}/includes/generic-includes.sh" +source "${scriptdir}/includes/cd-includes.sh" + +parseargs "$@" + +checkforbin unshield + +CD2_MD5="c78f41ff4cb47ea04fdf25ea6f55eb8b" +CD3_MD5="61fa51451c9ab102383c082fac3687dc" +CD4_MD5="d13f925c01c1f78fd35baa708715ebbd" + +function bgtwo_smart_install +{ + # usage cd# + cp -r "${CDMOUNT}/CD${1}/" "$TARGETDIR/data" + chmod -R 755 "$TARGETDIR/data/CD${1}" + mkdir -p "$TARGETDIR/cd${1}/data" + mv "$TARGETDIR/data/CD${1}/Data/AREA"*".bif" "$TARGETDIR/cd${1}/data" + mv "$TARGETDIR/data/CD${1}/Data/"* "$TARGETDIR/data" + mv "$TARGETDIR/data/CD${1}/Movies" "$TARGETDIR/cd${1}/movies" + rm -r "$TARGETDIR/data/CD${1}/" + +} + +getcd 2 $CD2_MD5 "data3.cab" +bgtwo_smart_install 2 + +getcd 3 $CD3_MD5 "data4.cab" +bgtwo_smart_install 3 + +getcd 4 $CD4_MD5 "data5.cab" +bgtwo_smart_install 4 + +teardown "$TARGETDIR" diff --git a/bg2/install-4cd-minimal-us.sh b/bg2/install-soa-4cd-us-minimal.sh index 42eda0c..7833dca 100755 --- a/bg2/install-4cd-minimal-us.sh +++ b/bg2/install-soa-4cd-us-minimal.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# Baldur's Gate 2 (4CD US version) Minimal Install -# Copyright (C) 2009 Nick Daly +# Baldur's Gate 2 Shadows of Amn (4CD US version) Minimal Install +# Copyright (C) 2009 GemRB Installers, Nick Daly # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -33,7 +33,7 @@ mkdir -p "${TARGETDIR}/portraits" || die cp "${CDMOUNT}/baldur.ico" "$TARGETDIR" || die -unshield -d "$TARGETDIR" -L x "${CDMOUNT}/data1.cab" || die +unshield -L x "${CDMOUNT}/data1.cab" -d "$TARGETDIR" || die rm -r "${TARGETDIR}/_"* # remove all the the fake directories. @@ -41,9 +41,10 @@ for i in "${TARGETDIR}/hd0_"* ; do j=`echo $i | sed 's#hd0_##g' - ` ; mv "$i" "$ move_and_remove "${TARGETDIR}/cab" "${TARGETDIR}" move_and_remove "${TARGETDIR}/compiler" "${TARGETDIR}/script compiler" -move_and_remove "${TARGETDIR}/register" "${TARGETDIR}/eReg" move_and_remove "${TARGETDIR}/sound" "${TARGETDIR}/sounds" -rm -r "${TARGETDIR}/cache100" "${TARGETDIR}/cache/cache150.txt" "${TARGETDIR}/mplayer" +for directory in "compiled" "decompiled" "errors"; do mkdir -p "${TARGETDIR}/script compiler/${directory}" || die; done -setperms "$TARGETDIR" +rm -r "${TARGETDIR}/cache100" "${TARGETDIR}/cache/cache150.txt" "${TARGETDIR}/mplayer" "${TARGETDIR}/register" + +teardown "$TARGETDIR" diff --git a/bg2/install-soa-4cd-us-tobMinimal.sh b/bg2/install-soa-4cd-us-tobMinimal.sh new file mode 100755 index 0000000..11e6cb7 --- /dev/null +++ b/bg2/install-soa-4cd-us-tobMinimal.sh @@ -0,0 +1,32 @@ +#! /bin/bash +# +# Baldur's Gate 2 Shadows of Amn (4CD US version) Minimal TOB Install +# Copyright (C) 2009 GemRB Installers, Nick Daly +# +# 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 <http://www.gnu.org/licenses/> for a copy of the GNU General +# Public License. + +scriptdir="$(dirname $0)"/.. +source "${scriptdir}/includes/generic-includes.sh" +source "${scriptdir}/includes/cd-includes.sh" + +parseargs "$@" + +checkforbin unshield + +CD2_MD5="c78f41ff4cb47ea04fdf25ea6f55eb8b" + +getcd 2 $CD2_MD5 "data3.cab" +copylower "${CDMOUNT}/CD2/" "$TARGETDIR/cd2/data" + +teardown "$TARGETDIR" diff --git a/bg2/install-tob-1cd-us-minimal.sh b/bg2/install-tob-1cd-us-minimal.sh new file mode 100755 index 0000000..67aa795 --- /dev/null +++ b/bg2/install-tob-1cd-us-minimal.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# +# Baldur's Gate 2 Throne of Bhaal (1CD US version) Minimal Install +# Copyright (C) 2009 GemRB Installers, Nick Daly +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. + +scriptdir="$(dirname $0)"/.. +source "${scriptdir}/includes/generic-includes.sh" +source "${scriptdir}/includes/cd-includes.sh" + +parseargs "$@" + +checkforbin unshield + +getcd 1 $BG2_TOB_1CD_US_MD5 data1.cab + +mkdir -p "$TARGETDIR" || die + +if [ ! -e "${TARGETDIR}/cd2/data/area000a.bif" ] +then + echo "You haven't installed BG2-SOA!" + die + # TODO ask user to run the appropriate preinstaller. +fi + +unshield -d "$TARGETDIR" -L x "${CDMOUNT}/data1.cab" || die + +rm -r "${TARGETDIR}/_"* # remove all the the fake directories. + +move_and_remove "${TARGETDIR}/hd025music" "${TARGETDIR}/music" +move_and_remove "${TARGETDIR}/hd0_english/characters" "${TARGETDIR}/characters" +move_and_remove "${TARGETDIR}/hd0_english/override" "${TARGETDIR}/override" +move_and_remove "${TARGETDIR}/hd0_override" "${TARGETDIR}/override" +move_and_remove "${TARGETDIR}/minimum_25_data" "${TARGETDIR}/data" +move_and_remove "${TARGETDIR}/minimum_25_data_english" "${TARGETDIR}/data" +move_and_remove "${TARGETDIR}/hd0_english/" "${TARGETDIR}/" +move_and_remove "${TARGETDIR}/hd0" "${TARGETDIR}/" + +teardown "$TARGETDIR" diff --git a/includes/autoinstall-includes.sh b/includes/autoinstall-includes.sh index 8f80036..0cd3754 100644 --- a/includes/autoinstall-includes.sh +++ b/includes/autoinstall-includes.sh @@ -38,64 +38,39 @@ function query done } -function choosegame -{ - while true; do - choice=0 - echo "Choose the game to install from the list:" - echo "1 | Baldur's Gate 1 (5CD International version)" - echo "2 | Baldurs Gate & Tales of the Sword Coast (3CD US version)" - echo "3 | Tales of the Sword Coast (1CD UK version)" - echo "4 | Planescape: Torment (4CD version)" - echo "5 | Planescape: Torment (2CD version)" - echo "6 | Icewind Dale (2CD UK version)" - echo "7 | Icewind Dale 2 (2CD version)" - - read -n 1 choice - echo - - case $choice in - 1 ) export CDMD5="138528155dfeb695bd63f90eacee7dc0" - return 0 ;; - 2 ) export CDMD5="1a6828b97a27967e8c4acc25e1ef48d2" - return 0 ;; - 3 ) export CDMD5="e27d259ddc0171ff945dbba136e60309" - return 0 ;; - 4 ) export CDMD5="5e8c2075163aca124de4a467fb33063d" - return 0 ;; - 5 ) export CDMD5="640b61443cc86c434f1b6826e63c0e33" - return 0 ;; - 6 ) export CDMD5="b79582f4f80270d48e6b26f529ba31dd" - return 0 ;; - 7 ) export CDMD5="77307366ba3e8a246f6f238cbb3b7874" - return 0 ;; - esac - done -} - function recommendcfg { - # usage: recommendcfg [numofcds] + # usage: recommendcfg [numofcds] [startCd] if [ "$1" ]; then - NUMOFCDS=$1 + NUMOFCDS="$1" else NUMOFCDS=1 fi + if [ "$2" ]; then + STARTCD="$2" + else + STARTCD=1 + fi + echo echo "To play the game with GemRB, you will need to add the following" echo "lines to your GemRB.cfg file:" echo LINE="GamePath=$TARGETDIR"; echo $LINE if [ $FULLINSTALL -eq 1 ]; then - for CDNUMBER in $(seq $NUMOFCDS); do - LINE="CD$CDNUMBER=$TARGETDIR" + for CDNUMBER in $(seq $startCd $(($NUMOFCDS+$startCd-1))); do + if [ -d "${TARGETDIR}/cd${CDNUMBER}" ]; then + LINE="CD${CDNUMBER}=${TARGETDIR}/cd${CDNUMBER}" + else + LINE="CD${CDNUMBER}=${TARGETDIR}" + fi echo $LINE done echo "GameOnCD=0" else - for CDNUMBER in $(seq $NUMOFCDS); do + for CDNUMBER in $(seq $startCd $(($NUMOFCDS+$startCd-1))); do LINE="CD$CDNUMBER=$CDMOUNT/cd$CDNUMBER" echo $LINE done diff --git a/includes/cd-includes.sh b/includes/cd-includes.sh index 3ef9670..86359ea 100644 --- a/includes/cd-includes.sh +++ b/includes/cd-includes.sh @@ -32,7 +32,7 @@ export IWD_2CD_US_MD5="b79582f4f80270d48e6b26f529ba31dd" export IWD_2CD_UK_MD5="b79582f4f80270d48e6b26f529ba31dd" export IWD_HOW_1CD_US_MD5="d2c42de47026f6384053965319ff511b" -export IWD2_2CD_US_MD5="77307366ba3e8a246f6f238cbb3b7874" +export IWD2_2CD_INTL_MD5="77307366ba3e8a246f6f238cbb3b7874" # a record of every IE collection I can find. export IWD_ULTIMATE_COLLECTION_MD5="" diff --git a/includes/cd-list.sh b/includes/cd-list.sh new file mode 100644 index 0000000..bcdf5c4 --- /dev/null +++ b/includes/cd-list.sh @@ -0,0 +1,163 @@ +#!/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 <http://www.gnu.org/licenses/> for a copy of the GNU General +# Public License. +# +# Selects the appropriate installer(s) for an Infinity Engine game, +# based on the CD inserted + +function get_game +{ + 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-soa-4cd-us-minimal.sh" + EXTRASCRIPT="bg2/install-soa-4cd-us-extra.sh" + EXPANSIONSCRIPT="bg2/install-soa-4cd-us-tobMinimal.sh" + EXPANSIONNAME="Throne of Bhaal" + 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" + CDNO=4 + ;; + $BG2_TOB_1CD_US_MD5 ) + FULLGAMENAME="Baldurs Gate 2 - Throne of Bhaal: 1CD US version" + SHORTGAMENAME="baldursgate2soa" + MINSCRIPT="bg2/install-tob-1cd-us-minimal.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" + WINDOWSFILES="autorun.ini bgconfig.exe bgdxtest.exe bggltest.exe bgmain.exe charview.exe glsetup.exe update.url earthlink gamespy" + CDNO=1 + CDSTART=5 + ;; + $PST_2CD_MD5 ) + FULLGAMENAME="Planescape Torment: 2CD version" + SHORTGAMENAME="planescapetorment" + MINSCRIPT="pst/install-2cd-minimal.sh" + EXTRASCRIPT="pst/install-2cd-extra.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" + WINDOWSFILES="torment.exe ereg" + CDNO=4 + ;; + $IWD_2CD_UK_MD5 ) + FULLGAMENAME="Icewind Dale 2CD International 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 + ;; + $IWD2_2CD_INTL_MD5 ) + FULLGAMENAME="Icewind Dale 2CD International 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 or change the disc in ${CDMOUNT}" + choosegame + ;; + esac + done + + export FULLGAMENAME SHORTGAMENAME MINSCRIPT EXTRASCRIPT EXPANSIONSCRIPT EXPANSIONNAME PATCHES WINDOWSFILES CDNO CDSTART +} + +function choosegame +{ + while true; do + choice=0 + # TODO: don't forget to add all the games to this list. + echo "Choose the game to install from the list:" + echo "1 | Baldur's Gate 1 (5CD International version)" + echo "2 | Baldur's Gate & Tales of the Sword Coast (3CD US version)" + echo "3 | Tales of the Sword Coast (1CD UK version)" + echo "4 | Baldur's Gate 2 - Shadows of Amn (4CD US version)" + echo "5 | Baldur's Gate 2 - Throne of Bhaal (1CD US version)" + echo "6 | Planescape: Torment (2CD version)" + echo "7 | Planescape: Torment (4CD version)" + echo "8 | Icewind Dale (2CD UK version)" + echo "9 | Icewind Dale 2 (2CD International version)" + echo "Z | My game isn't listed." + echo "Q | Quit" + + read -n 1 choice + echo + + case $choice in + 1 ) export CDMD5=$BG1_5CD_INTL_MD5 + return 0 ;; + 2 ) export CDMD5=$BG1_TOTSC_3CD_US_MD5 + return 0 ;; + 3 ) export CDMD5=$BG1_TOTSC_1CD_UK_MD5 + return 0 ;; + 4 ) export CDMD5=$BG2_4CD_US_MD5 + return 0 ;; + 5 ) export CDMD5=$BG2_TOB_1CD_US_MD5 + return 0 ;; + 6 ) export CDMD5=$PST_2CD_MD5 + return 0 ;; + 7 ) export CDMD5=$PST_4CD_MD5 + return 0 ;; + 8 ) export CDMD5=$IWD_2CD_UK_MD5 + return 0 ;; + 9 ) export CDMD5=$IWD2_2CD_INTL_MD5 + return 0 ;; + [Qq] ) diequietly + return 0 ;; + [Zz] ) echo + "$(dirname $0)/disc_collector.sh" + return 0 ;; + esac + done +} diff --git a/includes/generic-includes.sh b/includes/generic-includes.sh index ac62dd2..b58177b 100644 --- a/includes/generic-includes.sh +++ b/includes/generic-includes.sh @@ -141,22 +141,56 @@ function parseargs function copylower { # usage: copylower source destination + mkdir -p "$2" + if [ -d "$1" ]; then for filename in $(find "$1" -type f); do - lowerpath="$(echo $filename|gawk -F "$1" '{print $2}'|tr A-Z a-z)" - cp -f "$filename" "$2/$lowerpath" || die + lowerpath="$(echo $filename|gawk -F '$1' '{print $2}'|tr A-Z a-z)" + cp -f "$filename" "${2}/${lowerpath}" || die done elif [ -f "$1" ]; then lowername="$(basename $1|tr A-Z a-z)" - cp -f "$1" "$2"/$lowername + cp -f "$1" "${2}/${lowername}" fi } +function setlower +{ + # usage: setlower target + if [ "$1" ] + then + cd "$1" + for each_file in `find ./ -iname "*"` + do + lower="`echo "$each_file" | tr "[:upper:]" "[:lower:]"`" + + if [ "$each_file" != "$lower" ] + then + mv "$each_file" "$lower" + fi + done + fi +} + function move_and_remove { # usage: move_and_remove source destination # copies the files in the source directory to the destination. - mkdir -p "$2" || die - cp -R "$1/"* "$2" || die - rm -r "$1" + if [ "$1" != "$2" ] + then + mkdir -p "$2" || die + cp -R "$1/"* "$2" || die + rm -r "$1" + fi +} + +function teardown +{ + # usage: teardown target + if [ "$1" ] + then + cleanuptmp + setperms "$1" + setlower "$1" + fi } diff --git a/iwd/install-2cd-uk-extra.sh b/iwd/install-2cd-uk-extra.sh index 22ee2dd..bd2376e 100755 --- a/iwd/install-2cd-uk-extra.sh +++ b/iwd/install-2cd-uk-extra.sh @@ -28,4 +28,4 @@ getcd 2 $CD2 AUTORUN.DAT copylower "${CDMOUNT}/CD2/DATA/" "${TARGETDIR}/data" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/iwd/install-2cd-uk-minimal.sh b/iwd/install-2cd-uk-minimal.sh index abfe6fe..471a14d 100755 --- a/iwd/install-2cd-uk-minimal.sh +++ b/iwd/install-2cd-uk-minimal.sh @@ -38,4 +38,4 @@ rm -r "${TARGETDIR}/register" copylower "${CDMOUNT}/Data" "${TARGETDIR}/data" || die copylower "${CDMOUNT}/ICEWIND.ICO" "$TARGETDIR" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/iwd/install-patch-uk-fix.sh b/iwd/install-patch-uk-fix.sh index 63fc051..f137a92 100755 --- a/iwd/install-patch-uk-fix.sh +++ b/iwd/install-patch-uk-fix.sh @@ -39,5 +39,4 @@ getpatch $patch_url cabextract -L -s "${TMPDIR}/${patch_name}" -d "$TMPDIR" || diesoftly cp -R "${TMPDIR}/override/"* "${TARGETDIR}/override" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/iwd/install-patch-us.sh b/iwd/install-patch-us.sh index d636baa..625c023 100755 --- a/iwd/install-patch-us.sh +++ b/iwd/install-patch-us.sh @@ -39,5 +39,4 @@ cabextract -L -s "${TMPDIR}/${patch_name}" -d "$TMPDIR" || diesoftly cp -R "${TMPDIR}/override/"* "${TARGETDIR}/override" || diesoftly cp -R "${TMPDIR}/scripts/"* "${TARGETDIR}/scripts" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/pst/install-2cd-extra.sh b/pst/install-2cd-extra.sh index ccdd0fd..c166cfe 100755 --- a/pst/install-2cd-extra.sh +++ b/pst/install-2cd-extra.sh @@ -38,4 +38,4 @@ getcd 2 "$CD2" "cd2/movies4.bif" copylower "${CDMOUNT}/cd2/" "$TARGETDIR" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/pst/install-2cd-minimal.sh b/pst/install-2cd-minimal.sh index 329d84f..7f8fd18 100755 --- a/pst/install-2cd-minimal.sh +++ b/pst/install-2cd-minimal.sh @@ -39,4 +39,4 @@ move_and_remove "${TARGETDIR}/minimumdata/" "$TARGETDIR" mkdir -p "${TARGETDIR}/save" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/pst/install-4cd-extra.sh b/pst/install-4cd-extra.sh index 1344d65..6db15b5 100755 --- a/pst/install-4cd-extra.sh +++ b/pst/install-4cd-extra.sh @@ -37,4 +37,4 @@ copylower "${CDMOUNT}/cd3/" "$TARGETDIR" || die getcd 4 $CD4 cd4/movies4.bif copylower "${CDMOUNT}/cd4/" "$TARGETDIR" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/pst/install-4cd-minimal.sh b/pst/install-4cd-minimal.sh index 97fdf4a..46ec381 100755 --- a/pst/install-4cd-minimal.sh +++ b/pst/install-4cd-minimal.sh @@ -36,4 +36,4 @@ cp "${CDMOUNT}/torment.ico" "$TARGETDIR" || die mkdir -p "${TARGETDIR}/save" || die -setperms "$TARGETDIR" +teardown "$TARGETDIR" diff --git a/pst/install-patch-official.sh b/pst/install-patch-official.sh index 0c244a8..a924f33 100755 --- a/pst/install-patch-official.sh +++ b/pst/install-patch-official.sh @@ -40,5 +40,4 @@ unshield -d "$TMPDIR" -L x "${TMPDIR}/data1.cab" || diesoftly copylower "${TMPDIR}/program_executable_files/" "$TARGETDIR" || diesoftly -cleanuptmp -setperms "$TARGETDIR" +teardown "$TARGETDIR" |