|  | #!/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 "      --use-wine-tree <dir>  Run from the Wine build tree <dir>" | 
|  | echo "  -w, --wait                 Wait for the wineserver to exit before returning" | 
|  | echo "" | 
|  | } | 
|  |  | 
|  | set -e | 
|  |  | 
|  | dlldir="@dlldir@" | 
|  | datadir="@datadir@/wine" | 
|  |  | 
|  | do_wait=0 | 
|  | quiet=0 | 
|  |  | 
|  | while [ $# -gt 0 ] | 
|  | do | 
|  | case "$1" in | 
|  | -h|--help) | 
|  | usage | 
|  | exit 0 | 
|  | ;; | 
|  | --prefix) | 
|  | WINEPREFIX="$2" | 
|  | shift 2 | 
|  | ;; | 
|  | -q|--quiet) | 
|  | quiet=1 | 
|  | shift | 
|  | ;; | 
|  | -w|--wait) | 
|  | do_wait=1 | 
|  | shift | 
|  | ;; | 
|  | --use-wine-tree) | 
|  | topdir=`cd "$2" && pwd` | 
|  | if [ -x "$topdir/server/wineserver" ] | 
|  | then | 
|  | WINELOADER="$topdir/wine" | 
|  | WINESERVER="$topdir/server/wineserver" | 
|  | if [ -n "$LD_LIBRARY_PATH" ] | 
|  | then | 
|  | LD_LIBRARY_PATH="$topdir/libs:$LD_LIBRARY_PATH" | 
|  | else | 
|  | LD_LIBRARY_PATH="$topdir/libs" | 
|  | fi | 
|  | export LD_LIBRARY_PATH | 
|  |  | 
|  | # find the source directory | 
|  | link=`readlink "$WINELOADER"` | 
|  | if [ -z "$link" ] | 
|  | then | 
|  | topsrcdir="$topdir" | 
|  | else | 
|  | link=`dirname "$link"` | 
|  | case "$link" in | 
|  | /*) topsrcdir=`cd "$link/.." && pwd` ;; | 
|  | *) topsrcdir=`cd "$topdir/$link/.." && pwd` ;; | 
|  | esac | 
|  | fi | 
|  |  | 
|  | dlldir="$topdir/programs" | 
|  | datadir="$topsrcdir/tools" | 
|  | else | 
|  | echo "$2 is not a valid Wine build 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/system" \ | 
|  | "$CROOT/windows/system32" \ | 
|  | "$CROOT/windows/system32/drivers" \ | 
|  | "$CROOT/windows/temp" | 
|  | do | 
|  | [ -d "$i" ] || mkdir "$i" | 
|  | done | 
|  |  | 
|  | # Create the application symlinks | 
|  |  | 
|  | link_app() | 
|  | { | 
|  | if [ ! -f "$2" ] | 
|  | then | 
|  | # make a copy if the original is writable | 
|  | if [ -w "$dlldir/$1.exe.so" ] | 
|  | then | 
|  | cp "$dlldir/$1.exe.so" "$2" || echo "Warning: failed to create $2" | 
|  | else | 
|  | ln -s "$dlldir/$1.exe.so" "$2" || echo "Warning: failed to create $2" | 
|  | fi | 
|  | fi | 
|  | } | 
|  |  | 
|  | 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/system32/wcmd.exe" | 
|  | link_app control      "$CROOT/windows/system32/control.exe" | 
|  | link_app winhelp      "$CROOT/windows/system32/help.exe" | 
|  | link_app msiexec      "$CROOT/windows/system32/msiexec.exe" | 
|  | link_app notepad      "$CROOT/windows/system32/notepad.exe" | 
|  | link_app progman      "$CROOT/windows/system32/progman.exe" | 
|  | link_app regsvr32     "$CROOT/windows/system32/regsvr32.exe" | 
|  | link_app winemine     "$CROOT/windows/system32/winmine.exe" | 
|  | link_app winver       "$CROOT/windows/system32/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_wait = 1 ] | 
|  | then | 
|  | "${WINESERVER:-wineserver}" -w | 
|  | fi | 
|  |  | 
|  | if [ $quiet = 0 ] | 
|  | then | 
|  | echo "$WINEPREFIX updated successfully." | 
|  | fi |