Contents of /trunk/freespace2/fs2-open-installer.sh
Parent Directory | Revision Log
Revision 96 -
(show annotations)
(download)
(as text)
Wed Jan 17 00:23:25 2007 UTC (17 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 3634 byte(s)
Wed Jan 17 00:23:25 2007 UTC (17 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 3634 byte(s)
several fixes; first running release
1 | #!/bin/bash |
2 | # $Header: /root/magellan-cvs/src/freespace2/fs2-open-installer.sh,v 1.2 2007-01-17 00:23:25 niro Exp $ |
3 | # Freespace2 retail files installer |
4 | |
5 | # some default vars |
6 | DATADIR=/usr/games/freespace2 |
7 | CDROM="$1" |
8 | |
9 | COLRED="\033[1;6m\033[31m" |
10 | COLGREEN="\033[1;6m\033[32m" |
11 | COLDEFAULT="\033[0m" |
12 | |
13 | if [[ ${NOCOLORS} = true ]] |
14 | then |
15 | COLRED="" |
16 | COLGREEN="" |
17 | COLDEFAULT="" |
18 | fi |
19 | |
20 | is_mounted() { |
21 | local dev=$1 |
22 | local i |
23 | |
24 | i=$(cat /proc/mounts | grep "${dev} " | cut -d ' ' -f1) |
25 | [[ ${i} != ${dev} ]] && return 1 |
26 | |
27 | return 0 |
28 | } |
29 | |
30 | die() |
31 | { |
32 | echo -e ${COLRED}"Error: $@"${COLDEFAULT} |
33 | |
34 | # clean up |
35 | is_mounted ${CDROM} && umount ${CDROM} |
36 | sleep 2 |
37 | [[ -d ${TMP} ]] && rm -rf ${TMP} |
38 | |
39 | exit 1 |
40 | } |
41 | |
42 | cecho() |
43 | { |
44 | echo -e ${COLGREEN}"$@"${COLDEFAULT} |
45 | } |
46 | |
47 | [[ $(id -u) != 0 ]] && die "You must be root!" |
48 | [[ -f ${DATADIR}/.installed ]] && die "Media files already installed." |
49 | [[ -z $(which unshield) ]] && die "unshield not found." |
50 | [[ -z $(which mktemp) ]] && die "mktemp not found." |
51 | [[ -z $(which eject) ]] && die "eject not found." |
52 | [[ -z ${CDROM} ]] && die "No cdrom device given." |
53 | |
54 | TMP="$(mktemp -d)" |
55 | |
56 | # some needed directories |
57 | install -d ${TMP}/cdrom |
58 | install -d ${TMP}/data |
59 | install -d ${TMP}/retailvp |
60 | |
61 | cecho "To setup Freespace2 I need to copy several files from the original CDs." |
62 | echo |
63 | |
64 | #### disc1 #### |
65 | eject ${CDROM} |
66 | cecho "Please insert disc1 of Freespace2 into your cdrom and press enter" |
67 | read |
68 | eject -t ${CDROM} |
69 | |
70 | mount ${CDROM} ${TMP}/cdrom || die "mount disc1" |
71 | [[ ! -f ${TMP}/cdrom/data1.cab ]] && die "disc1 not found" |
72 | |
73 | cecho "Now extracting retail files from data1.cab ..." |
74 | pushd ${TMP} |
75 | for group in "Basic Install Files" \ |
76 | "Intel Anims" \ |
77 | "Music Compressed" \ |
78 | "High Res Files" |
79 | do |
80 | unshield -d ./retailvp -g "${group}" -L -j x ${TMP}/cdrom/data1.cab || die "unpacking '${group}'" |
81 | done |
82 | unshield -d ./ -g "Hud Config Files" -L -j x ${TMP}/cdrom/data1.cab || die "unpacking ${group}" |
83 | popd |
84 | |
85 | umount ${TMP}/cdrom || die "umount disc1 failed" |
86 | eject ${CDROM} |
87 | |
88 | |
89 | #### disc2 #### |
90 | echo |
91 | cecho "Please insert disc2 of Freespace2 into your cdrom and press enter" |
92 | read |
93 | eject -t ${CDROM} |
94 | |
95 | mount ${CDROM} ${TMP}/cdrom || die "mount disc2" |
96 | [[ ! -f ${TMP}/cdrom/data2.cab ]] && die "disc2 not found" |
97 | |
98 | for i in tango1_fs2.vp COLOSSUS.MVE INTRO.MVE MONO1.MVE |
99 | do |
100 | cecho "Copying ${i} to ${TMP}/data" |
101 | # lower case needed! |
102 | cp -vg ${TMP}/cdrom/${i} ${TMP}/data/$(echo $i | tr [:upper:] [:lower:]) || die "copying ${i}" |
103 | done |
104 | umount ${TMP}/cdrom || die "umount disc2 failed" |
105 | eject ${CDROM} |
106 | |
107 | |
108 | #### disc3 #### |
109 | echo |
110 | cecho "Please insert disc3 of Freespace2 into your cdrom and press enter" |
111 | read |
112 | eject -t ${CDROM} |
113 | |
114 | mount ${CDROM} ${TMP}/cdrom || die "mount disc3" |
115 | [[ ! -f ${TMP}/cdrom/data3.cab ]] && die "disc3 not found" |
116 | |
117 | |
118 | for i in tango2_fs2.vp tango3_fs2.vp BASTION.MVE ENDPART1.MVE \ |
119 | ENDPRT2A.MVE ENDPRT2B.MVE MONO2.MVE MONO3.MVE MONO4.MVE |
120 | do |
121 | cecho "Copying ${i} to ${TMP}/data" |
122 | # lower case needed! |
123 | cp -vg ${TMP}/cdrom/${i} ${TMP}/data/$(echo $i | tr [:upper:] [:lower:]) || die "copying ${i}" |
124 | done |
125 | umount ${TMP}/cdrom || die "umount disc3 failed" |
126 | eject ${CDROM} |
127 | |
128 | |
129 | cecho "Installing Retail Freespace2 files to the system ..." |
130 | install -v -m0644 ${TMP}/hud_config_files/* ${DATADIR}/data/players || die "installing HUD" |
131 | install -v -m0644 ${TMP}/retailvp/*/* ${DATADIR}/data/players || die "installing retailvps1" |
132 | install -v -m0644 ${TMP}/data/*.vp ${DATADIR} || die "installing retailvps2" |
133 | install -v -m0644 ${TMP}/data/*.mve ${DATADIR}/data/movies || die "installing movies" |
134 | |
135 | # mark installation as "installed" |
136 | touch ${DATADIR}/.installed |
137 | |
138 | cecho "Cleaning up temp dirs ..." |
139 | [[ -d ${TMP} ]] && rm -rf ${TMP} |
140 | |
141 | cecho "Installation of Freespace2 successfully finished!" |
142 | exit 0 |