From bd60364040adc753315c91edc595a7e4da8eb589 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 1 Apr 2004 05:03:27 +0000 Subject: [PATCH] Beginnings of a script to initialize the .wine directory (with help from Chris Morgan). --- tools/.cvsignore | 1 + tools/Makefile.in | 12 +++-- tools/wineprefixcreate.in | 105 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 tools/wineprefixcreate.in diff --git a/tools/.cvsignore b/tools/.cvsignore index 3d055f754ae..fcf30935ed2 100644 --- a/tools/.cvsignore +++ b/tools/.cvsignore @@ -2,3 +2,4 @@ Makefile bin2res fnt2bdf makedep +wineprefixcreate diff --git a/tools/Makefile.in b/tools/Makefile.in index 3393a2a45f6..fba5fef3c3f 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -8,7 +8,8 @@ MODULE = none PROGRAMS = \ bin2res \ fnt2bdf \ - makedep + makedep \ + wineprefixcreate C_SRCS = \ bin2res.c \ @@ -40,13 +41,18 @@ fnt2bdf: fnt2bdf.o bin2res: bin2res.o $(CC) $(CFLAGS) -o bin2res bin2res.o $(LIBPORT) -install:: +wineprefixcreate: wineprefixcreate.in + sed -e 's,@dlldir\@,$(dlldir),g' -e 's,@datadir\@,$(datadir),g' $(SRCDIR)/wineprefixcreate.in >$@ || ($(RM) $@ && false) + chmod +x wineprefixcreate + +install:: wineprefixcreate $(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext) $(datadir)/wine $(INSTALL_SCRIPT) $(SRCDIR)/winemaker $(bindir)/winemaker + $(INSTALL_SCRIPT) wineprefixcreate $(bindir)/wineprefixcreate $(INSTALL_DATA) $(SRCDIR)/winemaker.man $(mandir)/man$(prog_manext)/winemaker.$(prog_manext) $(INSTALL_DATA) $(SRCDIR)/wine.inf $(datadir)/wine/wine.inf uninstall:: - $(RM) $(bindir)/winemaker $(mandir)/man$(prog_manext)/winemaker.$(prog_manext) $(datadir)/wine/wine.inf + $(RM) $(bindir)/winemaker $(bindir)/wineprefixcreate $(mandir)/man$(prog_manext)/winemaker.$(prog_manext) $(datadir)/wine/wine.inf ### Dependencies: diff --git a/tools/wineprefixcreate.in b/tools/wineprefixcreate.in new file mode 100644 index 00000000000..5b0aac28cdb --- /dev/null +++ b/tools/wineprefixcreate.in @@ -0,0 +1,105 @@ +#!/bin/sh +# +# Script to create the initial WINEPREFIX directory +# +# Copyright 1999 Ove Kåven +# Copyright 2004 Chris Morgan +# Copyright 2004 Alexandre Julliard +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +dlldir=@dlldir@ +datadir=@datadir@ + +WINEPREFIX="${1:-$WINEPREFIX}" +WINEPREFIX="${WINEPREFIX:-$HOME/.wine}" + +if [ -d "$WINEPREFIX" ] +then + echo "The $WINEPREFIX directory already exists, aborting" + exit 1 +fi + +if mkdir "$WINEPREFIX"; then : +else + echo "Could not create $WINEPREFIX, aborting" + exit 1 +fi + +CROOT="$WINEPREFIX/drive_c" + +# Create the directory tree + +for i in \ + "$WINEPREFIX/dosdevices" \ + "$CROOT" \ + "$CROOT/windows" \ + "$CROOT/windows/command" \ + "$CROOT/windows/fonts" \ + "$CROOT/windows/inf" \ + "$CROOT/windows/profiles" \ + "$CROOT/windows/profiles/Administrator" \ + "$CROOT/windows/Program Files" \ + "$CROOT/windows/Program Files/Common Files" \ + "$CROOT/windows/Start Menu" \ + "$CROOT/windows/Start Menu/Programs" \ + "$CROOT/windows/Start Menu/Programs/Startup" \ + "$CROOT/windows/system" \ + "$CROOT/windows/temp" +do + mkdir "$i" +done + +# Create the drive symlinks + +ln -s "../drive_c" "$WINEPREFIX/dosdevices/c:" +ln -s "/" "$WINEPREFIX/dosdevices/z:" + +# Create the application symlinks + +link_app() +{ + ln -s "$dlldir/$1.exe.so" "$2" || echo "Warning: failed to create $2" +} + +link_app start "$CROOT/windows/command/start.exe" +link_app notepad "$CROOT/windows/notepad.exe" +link_app regedit "$CROOT/windows/regedit.exe" +link_app rundll32 "$CROOT/windows/rundll32.exe" +link_app wcmd "$CROOT/windows/system/wcmd.exe" +link_app control "$CROOT/windows/system/control.exe" +link_app winhelp "$CROOT/windows/system/help.exe" +link_app notepad "$CROOT/windows/system/notepad.exe" +link_app progman "$CROOT/windows/system/progman.exe" +link_app regsvr32 "$CROOT/windows/system/regsvr32.exe" +link_app winemine "$CROOT/windows/system/winmine.exe" +link_app winver "$CROOT/windows/system/winver.exe" +link_app uninstaller "$CROOT/windows/uninstall.exe" +link_app winhelp "$CROOT/windows/winhelp.exe" +link_app winhelp "$CROOT/windows/winhlp32.exe" +link_app winebrowser "$CROOT/windows/winebrowser.exe" + +# Copy the .inf script and run it + +cp "$datadir/wine/wine.inf" "$CROOT/windows/inf/wine.inf" +export WINEPREFIX +${WINELOADER:-wine} rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 128 wine.inf + +# Wait for the wineserver to finish + +${WINESERVER:-wineserver} -w + +echo "$WINEPREFIX created successfully."