Make winelauncher work better for source tree builds.
Make winelauncher detect the lack of a ~/.winerc file and prompt the
user about it.
Pass command line parameters a bit more graciously; improves
interaction with gmc and kfm.
diff --git a/tools/winelauncher.in b/tools/winelauncher.in
index 94ffba4..c73e0d2 100755
--- a/tools/winelauncher.in
+++ b/tools/winelauncher.in
@@ -70,12 +70,24 @@
# to relocate this installation. If so, that stuff above
# is all broken and we should rejigger it.
#------------------------------------------------------------------------------
-if [ ! -x $WINEBIN/wine ] ; then
- WINEBIN=`find $argv0_dir -maxdepth 1 -perm +0111 -type f -name 'wine' -printf "%h\n" | head -1`
+WINE_BIN_NAME=wine.bin
+if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+ WINEBIN=`find $argv0_dir -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
fi
-if [ ! -x $WINEBIN/wine ] ; then
- WINEBIN=`find $argv0_dir/../ -maxdepth 1 -perm +0111 -type f -name 'wine' -printf "%h\n" | head -1`
+if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+ WINEBIN=`find $argv0_dir/../ -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
+fi
+
+if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+ WINE_BIN_NAME=wine
+ if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+ WINEBIN=`find $argv0_dir -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
+ fi
+
+ if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+ WINEBIN=`find $argv0_dir/../ -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
+ fi
fi
if [ ! -r $WINELIB/libwine.so ] ; then
@@ -86,12 +98,16 @@
WINELIB=`find $argv0_dir/../ -maxdepth 2 -name 'libwine.so' -printf "%h\n" | head -1`
fi
+if [ -x $WINEBIN/wineserver ] ; then
+ WINESERVER=$WINEBIN/wineserver
+fi
+
#------------------------------------------------------------------------------
# Hey, if we built Wine from source, let's add a little extra fun to
# mix it up a bit
#------------------------------------------------------------------------------
if [ -x $WINEBIN/server/wineserver ] ; then
- WINESERVERBIN=$WINEBIN/server
+ WINESERVER=$WINEBIN/server/wineserver
fi
if [ -r $WINELIB/dlls/libuser.so ] ; then
@@ -103,8 +119,9 @@
# Okay, set the paths and move on.
#------------------------------------------------------------------------------
export LD_LIBRARY_PATH=$WINELIB:$WINELIBDLLS:$LD_LIBRARY_PATH
-export PATH=$WINEBIN:$WINESERVERBIN:$PATH
-
+export PATH=$WINEBIN:$PATH
+export WINEDLLPATH=$WINELIBDLLS
+export WINELOADER=$WINEBIN/$WINE_BIN_NAME
info_flag=~/.wine/.no_prelaunch_window_flag
debug_flag=~/.wine/.no_debug_window_flag
@@ -138,7 +155,7 @@
if [ $no_args -eq 1 ] ; then
echo "Wine called with no arguments."
- echo "Invoking $WINEBIN/wine $@ ..."
+ echo "Invoking $WINEBIN/$WINE_BIN_NAME $@ ..."
$XMESSAGE -buttons " Okay ":0," See the Wine Usage Statement ":1," Configure Wine ":2 \
-title "Welcome to Wine" \
"
@@ -184,13 +201,71 @@
fi
#------------------------------------------------------------------------------
+# No config file? Offer to help 'em out...
+#------------------------------------------------------------------------------
+conf=0
+
+while [ $conf -eq 0 ] ; do
+
+ if [ -f ~/.winerc ] ; then
+ conf=1
+ fi
+ if [ -f ~/.wine/config ] ; then
+ conf=2
+ fi
+ if [ -f /etc/wine.conf ] ; then
+ conf=3
+ fi
+
+ if [ $conf -ne 0 ] ; then
+ break;
+ fi
+
+ echo "No configuration file detected."
+ $XMESSAGE -buttons " Cancel ":0," Proceed ":1," Configure Wine ":2 \
+ -title "Welcome to Wine" \
+ "
+
+ You have started Wine but we cannot find a Wine
+ configuration file.
+
+ This is normal if you have never run Wine before.
+ If this is the case, select the 'Configure Wine'
+ option, below, to create a configuration file.
+
+ "
+ init_rc=$?
+ if [ $init_rc -eq 0 ] ; then
+ exit
+ fi
+
+ if [ $init_rc -eq 1 ] ; then
+ break
+ fi
+
+ if [ $init_rc -eq 2 ] ; then
+ which winesetup
+ if [ $? -eq 0 ] ; then
+ winesetup
+ else
+ if [ -x /opt/wine/bin/winesetup ] ; then
+ /opt/wine/bin/winesetup
+ else
+ $XMESSAGE -title "Error" "Error: Unable to find winesetup in your PATH or in /opt/wine/bin"
+ fi
+ fi
+ fi
+
+done
+
+#------------------------------------------------------------------------------
# Optionally Warn the user we're going to be launching Wine...
#------------------------------------------------------------------------------
if [ $use_info_message -ne 0 ] ; then
- echo "Invoking $WINEBIN/wine $@ ..."
+ echo "Invoking $WINEBIN/$WINE_BIN_NAME $@ ..."
$XMESSAGE -timeout 30 -buttons " Dismiss ":0," Never display this message again ":3 \
-title "Wine Launch Window" \
- "Invoking $WINEBIN/wine $@ ...
+ "Invoking $WINEBIN/$WINE_BIN_NAME $@ ...
This dialog box is a temporary status dialog to let you know
that Wine is attempting to launch your application.
@@ -267,7 +342,7 @@
# but then I can't find a way to get the return code of wine;
# I only get the return code of tee.
#------------------------------------------------------------------------------
- $WINEBIN/wine "$@" >$log_name 2>&1 &
+ $WINEBIN/$WINE_BIN_NAME "$@" >$log_name 2>&1 &
wine_pid=$!
tail -f $log_name &
@@ -278,7 +353,7 @@
kill $tail_pid
else
- $WINEBIN/wine "$@"
+ $WINEBIN/$WINE_BIN_NAME "$@"
wine_return=$?
fi