summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick White <git@njw.me.uk>2010-02-09 17:12:20 +0000
committerNick White <git@njw.me.uk>2010-02-09 17:12:20 +0000
commitef6704c7111642f5c1cccf09c2990adeb1fec299 (patch)
tree56a3cc43db9dc3e9a2db16dccbe945c0823234b6
parentd44154ecfafb9bf183e201dadc0fd1ed6310fbd1 (diff)
parentbd2a182caf12caec92f188ff848676e808819f64 (diff)
downloadgemrb-gameinstallers-ef6704c7111642f5c1cccf09c2990adeb1fec299.tar.bz2
gemrb-gameinstallers-ef6704c7111642f5c1cccf09c2990adeb1fec299.zip
Merged Nick Daly's work
-rw-r--r--TODO6
-rwxr-xr-xauto-installer.sh19
-rw-r--r--bg2/install-tob-patch-uk.sh43
-rw-r--r--bg2/install-tob-patch-us.sh43
-rw-r--r--includes/autoinstall-includes.sh118
-rw-r--r--includes/cd-list.sh4
-rw-r--r--includes/generic-includes.sh1
-rw-r--r--iwd/install-patch-how-us.sh46
8 files changed, 260 insertions, 20 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..c8bc437
--- /dev/null
+++ b/TODO
@@ -0,0 +1,6 @@
+* Prompts for user input after recognizing IWD1 CD.
+* Doesn't install IWD-HOW.
+* Installing BG1-3CD results in recursive copying of the save file directory into itself. Weird.
+* A number of official patches aren't installed?
+* We should also install the unofficial fix/expansion patches (unifinished business, etc).
+* We don't handle internationalized patches.
diff --git a/auto-installer.sh b/auto-installer.sh
index 53a29da..f9ea255 100755
--- a/auto-installer.sh
+++ b/auto-installer.sh
@@ -30,6 +30,9 @@ scriptdir="$(dirname $0)"
. "$scriptdir/includes/patch-includes.sh"
. "$scriptdir/includes/autoinstall-includes.sh"
. "$scriptdir/includes/cd-list.sh"
+if [ "$PLAYONLINUX" ]; then
+ . "$PLAYONLINUX/lib/sources" > /dev/null 2>&1
+fi
parseargs "$@"
@@ -61,14 +64,12 @@ 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
+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
@@ -99,4 +100,4 @@ fi
echo
echo "$FULLGAMENAME installed successfully"
-recommendcfg $CDNO $CDSTART
+recommendcfg "$CDNO" "$CDSTART"
diff --git a/bg2/install-tob-patch-uk.sh b/bg2/install-tob-patch-uk.sh
new file mode 100644
index 0000000..678c409
--- /dev/null
+++ b/bg2/install-tob-patch-uk.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# Copyright 2010 Tasos Latsas, 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.
+#
+# Baldur's Gate 2 Throne of Bhaal Patch
+#
+# info : http://www.bioware.com/games/throne_bhaal/support/patches/
+# size : 8.0 MB
+# date : before 12/27/2001 (earliest archive.org version)
+
+patch_url="http://downloads.bioware.com/baldursgate2/BGII-ThroneofBhaal_Patch_26498_EUROPEAN.exe"
+patch_name="$(basename $patch_url)"
+
+scriptdir="$(dirname $0)"/..
+. "$scriptdir/includes/generic-includes.sh"
+. "$scriptdir/includes/patch-includes.sh"
+
+parseargs "$@"
+
+checkforbin cabextract wget
+
+setuptmp
+
+getpatch $patch_url
+
+cabextract -L -s "${TMPDIR}/${patch_name}" -d "$TMPDIR" || diesoftly
+unshield x -Ld "${TMPDIR}/data1.cab" -d "${TMPDIR}/data1"
+cp "${TMPDIR}/data1/override/"*.exe "${TARGETDIR}" || diesoftly
+cp -R "${TMPDIR}/data1/override/"* "${TARGETDIR}/override" || diesoftly
+
+teardown "$TARGETDIR"
diff --git a/bg2/install-tob-patch-us.sh b/bg2/install-tob-patch-us.sh
new file mode 100644
index 0000000..a7605e1
--- /dev/null
+++ b/bg2/install-tob-patch-us.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# Copyright 2010 Tasos Latsas, 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.
+#
+# Baldur's Gate 2 Throne of Bhaal Patch
+#
+# info : http://www.bioware.com/games/throne_bhaal/support/patches/
+# size : 8.0 MB
+# date : before 12/27/2001 (earliest archive.org version)
+
+patch_url="http://downloads.bioware.com/baldursgate2/BGII-ThroneofBhaal_Patch_26498_ENGLISH.exe"
+patch_name="$(basename $patch_url)"
+
+scriptdir="$(dirname $0)"/..
+. "$scriptdir/includes/generic-includes.sh"
+. "$scriptdir/includes/patch-includes.sh"
+
+parseargs "$@"
+
+checkforbin cabextract wget
+
+setuptmp
+
+getpatch $patch_url
+
+cabextract -L -s "${TMPDIR}/${patch_name}" -d "$TMPDIR" || diesoftly
+unshield x -Ld "${TMPDIR}/data1.cab" -d "${TMPDIR}/data1"
+cp "${TMPDIR}/data1/override/"*.exe "${TARGETDIR}" || diesoftly
+cp -R "${TMPDIR}/data1/override/"* "${TARGETDIR}/override" || diesoftly
+
+teardown "$TARGETDIR"
diff --git a/includes/autoinstall-includes.sh b/includes/autoinstall-includes.sh
index 9462c80..88fd796 100644
--- a/includes/autoinstall-includes.sh
+++ b/includes/autoinstall-includes.sh
@@ -19,11 +19,98 @@
### functions ###
-# a simplified version of query() from sorcery
# $1 = question
# $2 = default boolean answer [yYnN]
+# $3 = title
+# $4 = long explanation
function query
{
+ # usage: query question default [title] [longExplanation]
+
+ if [ "$3" ]; then
+ echo -e "$3"
+ echo "========================================"
+ echo
+ fi
+
+ if [ "$4" ]; then
+ echo -e "$4"
+ echo
+ fi
+
+
+ while true; do
+ RESPONSE=""
+ echo -e -n "$1 [$2] "
+ read -n 1 RESPONSE
+ echo
+
+ RESPONSE=${RESPONSE:=$2}
+ case $RESPONSE in
+ n|N) return 1 ;;
+ y|Y) return 0 ;;
+ esac
+ done
+}
+
+# a simplified version of query() from sorcery
+# $1 = question
+# $2 = default boolean answer [yYnN]
+# $3 = title
+# $4 = long explanation
+function new_query
+{
+ # usage: query question default [title] [longExplanation]
+
+ if [ "$PLAYONLINUX" ]; then
+ RESPONSE=query_playOnLinux "$1" "$2" "$3" "$4"
+ else
+ RESPONSE=query_text "$1" "$2" "$3" "$4"
+ fi
+
+ return $RESPONSE
+}
+
+# a simplified version of query(), modified for PoL.
+# $1 = question
+# $2 = default boolean answer [yYnN]
+# $3 = title
+# $4 = long explanation
+function query_playOnLinux
+{
+ # usage: query_playOnLinux question default [title] [longExplanation]
+
+ if [ "$4" ]; then
+ 1="$4
+
+$1"
+ fi
+
+ POL_SetupWindow_question "$1 [$2]" "$3"
+ return "$APP_ANSWER"
+}
+
+# a simplified version of query() from sorcery
+# $1 = question
+# $2 = default boolean answer [yYnN]
+# $3 = title
+# $4 = long explanation
+function query_text
+{
+ # usage: query_text question default [title] [longExplanation]
+
+ if [ "$3" ]; then
+ echo -e "$3"
+ echo "========================================"
+ echo
+ fi
+
+ if [ "$4" ]; then
+ echo -e "$4"
+ echo
+ fi
+
+
while true; do
RESPONSE=""
echo -e -n "$1 [$2] "
@@ -54,10 +141,12 @@ function recommendcfg
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
+ gemrbDir="${HOME}/.gemrb"
+ installRegistry="${gemrbDir}/installations.ini"
+
+ displayText="To play the game with GemRB, you will need to add the following\n"
+ displayText=${displayText}"lines to your GemRB.cfg file:\n"
+
LINE="GamePath=$TARGETDIR"; echo $LINE
if [ $FULLINSTALL -eq 1 ]; then
for CDNUMBER in $(seq $STARTCD $(($NUMOFCDS+$STARTCD-1))); do
@@ -66,17 +155,28 @@ function recommendcfg
else
LINE="CD${CDNUMBER}=${TARGETDIR}"
fi
- echo $LINE
+ displayText=${displayText}${LINE}"\n"
done
else
for CDNUMBER in $(seq $STARTCD $(($NUMOFCDS+$STARTCD-1))); do
- LINE="CD$CDNUMBER=$CDMOUNT/cd$CDNUMBER"
- echo $LINE
+ LINE="CD${CDNUMBER}=${CDMOUNT}/cd${CDNUMBER}"
+ displayText=${displayText}${LINE}"\n"
done
fi
# if startcd exists we can't tell if GameOnCD should be recommended
if [ $STARTCD -eq 1 ] ; then
- [ $FULLINSTALL -eq 1 ] && echo "GameOnCD=0" || echo "GameOnCD=1"
+ [ $FULLINSTALL -eq 1 ] && displayText=${displayText}"GameOnCD=0\n" || displayText=${displayText}"GameOnCD=1\n"
fi
+
+ if [ "$PLAYONLINUX" ]; then
+ POL_SetupWindow_message "$displayText" "Setup Complete!"
+ else
+ echo -e "$displayText"
+ fi
+
+ # record the installation in the installation registry.
+ mkdir "$gemrbDir" 2>/dev/null
+ touch "$installRegistry" 2>/dev/null
+ echo "$TARGETDIR" 2>/dev/null >> "$installRegistry"
}
diff --git a/includes/cd-list.sh b/includes/cd-list.sh
index 8acf905..b090cd7 100644
--- a/includes/cd-list.sh
+++ b/includes/cd-list.sh
@@ -64,8 +64,8 @@ function get_game
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"
+ PATCHES="bg2/install-tob-patch-us.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
diff --git a/includes/generic-includes.sh b/includes/generic-includes.sh
index e90199c..32f8bc0 100644
--- a/includes/generic-includes.sh
+++ b/includes/generic-includes.sh
@@ -180,6 +180,7 @@ function move_and_remove
{
# usage: move_and_remove source destination
# copies the files in the source directory to the destination.
+ # then removes the source entirely.
if [ "$1" != "$2" ]
then
mkdir -p "$2" || die
diff --git a/iwd/install-patch-how-us.sh b/iwd/install-patch-how-us.sh
new file mode 100644
index 0000000..c2fa35c
--- /dev/null
+++ b/iwd/install-patch-how-us.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Copyright 2009 Tasos Latsas, 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.
+#
+# Icewind Dale - Heart of Winter patch v1.42 - Trials of the Loremaster
+#
+# info : http://www.planetbaldursgate.com/iwd/media/files/patches/iwdreadme106.txt
+# size : 69.4 MB
+# date : ????
+
+patch_url="http://www.sorcerers.net/Games2/IWD/how142eng.rar"
+patch_name="$(basename $patch_url)"
+
+scriptdir="$(dirname $0)"/..
+. "$scriptdir/includes/generic-includes.sh"
+. "$scriptdir/includes/patch-includes.sh"
+
+parseargs "$@"
+
+checkforbin cabextract wget
+
+setuptmp
+
+getpatch $patch_url
+
+cabextract -L -s "${TMPDIR}/${patch_name}" -d "$TMPDIR" || diesoftly
+unshield x -L "${TMPDIR}/disk1/data1.cab" -d "$TMPDIR"
+LONGTMP="${TMPDIR}/minimum_compressed"
+cp -R "${LONGTMP}/data/"* "${TARGETDIR}/data" || diesoftly
+cp -R "${LONGTMP}/override/"* "${TARGETDIR}/override" || diesoftly
+cp -R "${LONGTMP}_(us_english)/"* "${TARGETDIR}" || diesoftly
+cp -R "${TMPDIR}/minimum_uncompressed_(us_english)/"* "${TARGETDIR}" || diesoftly
+
+teardown "$TARGETDIR"