#!/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 # usage() { echo "Usage: $0 [options]" echo "" echo "Options:" echo " -h, --help Display this message" echo " --prefix Directory to create (default: \$WINEPREFIX or ~/.wine)" echo " -q, --quiet Don't print status messages" echo " -u, --update Update the prefix directory if it already exists" echo " --use-wine-tree Run from the Wine source tree " echo "" } set -e dlldir="@dlldir@" datadir="@datadir@/wine" do_update=0 quiet=0 while [ $# -gt 0 ] do case "$1" in -h|--help) usage exit 0 ;; --prefix) WINEPREFIX="$2" shift 2 ;; -u|--update) do_update=1 shift ;; -q|--quiet) quiet=1 shift ;; --use-wine-tree) topdir=`cd "$2" && pwd` if [ -x "$topdir/server/wineserver" ] then WINELOADER="$topdir/wine" dlldir="$topdir/programs" datadir="$topdir/tools" else echo "$2 is not a valid Wine source tree" exit 1 fi shift 2 ;; *) echo "Unknown option $1" usage exit 1 ;; esac done WINEPREFIX="${WINEPREFIX:-$HOME/.wine}" if [ -d "$WINEPREFIX" ] || mkdir "$WINEPREFIX"; then : else echo "Could not create $WINEPREFIX, aborting" exit 1 fi WINEPREFIX=`cd "$WINEPREFIX" && pwd` # Create the drive symlinks if [ ! -d "$WINEPREFIX/dosdevices" ] then mkdir "$WINEPREFIX/dosdevices" [ -d "$WINEPREFIX/drive_c" ] || mkdir "$WINEPREFIX/drive_c" ln -s "../drive_c" "$WINEPREFIX/dosdevices/c:" ln -s "/" "$WINEPREFIX/dosdevices/z:" fi CROOT="$WINEPREFIX/dosdevices/c:" # Create the directory tree for i in \ "$CROOT/Program Files" \ "$CROOT/Program Files/Common Files" \ "$CROOT/windows" \ "$CROOT/windows/command" \ "$CROOT/windows/fonts" \ "$CROOT/windows/inf" \ "$CROOT/windows/profiles" \ "$CROOT/windows/profiles/Administrator" \ "$CROOT/windows/Start Menu" \ "$CROOT/windows/Start Menu/Programs" \ "$CROOT/windows/Start Menu/Programs/Startup" \ "$CROOT/windows/system" \ "$CROOT/windows/temp" do [ -d "$i" ] || mkdir "$i" done # Create the application symlinks link_app() { rm -f "$2" && 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.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 if [ $do_update = 0 ] then ${WINESERVER:-wineserver} -w if [ $quiet = 0 ] then echo "$WINEPREFIX created successfully." fi else if [ $quiet = 0 ] then echo "$WINEPREFIX updated successfully." fi fi