From 3a2b900124f28614f93df96f1c9cd14ffc1f39a7 Mon Sep 17 00:00:00 2001 From: Jeremy White <jwhite@codeweavers.com> Date: Fri, 1 Dec 2000 20:43:51 +0000 Subject: [PATCH] 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. --- tools/winelauncher.in | 99 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 87 insertions(+), 12 deletions(-) diff --git a/tools/winelauncher.in b/tools/winelauncher.in index 94ffba49aec..c73e0d2637b 100755 --- a/tools/winelauncher.in +++ b/tools/winelauncher.in @@ -70,12 +70,24 @@ fi # 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 @@ if [ ! -r $WINELIB/libwine.so ] ; then 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 @@ fi # 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 @@ fi 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" \ " @@ -183,14 +200,72 @@ if [ $no_args -eq 1 ] ; then always_see_output=1 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 @@ if [ $use_log_name -ne 0 ] ; then # 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 @@ if [ $use_log_name -ne 0 ] ; then kill $tail_pid else - $WINEBIN/wine "$@" + $WINEBIN/$WINE_BIN_NAME "$@" wine_return=$? fi -- GitLab