summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xauto-installer.sh113
-rwxr-xr-xbg1/install-1cd-totsc-uk.sh2
-rwxr-xr-xbg1/install-3cd-extra.sh3
-rwxr-xr-xbg1/install-3cd-minimal.sh2
-rwxr-xr-xbg1/install-5cd-extra.sh3
-rwxr-xr-xbg1/install-5cd-minimal.sh2
-rwxr-xr-xbg1/install-patch-baldurdash-fix.sh3
-rwxr-xr-xbg1/install-patch-baldurdash-text.sh3
-rwxr-xr-xbg1/install-patch-intl.sh3
-rwxr-xr-xbg1/install-patch-totsc-baldurdash-text.sh3
-rwxr-xr-xbg1/install-patch-totsc-intl.sh3
-rwxr-xr-xbg1/install-patch-totsc-uk.sh3
-rwxr-xr-xbg1/install-patch-totsc-us.sh3
-rwxr-xr-xbg1/install-patch-us.sh3
-rwxr-xr-xbg2/install-soa-4cd-us-extra.sh53
-rwxr-xr-xbg2/install-soa-4cd-us-minimal.sh (renamed from bg2/install-4cd-minimal-us.sh)13
-rwxr-xr-xbg2/install-soa-4cd-us-tobMinimal.sh32
-rwxr-xr-xbg2/install-tob-1cd-us-minimal.sh53
-rw-r--r--includes/autoinstall-includes.sh55
-rw-r--r--includes/cd-includes.sh2
-rw-r--r--includes/cd-list.sh163
-rw-r--r--includes/generic-includes.sh46
-rwxr-xr-xiwd/install-2cd-uk-extra.sh2
-rwxr-xr-xiwd/install-2cd-uk-minimal.sh2
-rwxr-xr-xiwd/install-patch-uk-fix.sh3
-rwxr-xr-xiwd/install-patch-us.sh3
-rwxr-xr-xpst/install-2cd-extra.sh2
-rwxr-xr-xpst/install-2cd-minimal.sh2
-rwxr-xr-xpst/install-4cd-extra.sh2
-rwxr-xr-xpst/install-4cd-minimal.sh2
-rwxr-xr-xpst/install-patch-official.sh3
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"