blob: f6c915176c681843934456ae5937264b8efb69d7 [file] [log] [blame]
Ove Kaaven2043ba01999-04-18 13:16:29 +00001#!/bin/bash
2# WINE Installation script
Ove Kaaven2c767522000-10-29 18:02:53 +00003# Can do almost everything from compiling to configuring...
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00004#
5# Copyright 1999 Ove Kåven
6#
7# This library is free software; you can redistribute it and/or
8# modify it under the terms of the GNU Lesser General Public
9# License as published by the Free Software Foundation; either
10# version 2.1 of the License, or (at your option) any later version.
11#
12# This library is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15# Lesser General Public License for more details.
16#
17# You should have received a copy of the GNU Lesser General Public
18# License along with this library; if not, write to the Free Software
19# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20#
Ove Kaaven2043ba01999-04-18 13:16:29 +000021
Ove Kaavenf561aad2000-05-09 22:32:42 +000022#--- defaults (change these if you are a packager)
Matthew Davison994c1b32002-11-21 23:46:06 +000023CONFARGS="" # configure args, e.g. --prefix=/usr --sysconfdir=/etc
Ove Kaavene1858882000-04-08 20:20:21 +000024prefix=/usr/local # installation prefix
Francois Gougetcbe88fc2002-09-06 19:46:27 +000025sysconfdir=$prefix/etc # where wine.conf and the global registry are supposed to be
26bindir=$prefix/bin # where winelib apps will be (or are) installed
Ove Kaavenb5d37ec2000-04-15 20:37:14 +000027libdir=$prefix/lib # where libwine.so will be (or is) installed
Francois Gougetcbe88fc2002-09-06 19:46:27 +000028exdir=documentation/samples # where the sample system.ini resides
Chris Morgana00cefb2001-01-18 20:29:21 +000029GCONF=$sysconfdir/wine.conf # default path of the wine.conf global config file
30LCONF=~/.wine/config # default path of the local config file
Ove Kaavene1858882000-04-08 20:20:21 +000031BINDIST=no # whether called from a binary package config script
Chris Morgana00cefb2001-01-18 20:29:21 +000032DOGLOBALCONF=auto # whether to autogenerate wine.conf
33DOLOCALCONF=auto # whether to autogenerate localconf
Ove Kaavene1858882000-04-08 20:20:21 +000034DOWCHK=auto # whether to autoconfigure existing-windows installation
35DOWINE=auto # whether to autoconfigure no-windows installation
36DOREG=auto # whether to install default registry
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +000037DOAPP=auto # whether to install applications, distributed with Wine
Ove Kaavenb5d37ec2000-04-15 20:37:14 +000038SYSREG=yes # whether to make root's registry global (system-default)
Ove Kaavenf561aad2000-05-09 22:32:42 +000039
40# "make install" still installs the dlls into $libdir, but this may change in the future
41# (DLLPATH should point to them if/when they are not in standard ld.so paths)
42DLLPATH=$libdir/wine # default path of the dll .so files (except libwine.so)
43
Ove Kaavenf561aad2000-05-09 22:32:42 +000044# this is only for existing-windows installs
Francois Gougetcbe88fc2002-09-06 19:46:27 +000045WINECONF=tools/wineconf # path to the wineconf perl script
Ove Kaavenf561aad2000-05-09 22:32:42 +000046
47# this is only for no-windows installs
Francois Gougetcbe88fc2002-09-06 19:46:27 +000048WINEINI=$exdir/config # path to the default wine config file (also used by wineconf)
49WININI=/dev/null # path to the default win.ini
50SYSTEMINI=$exdir/system.ini # path to the default system.ini
Vincent Béron8ce90f22002-10-21 19:19:54 +000051REGEDIT=programs/regedit/regedit # path to the regedit winelib application
Francois Gougetcbe88fc2002-09-06 19:46:27 +000052DEFREG=winedefault.reg # path of the registry file to be fed to regedit
53# CROOT=/var/wine # path of the fake Drive C (asks user if not set)
Ove Kaaven2c767522000-10-29 18:02:53 +000054DEFCAT=cat # program to cat $DEFREG with (some packages need zcat)
Ove Kaavenf561aad2000-05-09 22:32:42 +000055#--- end of defaults
56
57# temporary files used by the installer
58TMPCONF=/tmp/wineinstall.conf
Ove Kaaven2043ba01999-04-18 13:16:29 +000059
Ove Kaaven2c767522000-10-29 18:02:53 +000060# functions
61
Andreas Mohr6dc00542000-12-05 03:53:51 +000062function std_sleep {
63 sleep 1
64}
65
Ove Kaaven2c767522000-10-29 18:02:53 +000066function conf_question {
67 # parameters: $1 = importance, $2 = question-id, $3+ = message lines
68 # the first two parameters can be used by e.g. debconf in debian packages
69 # but here we just print the message
70 shift 2
71 echo
72 local LINE="$1"
73 while shift
74 do {
75 echo "$LINE"
76 LINE="$1"
77 }
78 done
79}
80
Ove Kaaven6e143b32000-10-31 00:59:01 +000081function conf_reset_question {
82 # parameters: $1 = question-id
83 # this is used to flush any cached answers and "already-displayed" flags
84 shift # dummy command
85}
86
Ove Kaaven2c767522000-10-29 18:02:53 +000087function conf_yesno_answer {
88 unset ANSWER
89 while [ "$ANSWER" != 'yes' ] && [ "$ANSWER" != 'no' ]
90 do {
91 echo -n "$1"
92 read ANSWER
93 }
94 done
95}
96
97function conf_string_answer {
98 echo -n "$1"
99 read ANSWER
100}
101
Chris Morgana00cefb2001-01-18 20:29:21 +0000102function create_windows_directories {
Sylvain Petreolle11666bb2002-12-05 19:05:44 +0000103 for tdir in "$CROOT/windows" "$CROOT/windows/system" \
Dan Kegelba02ae42003-01-21 20:14:36 +0000104 "$CROOT/windows/command" \
Chris Morgana00cefb2001-01-18 20:29:21 +0000105 "$CROOT/windows/Start Menu" "$CROOT/windows/Start Menu/Programs" \
Andriy Palamarchuke02fd412002-05-16 20:27:27 +0000106 "$CROOT/Program Files" "$CROOT/Program Files/Common Files" \
Dustin Navea3ebea432002-05-23 16:30:42 +0000107 "$CROOT/windows/Profiles" "$CROOT/windows/Profiles/Administrator" \
108 "$CROOT/windows/Fonts" "$CROOT/windows/Start Menu/Programs/Startup"
Chris Morgana00cefb2001-01-18 20:29:21 +0000109 do [ -d "$tdir" ] || mkdir "$tdir"
110 done
111 [ -f "$CROOT/windows/win.ini" ] || cp "$WININI" "$CROOT/windows/win.ini"
112 [ -f "$CROOT/windows/system.ini" ] || cp "$SYSTEMINI" "$CROOT/windows/system.ini"
113}
114
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +0000115#creates symbolic link in windows directory to installed winelib application
116#parameters:
117# - name of the installed winelib application
118# - full path to application in the winelib directory
119function link_app {
Shachar Shemesh2deda852002-11-21 00:03:14 +0000120 if [ "$WINEINSTALLED" = 'no' ]
121 then {
122 ln -sf $PWD/programs/$1/$1.exe.so $2
123 }
124 else {
125 ln -sf $libdir/wine/$1.exe.so $2
126 }
127 fi
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +0000128}
129
130#puts windows applications replacements to windows directories,
131#configures them
132function configure_wine_applications {
Dan Kegelba02ae42003-01-21 20:14:36 +0000133 link_app start "$CROOT/windows/command/start.exe"
Francois Gougete30b0782002-09-23 19:55:12 +0000134 link_app notepad "$CROOT/windows/notepad.exe"
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +0000135 link_app regedit "$CROOT/windows/regedit.exe"
Alberto Massari488a6a52002-11-18 19:42:34 +0000136 link_app rundll32 "$CROOT/windows/rundll32.exe"
Sylvain Petreolle11666bb2002-12-05 19:05:44 +0000137 link_app wcmd "$CROOT/windows/system/wcmd.exe"
138 link_app control "$CROOT/windows/system/control.exe"
139 link_app winhelp "$CROOT/windows/system/help.exe"
140 link_app notepad "$CROOT/windows/system/notepad.exe"
141 link_app progman "$CROOT/windows/system/progman.exe"
142 link_app regsvr32 "$CROOT/windows/system/regsvr32.exe"
143 link_app winemine "$CROOT/windows/system/winmine.exe"
144 link_app winver "$CROOT/windows/system/winver.exe"
Francois Gougete30b0782002-09-23 19:55:12 +0000145 link_app uninstaller "$CROOT/windows/uninstall.exe"
Rok Mandeljc8f40af42002-09-04 23:30:44 +0000146 link_app winhelp "$CROOT/windows/winhelp.exe"
147 link_app winhelp "$CROOT/windows/winhlp32.exe"
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +0000148}
149
Ove Kaaven2043ba01999-04-18 13:16:29 +0000150# startup...
151
Shachar Shemesh2deda852002-11-21 00:03:14 +0000152echo "WINE Installer v0.74"
Ove Kaaven2043ba01999-04-18 13:16:29 +0000153echo
Ove Kaavene1858882000-04-08 20:20:21 +0000154
155if [ "$BINDIST" = 'no' ]
156then {
157
Dustin Navea3ebea432002-05-23 16:30:42 +0000158 if ! [ -f configure ]
159 then {
Vincent Béron0e668bb2002-10-13 17:53:47 +0000160 if [ -f ../configure ]
161 then {
162 pushd ..
163 }
164 else {
165 echo "You're running this from the wrong directory."
166 echo "Change to the Wine source's main directory and try again."
167 exit 1
168 }
169 fi
Dustin Navea3ebea432002-05-23 16:30:42 +0000170 }
Andreas Mohr8bba9ba2000-08-28 21:32:08 +0000171 fi
Andreas Mohr8bba9ba2000-08-28 21:32:08 +0000172
Dustin Navea3ebea432002-05-23 16:30:42 +0000173 if [ `whoami` == 'root' ]
174 then {
175 echo "You are running wineinstall as root, this is not advisable. Please rerun as a user."
176 echo "Aborting."
177 exit 1
178 }
179 fi
Andreas Mohrde53c482001-04-09 18:32:16 +0000180
Alexandre Julliard1bb7a9f2003-09-29 20:25:47 +0000181 if [ ! -w . ]
182 then {
183 echo "The source directory is not writable. You probably extracted the sources as root."
184 echo "You should remove the source tree and extract it again as a normal user."
185 exit 1
186 }
187 fi
188
Dustin Navea3ebea432002-05-23 16:30:42 +0000189 # check whether RPM installed, and if it is, remove any old wine rpm.
190 hash rpm &>/dev/null
191 RET=$?
192 if [ $RET -eq 0 ]; then
193 if [ -n "`rpm -qi wine 2>/dev/null|grep "^Name"`" ]; then
194 echo "Warning: Old Wine RPM install detected. Do you want to remove it first?"
195 conf_yesno_answer "(yes/no) "
196 if [ "$ANSWER" = 'yes' ]; then
197 echo "We need to remove the rpm as root, please enter your root password"
198 echo
199 echo Starting wine rpm removal...
200 su -c "rpm -e wine; RET=$?"
201 if [ $RET -eq 0 ]; then
202 echo Done.
203 else
204 echo "FAILED. Probably you aren't installing as root."
205 echo "Expect problems (library conflicts with existing install etc.)."
206 fi
207 else
208 echo "Sorry, I won't install Wine when an rpm version is still installed."
209 echo "(Wine support suffered from way too many conflicts between RPM"
210 echo "and source installs)"
211 echo "Have a nice day !"
212 exit 1
213 fi
214 fi
215 fi
Ove Kaaven2043ba01999-04-18 13:16:29 +0000216
Dustin Navea3ebea432002-05-23 16:30:42 +0000217 # check whether wine binary still available
218 if [ -n "`which wine 2>/dev/null|grep '/wine'`" ]; then
219 echo "Warning !! wine binary (still) found, which may indicate"
220 echo "a (conflicting) previous installation."
221 echo "You might want to abort and uninstall Wine first."
222 std_sleep
223 fi
224
225 # run the configure script, if necessary
226
227 if [ -f config.cache ] && [ -f Makefile ] && [ Makefile -nt configure ]
Ove Kaaven2043ba01999-04-18 13:16:29 +0000228 then {
229 echo
Dustin Navea3ebea432002-05-23 16:30:42 +0000230 echo "I see that WINE has already been configured, so I'll skip that."
231 std_sleep
232 # load configure results
233 . ./config.cache
234 }
235 else {
236 echo "Running configure..."
237 echo
Mike Hearn7927b412003-05-13 23:37:09 +0000238 if ! ./configure -C $CONFARGS --prefix=$prefix
Dustin Navea3ebea432002-05-23 16:30:42 +0000239 then {
240 echo
241 echo "Configure failed, aborting install."
242 rm -f config.cache
243 exit 1
244 }
245 fi
246 # load configure results
247 . ./config.cache
248 # make sure X was found
249 eval "$ac_cv_have_x"
250 if [ "$have_x" != "yes" ]
251 then {
252 echo "Install the X development headers and try again."
253 rm -f config.cache
254 exit 1
255 }
256 fi
Ove Kaaven2043ba01999-04-18 13:16:29 +0000257 }
258 fi
Dustin Navea3ebea432002-05-23 16:30:42 +0000259
260 # now do the compilation and install, we need to always do this because we
261 # don't want the 'make install' command we might run to run 'make' as root
262 if [ `whoami` != 'root' ]
Ove Kaaven2043ba01999-04-18 13:16:29 +0000263 then {
Dustin Navea3ebea432002-05-23 16:30:42 +0000264 # ask the user if they want to build and install wine
265 echo
266 echo "We need to install wine as root user, do you want us to build wine,"
267 echo "'su root' and install Wine? Enter 'no' to continue without installing"
268 conf_yesno_answer "(yes/no) "
Vincent Béronfc144ad2002-10-15 01:19:46 +0000269 ROOTINSTALL="$ANSWER"
Ove Kaaven2043ba01999-04-18 13:16:29 +0000270
Vincent Béronfc144ad2002-10-15 01:19:46 +0000271 if [ "$ROOTINSTALL" = "yes" ]
Dustin Navea3ebea432002-05-23 16:30:42 +0000272 then {
273 # start out with the basic command
274 sucommand="make install"
Chris Morgana00cefb2001-01-18 20:29:21 +0000275
Dustin Navea3ebea432002-05-23 16:30:42 +0000276 # if the user doesn't have $libdir in their ld.so.conf add this
277 # to our sucommand string
278 if [ -f /etc/ld.so.conf ]
279 then
Francois Gouget533f0b52003-07-30 03:43:55 +0000280 if ! grep -s "$libdir" /etc/ld.so.conf >/dev/null 2>&1
Dustin Navea3ebea432002-05-23 16:30:42 +0000281 then {
282 echo
283 echo "$libdir doesn't exist in your /etc/ld.so.conf, it will be added"
284 echo "when we perform the install..."
285 sucommand="$sucommand;echo $libdir>>/etc/ld.so.conf"
286 }
287 fi
288 # run ldconfig always just in case some updated files dont get linked
289 sucommand="$sucommand;$ac_cv_path_LDCONFIG"
290 fi
Vincent Béronfc144ad2002-10-15 01:19:46 +0000291 }
292 fi # [ "$ROOTINSTALL" = "yes" ]
Chris Morganee626fe2002-04-01 20:56:51 +0000293
Vincent Béronfc144ad2002-10-15 01:19:46 +0000294 echo
Dustin Navea3ebea432002-05-23 16:30:42 +0000295
Vincent Béronfc144ad2002-10-15 01:19:46 +0000296 echo "Compiling WINE. Grab a lunch or two, rent a video, or whatever,"
297 echo "in the meantime..."
298 echo
299 std_sleep
Dustin Navea3ebea432002-05-23 16:30:42 +0000300
Vincent Béronfc144ad2002-10-15 01:19:46 +0000301 # try to just make wine, if this fails 'make depend' and try to remake
302 if ! { make; }
303 then {
304 if ! { make depend && make; }
Dustin Navea693d7192002-04-27 00:15:12 +0000305 then {
Vincent Béronfc144ad2002-10-15 01:19:46 +0000306 echo
307 echo "Compilation failed, aborting install."
308 exit 1
Dustin Navea693d7192002-04-27 00:15:12 +0000309 }
310 fi
Vincent Béronfc144ad2002-10-15 01:19:46 +0000311 }
312 fi
313
314 if [ "$ROOTINSTALL" = "yes" ]
315 then {
Dustin Navea3ebea432002-05-23 16:30:42 +0000316 echo
Chris Morganee626fe2002-04-01 20:56:51 +0000317
Dustin Navea3ebea432002-05-23 16:30:42 +0000318 echo "Performing 'make install' as root to install binaries, enter root password"
Chris Morganee626fe2002-04-01 20:56:51 +0000319
Dustin Navea3ebea432002-05-23 16:30:42 +0000320 std_sleep
Chris Morganee626fe2002-04-01 20:56:51 +0000321
Dustin Navea3ebea432002-05-23 16:30:42 +0000322 if ! su root -c "$sucommand"
Chris Morganee626fe2002-04-01 20:56:51 +0000323 then {
Brian Vincentd6841ee2003-03-24 19:29:38 +0000324 if ! su root -c "$sucommand"
325 then {
326 echo
327 echo "Either you entered an incorrect password or we failed to"
328 echo "run '$sucommand' correctly."
329 echo "If you didn't enter an incorrect password then please"
330 echo "report this error and any steps to possibly reproduce it to"
Dimitrie O. Paunc0232542003-11-26 03:55:01 +0000331 echo "http://bugs.winehq.org/"
Brian Vincentd6841ee2003-03-24 19:29:38 +0000332 echo
333 echo "Installation failed, aborting."
334 exit 1
335 }
336 fi
337 }
Chris Morganee626fe2002-04-01 20:56:51 +0000338 fi
Dustin Navea3ebea432002-05-23 16:30:42 +0000339
340 echo
341
342 # see if wine is installed on the users system, if not prompt them
343 # and then exit
344 if [ ! `which wine` ]
345 then
346 echo "Could not find wine on your system. Run wineinstall as root to install wine"
347 echo "before re-running wineinstall as a user."
348 echo
349 echo "Exiting wineinstall"
350 exit 1;
351 fi
Shachar Shemesh2deda852002-11-21 00:03:14 +0000352
353 WINEINSTALLED=yes
Dustin Navea3ebea432002-05-23 16:30:42 +0000354 }
355 else {
356 # user didn't want to install wine so tell them about running from the
357 # current directory and set some stuff up for them
358
359 # setup to run from current directory
360 DLLPATH="$PWD/dlls"
361 if [ -z "$LD_LIBRARY_PATH" ]
362 then LD_LIBRARY_PATH="$PWD:$DLLPATH"
363 else LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD:$DLLPATH"
364 fi
365 export LD_LIBRARY_PATH
Dustin Navea3ebea432002-05-23 16:30:42 +0000366 echo
367 echo "NOTE! To run Wine without installing, you must set the environment variable"
368 echo "LD_LIBRARY_PATH to $PWD:$DLLPATH"
369 echo "in your logon scripts."
370 echo
Shachar Shemesh2deda852002-11-21 00:03:14 +0000371
372 WINEINSTALLED=no
Chris Morganee626fe2002-04-01 20:56:51 +0000373 }
Vincent Béronfc144ad2002-10-15 01:19:46 +0000374 fi # [ "$ROOTINSTALL" = "yes" ]
Chris Morganee626fe2002-04-01 20:56:51 +0000375 }
Dustin Navea3ebea432002-05-23 16:30:42 +0000376 fi # [ `whoami` != 'root' ]
Ove Kaaven2043ba01999-04-18 13:16:29 +0000377
Ove Kaavene1858882000-04-08 20:20:21 +0000378}
379fi # BINDIST
380
Chris Morgana00cefb2001-01-18 20:29:21 +0000381# now check whether we should generate wine.conf
382if [ -z "$DOGLOBALCONF" ]
Adam D. Moss49185ac2002-02-19 18:30:54 +0000383then
384 DOGLOBALCONF=auto
Ove Kaaven2043ba01999-04-18 13:16:29 +0000385fi
386
Chris Morgana00cefb2001-01-18 20:29:21 +0000387if [ "$DOGLOBALCONF" = 'auto' ]
Ove Kaaven2043ba01999-04-18 13:16:29 +0000388then {
Chris Morgana00cefb2001-01-18 20:29:21 +0000389 # see if we already have a system wine.conf
390 if [ ! -f $GCONF ] && [ `whoami` = 'root' ]
391 then
392 DOGLOBALCONF=no
393 echo "Creation of a global config file is not supported in wineinstall at this"
394 echo "time. When the configuration architecture is cleaned up this functionality"
395 echo "will be restored to wineinstall."
396 echo
Ove Kaaven2043ba01999-04-18 13:16:29 +0000397 fi
398}
399fi
400
Chris Morgana00cefb2001-01-18 20:29:21 +0000401if [ "$DOLOCALCONF" = 'auto' ]
Ove Kaaven2043ba01999-04-18 13:16:29 +0000402then {
Chris Morgana00cefb2001-01-18 20:29:21 +0000403 # see if the user is root, if so, explicitly ask them if they want a
404 # local config file
405 if [ `whoami` = 'root' ]
406 then
407 echo "You are running as root. Do you want a local config file,"
408 echo "file, ~/.wine/config, created?"
409 conf_yesno_answer "(yes/no) "
410 DOLOCALCONF="$ANSWER"
411 else
Chris Morganee626fe2002-04-01 20:56:51 +0000412 # if the user has an existing config file ask them if they want us to
413 # overwrite it, otherwise just ask them if they want to create one
414 if [ -f "$LCONF" ]
Chris Morgana00cefb2001-01-18 20:29:21 +0000415 then
Chris Morganee626fe2002-04-01 20:56:51 +0000416 echo "Found existing $LCONF, do you want to overwrite this"
417 echo "existing Wine configuration file?"
418 conf_yesno_answer "(yes/no) "
419 DOLOCALCONF="$ANSWER"
420 echo
Dustin Navea3ebea432002-05-23 16:30:42 +0000421 if [ "$ANSWER" = "yes" ]
422 then
423 {
424 echo "Would you like to make a backup of this old config file?"
425 conf_yesno_answer "(yes/no) "
426 echo
427 if [ "$ANSWER" = "yes" ]
428 then
429 {
430 echo "Renaming $LCONF to $LCONF.old"
431 mv -f "$LCONF" "$LCONF.old"
432 echo
433 }
434 fi
435 }
436 fi
437 else
438 {
Chris Morganee626fe2002-04-01 20:56:51 +0000439 echo "Create local config file ~/.wine/config?"
440 conf_yesno_answer "(yes/no) "
441 DOLOCALCONF="$ANSWER"
442 echo
443 if [ "$ANSWER" = 'no' ]
444 then
445 conf_question high need_root \
446 "Aborting install. Try again as root to generate a system wine.conf."
447 exit 1
448 fi
449 }
Chris Morgana00cefb2001-01-18 20:29:21 +0000450 fi
Ove Kaaven2043ba01999-04-18 13:16:29 +0000451 fi
452}
453fi
454
Chris Morgana00cefb2001-01-18 20:29:21 +0000455# generate $TMPCONF from existing windows install, if any
456if [ "$DOLOCALCONF" = 'yes' ]
Ove Kaaven2043ba01999-04-18 13:16:29 +0000457then {
Ove Kaavene1858882000-04-08 20:20:21 +0000458 if [ "$DOWCHK" = 'yes' ] || [ "$DOWCHK" = 'auto' ]
459 then {
Ove Kaaven2c767522000-10-29 18:02:53 +0000460 echo -n "Searching for an existing Windows installation..."
Chris Morgana00cefb2001-01-18 20:29:21 +0000461 if ! $WINECONF -inifile "$WINEINI" > $TMPCONF 2>/dev/null
Ove Kaavene1858882000-04-08 20:20:21 +0000462 then {
Alexandre Julliard4a301f52002-10-29 23:27:37 +0000463 rm -f $TMPCONF > /dev/null
Chris Morgana00cefb2001-01-18 20:29:21 +0000464
Andreas Mohr9cef2d02001-11-19 02:30:01 +0000465 echo " not found. (no matching /etc/fstab mount entry found)"
Ove Kaaven2c767522000-10-29 18:02:53 +0000466 conf_question low do_without_windows \
Ove Kaaven6e143b32000-10-31 00:59:01 +0000467 "Windows was not found on your system, so I assume you want" \
468 "a Wine-only installation. Am I correct?"
Ove Kaaven2c767522000-10-29 18:02:53 +0000469 conf_yesno_answer "(yes/no) "
470 if [ "$ANSWER" = 'no' ]
Ove Kaavene1858882000-04-08 20:20:21 +0000471 then {
Ove Kaaven2c767522000-10-29 18:02:53 +0000472 conf_question high windows_not_found \
473 "Aborting install. Make sure your Windows partition is mounted and try again," \
Chris Morgana00cefb2001-01-18 20:29:21 +0000474 "or create $LCONF manually by copying from $WINEINI and adapting the drive paths."
Ove Kaavene1858882000-04-08 20:20:21 +0000475 exit 1
476 }
477 fi
Ove Kaaven2c767522000-10-29 18:02:53 +0000478 DOWINE=yes
Ove Kaavene1858882000-04-08 20:20:21 +0000479 }
480 else {
Ove Kaaven2c767522000-10-29 18:02:53 +0000481 echo " found."
Chris Morgana00cefb2001-01-18 20:29:21 +0000482
Shachar Shemesh2deda852002-11-21 00:03:14 +0000483 conf_question low do_without_windows \
484 "Windows was found on your system, and so we can use the Windows" \
485 "Drive as our Wine drive. You may, however, wish to create a clean" \
486 "Wine install anyways."
487 conf_yesno_answer "Should I use the Windows drive for the Wine install? (yes/no) "
488 if [ "$ANSWER" = 'yes' ]
489 then {
490 conf_reset_question windows_found
491 conf_question low windows_found \
492 "Created $LCONF using your existing Windows installation." \
493 "You probably want to review the file, though."
494 DOWINE=no
495 }
496 else {
497 DOWINE=yes
498 }
499 fi
Ove Kaavene1858882000-04-08 20:20:21 +0000500 }
501 fi
Ove Kaavene1858882000-04-08 20:20:21 +0000502 }
503 elif [ "$DOWINE" = 'auto' ]
504 then DOWINE=yes
505 fi
506}
507elif [ "$DOWINE" = 'auto' ]
Alexandre Julliard7cae5582002-06-01 02:55:48 +0000508then
Chris Morgana00cefb2001-01-18 20:29:21 +0000509 DOWINE=no
Ove Kaavene1858882000-04-08 20:20:21 +0000510fi
511
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000512# setup a no-windows installation, if necessary
Ove Kaavene1858882000-04-08 20:20:21 +0000513if [ "$DOWINE" = 'yes' ]
514then {
Chris Morgana00cefb2001-01-18 20:29:21 +0000515 # set an appropriate DCROOT
Ove Kaavene1858882000-04-08 20:20:21 +0000516 if [ `whoami` != 'root' ]
517 then DCROOT=~/c
518 else DCROOT=/c
519 fi
Chris Morgana00cefb2001-01-18 20:29:21 +0000520
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000521 conf_question low drivec_path \
Chris Morgana00cefb2001-01-18 20:29:21 +0000522 "Configuring Wine without Windows." \
523 "Some fake Windows directories must be created, to hold any .ini files, DLLs," \
524 "start menu entries, and other things your applications may need to install." \
525 "Where would you like your fake C drive to be placed?"
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000526 while [ -z "$CROOT" ]
527 do {
528 conf_string_answer "(default is $DCROOT) "
529 [ -z "$ANSWER" ] && ANSWER="$DCROOT"
530 if ! [ -d "$ANSWER" ]
531 then {
532 if mkdir -p "$ANSWER"
533 then CROOT="$ANSWER"
534 else
Chris Morgana00cefb2001-01-18 20:29:21 +0000535 echo "Directory $ANSWER can't be created !"
536 conf_reset_question drivec_path
Chris Morgana00cefb2001-01-18 20:29:21 +0000537 fi
538 }
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000539 else CROOT="$ANSWER"
540 fi
541 }
542 done
543 echo "Configuring Wine for a no-windows install in $CROOT..."
Alexandre Julliard7cae5582002-06-01 02:55:48 +0000544
Chris Morgana00cefb2001-01-18 20:29:21 +0000545 create_windows_directories
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +0000546 configure_wine_applications
Chris Morgan3a213212001-01-11 20:18:06 +0000547
Alexandre Julliard7cae5582002-06-01 02:55:48 +0000548 # create $LCONF using the default config file $WINEINI
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000549 if [ "$DOLOCALCONF" = 'yes' ]
Chris Morgan3a213212001-01-11 20:18:06 +0000550 then {
Chris Morgana00cefb2001-01-18 20:29:21 +0000551 sed "s|\"Path\" = \"/c\"\$|\"Path\" = \"${CROOT}\"|" $WINEINI > $TMPCONF
Ove Kaaven6e143b32000-10-31 00:59:01 +0000552 conf_reset_question default_config
Ove Kaaven2c767522000-10-29 18:02:53 +0000553 conf_question low default_config \
Chris Morgana00cefb2001-01-18 20:29:21 +0000554 "Created $LCONF using default Wine configuration." \
Ove Kaaven2c767522000-10-29 18:02:53 +0000555 "You probably want to review the file, though."
Ove Kaavene1858882000-04-08 20:20:21 +0000556 }
557 fi
Chris Morgan3a213212001-01-11 20:18:06 +0000558
Ove Kaaven91ae8cb2000-07-23 13:32:04 +0000559 # now we really should install the registry
560 if [ "$DOREG" = 'auto' ]
561 then DOREG=yes
562 fi
Ove Kaavene1858882000-04-08 20:20:21 +0000563}
Ove Kaaven2043ba01999-04-18 13:16:29 +0000564fi
565echo
566
Chris Morgana00cefb2001-01-18 20:29:21 +0000567#install the local config file $LCONF
568if [ "$DOLOCALCONF" = 'yes' ]
569then
570 if [ ! -w ~/.wine ]
571 then
572 mkdir ~/.wine
Chris Morgan3a213212001-01-11 20:18:06 +0000573 fi
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000574 cp $TMPCONF $LCONF > /dev/null
Chris Morgana00cefb2001-01-18 20:29:21 +0000575else
576 DOREG=no
Alexandre Julliard7cae5582002-06-01 02:55:48 +0000577fi
Chris Morgana00cefb2001-01-18 20:29:21 +0000578
579#install the global config file $GCONF
580if [ "$DOGLOBALCONF" = 'yes' ]
581then
582 if [ ! -f $sysconfdir ]
583 then
584 mkdir -p $sysconfdir
585 fi
586
587 cp $TMPCONF $GCONF > /dev/null
Ove Kaavene1858882000-04-08 20:20:21 +0000588fi
589
590# check whether we need to install default registry
591# (not to be done if windows registry exists)
592if [ "$DOREG" = 'auto' ]
593then {
Dustin Naveae0521962002-04-23 19:29:55 +0000594 CROOT=`sed -n '/^\[Drive C\]$/,/^\[.*\]$/ s/^\"Path\" = \"\(.*\)\"/\1/p' $LCONF`
Ove Kaavene1858882000-04-08 20:20:21 +0000595 echo "Checking for real Windows registry..."
596 if [ -f "$CROOT/windows/system.dat" ]
597 then DOREG=no
598 elif [ -f "$CROOT/windows/system32/config/system" ]
599 then DOREG=no
Dustin Naveae0521962002-04-23 19:29:55 +0000600 elif [ -f "$CROOT/WINNT/system32/config/system" ]
Alexandre Julliard7cae5582002-06-01 02:55:48 +0000601 then DOREG=no
Ove Kaavene1858882000-04-08 20:20:21 +0000602 else DOREG=yes
603 fi
604 if [ "$DOREG" = 'yes' ]
605 then echo "Not found, default Wine registry will be installed."
606 else echo "Windows registry found, will not install default Wine registry."
607 fi
608 echo
609}
610fi
611
Ove Kaaven2043ba01999-04-18 13:16:29 +0000612# install default registry entries
613if [ "$DOREG" = 'yes' ]
614then {
Ove Kaavene1858882000-04-08 20:20:21 +0000615 if [ "$BINDIST" = 'no' ]
616 then {
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +0000617 echo "Compiling regedit..."
618 (cd programs/regedit; make)
Ove Kaavene1858882000-04-08 20:20:21 +0000619 echo
620 }
621 fi
Ove Kaavenf561aad2000-05-09 22:32:42 +0000622 echo "Preparing to install default Wine registry entries..."
623
Vincent Bérona03e66d2003-04-22 04:03:08 +0000624 # Make sure we are on a Windows drive
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000625 mv $LCONF $LCONF.orig
Vincent Béron0996d0c2003-09-08 18:52:12 +0000626 sed "s/\"Path\" = \"%HOME%\"$/\"Path\" = \"%PWD%\"/" $LCONF.orig> $LCONF
Ove Kaavenf561aad2000-05-09 22:32:42 +0000627
Ove Kaavene1858882000-04-08 20:20:21 +0000628 echo "Installing default Wine registry entries..."
Ove Kaaven2043ba01999-04-18 13:16:29 +0000629 echo
Alexandre Julliard4a301f52002-10-29 23:27:37 +0000630 if ! $REGEDIT $DEFREG > /dev/null
Ove Kaaven2043ba01999-04-18 13:16:29 +0000631 then {
Ove Kaavenf561aad2000-05-09 22:32:42 +0000632 echo "Registry install failed."
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000633 mv $LCONF.orig $LCONF
Andriy Palamarchuka38f2d92002-05-04 18:31:24 +0000634 conf_reset_question regedit_error
635 conf_question high regedit_error
Ove Kaavenb822b842000-02-25 20:51:09 +0000636 exit 1
Ove Kaaven2043ba01999-04-18 13:16:29 +0000637 }
Chris Morgan3a213212001-01-11 20:18:06 +0000638 else {
Alexandre Julliardd16a64e2002-11-22 20:44:13 +0000639 echo
640 echo "Registry entries successfully installed."
641 mv $LCONF.orig $LCONF
Chris Morgan3a213212001-01-11 20:18:06 +0000642 }
Ove Kaaven2043ba01999-04-18 13:16:29 +0000643 fi
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000644 if [ "$SYSREG" = 'auto' ]
645 then SYSREG=yes
646 fi
Ove Kaaven2043ba01999-04-18 13:16:29 +0000647}
648fi
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000649
650# make root's registry global, if desired
Chris Morgan3a213212001-01-11 20:18:06 +0000651if [ `whoami` = 'root' ] && [ "$DOREG" = 'yes' ] && [ "$SYSREG" = 'yes' ]
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000652then {
Ove Kaaven91ae8cb2000-07-23 13:32:04 +0000653 [ -d ~/.wine ] || mkdir ~/.wine
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000654 if ! [ -f $sysconfdir/wine.userreg ]
655 then {
656 echo "Linking root's user registry hive to the global registry..."
Ove Kaaven6e143b32000-10-31 00:59:01 +0000657 [ -f ~/.wine/wine.userreg ] && cp ~/.wine/wine.userreg $sysconfdir/wine.userreg
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000658 ln -sf $sysconfdir/wine.userreg ~/.wine/wine.userreg
659 }
660 fi
661 if ! [ -f $sysconfdir/wine.systemreg ]
662 then {
663 echo "Linking root's system registry hive to the global registry..."
Ove Kaaven6e143b32000-10-31 00:59:01 +0000664 [ -f ~/.wine/system.reg ] && cp ~/.wine/system.reg $sysconfdir/wine.systemreg
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000665 ln -sf $sysconfdir/wine.systemreg ~/.wine/system.reg
666 }
667 fi
668}
669fi
670
Chris Morgana00cefb2001-01-18 20:29:21 +0000671# cleanup any temporary files that may remain
672if [ -f $TMPCONF ]
673then rm -f $TMPCONF
674fi
Chris Morgana00cefb2001-01-18 20:29:21 +0000675
676
Ove Kaavenb5d37ec2000-04-15 20:37:14 +0000677# it's a wrap
Ove Kaaven2043ba01999-04-18 13:16:29 +0000678echo
679echo "Installation complete for now. Good luck (this is still alpha software)."
Ove Kaavene1858882000-04-08 20:20:21 +0000680echo "If you have problems with WINE, please read the documentation first,"
681echo "as many kinds of potential problems are explained there."
Ove Kaaven6e143b32000-10-31 00:59:01 +0000682
683exit 0