| #!/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 <dir>         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 <dir>  Run from the Wine source tree <dir>" | 
 |     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/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 | 
 |     [ -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 |