Added a winelauncher shell script which makes the process of running
Wine a little nicer for an end user. The intent of winelauncher is to
be used inside of a distribution package.
diff --git a/tools/winelauncher.in b/tools/winelauncher.in
new file mode 100755
index 0000000..d54c57e
--- /dev/null
+++ b/tools/winelauncher.in
@@ -0,0 +1,186 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# Winelauncher
+# This shell script attempts to intelligently manage the process
+# of launching a program with Wine. It adds some level of
+# visual feedback to an end user.
+#
+# Usage:
+# winelauncher [options] "<windows program> [program arguments]"
+#
+# This script is meant to be installed to /usr/bin/wine, and
+# to be used to invoke a Windows executable.
+# The options are passed through directly to Wine, and are
+# documented in the Wine man page.
+#
+# Copyright (c) 2000 by Jeremy White for CodeWeavers
+#
+#------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------
+# Primary configuration area - change this if you installed Wine to
+# a location other than @prefix@
+#------------------------------------------------------------------------------
+prefix=@prefix@
+
+#------------------------------------------------------------------------------
+# Secondary configuration area; change these at your own risk.
+#------------------------------------------------------------------------------
+exec_prefix=@exec_prefix@
+WINEBIN=@bindir@
+WINELIB=@libdir@
+
+export LD_LIBRARY_PATH=$WINELIB:$LD_LIBRARY_PATH
+export PATH=$WINEBIN:$PATH
+
+info_flag=~/.wine/.no_prelaunch_window_flag
+debug_flag=~/.wine/.no_debug_window_flag
+debug_options="-debugmsg warn+all"
+
+if [ -f $info_flag ] ; then
+ use_info_message=0
+else
+ use_info_message=1
+fi
+
+if [ -f $debug_flag ] ; then
+ use_debug_message=0
+else
+ use_debug_message=1
+fi
+
+
+#------------------------------------------------------------------------------
+# Optionally Warn the user we're going to be launching Wine...
+#------------------------------------------------------------------------------
+if [ $use_info_message -ne 0 ] ; then
+ echo "Invoking $WINEBIN/wine $* ..."
+ xmessage -timeout 10 -buttons Dismiss:0,"Never display this message again":3 \
+ "Invoking $WINEBIN/wine $* ..." &
+ info_message_pid=$!
+fi
+
+#------------------------------------------------------------------------------
+# Generate a temporary log file name
+#------------------------------------------------------------------------------
+use_log_name=0
+log_name=`mktemp /tmp/wine.log.XXXXXX`
+if [ $? -eq 0 ] ; then
+ which tail >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ use_log_name=1
+ fi
+fi
+
+#------------------------------------------------------------------------------
+# Okay, really launch Wine...
+#------------------------------------------------------------------------------
+if [ $use_log_name -ne 0 ] ; then
+ #------------------------------------------------------------------------------
+ # Okay, we bend over backwards to run Wine, get that status,
+ # but still display its output to the screen.
+ # The obvious thing to do is to run wine and pipe output to tee,
+ # but then I can't find a way to get the return code of wine;
+ # I only get the return code of Wine.
+ #------------------------------------------------------------------------------
+ $WINEBIN/wine $* >$log_name 2>&1 &
+ wine_pid=$!
+
+ tail -f $log_name &
+ tail_pid=$!
+
+ wait $wine_pid
+ wine_return=$?
+
+ kill $tail_pid
+else
+ $WINEBIN/wine $*
+ wine_return=$?
+fi
+
+#------------------------------------------------------------------------------
+# Clean up the info message
+#------------------------------------------------------------------------------
+if [ $use_info_message -ne 0 ] ; then
+
+ #------------------------------------------------------------------------------
+ # Okay, make sure that the notice window is dead (and kill it if it ain't)
+ #------------------------------------------------------------------------------
+ ps $info_message_pid >/dev/null 2>&1
+ if [ $? -ne 0 ] ; then
+ wait $info_message_pid
+ info_return=$?
+ else
+ info_return=0
+ kill $info_message_pid
+ fi
+
+ #------------------------------------------------------------------------------
+ # If they didn't like the warning window, turn it off
+ #------------------------------------------------------------------------------
+ if [ $info_return -eq 3 ] ; then
+ echo "Disabling Wine prelaunch Window. Remove $info_flag to enable"
+ touch $info_flag
+ fi
+fi
+
+#------------------------------------------------------------------------------
+# Test the return code, and see if it fails
+#------------------------------------------------------------------------------
+if [ $wine_return -eq 0 ] ; then
+ echo "Wine exited with a successful status"
+ if [ $use_log_name -ne 0 ] ; then
+ rm -f $log_name
+ fi
+else
+ echo "Wine failed with return code $wine_return"
+
+ #------------------------------------------------------------------------------
+ # Gracefully display a debug message if they like...
+ #------------------------------------------------------------------------------
+ while [ $use_debug_message -gt 0 ] ; do
+
+ #------------------------------------------------------------------------------
+ # If they didn't like the warning window, turn it off
+ #------------------------------------------------------------------------------
+ if [ $use_log_name -ne 0 ] ; then
+ echo "Error log stored in $log_name"
+ xmessage -buttons Ok:0,"View Log ($log_name)":1,"Rerun with debug":2,"Never display this message again":3\
+ "Wine failed with return code $wine_return"
+ else
+ xmessage -buttons Ok:0,"Rerun with debug":2,"Never display this message again":3\
+ "Wine failed with return code $wine_return"
+ fi
+ info_return=$?
+
+ if [ $info_return -eq 1 ] ; then
+ xmessage -file $log_name -buttons Ok:0,"Delete $log_name":1
+ if [ $? -eq 1 ] ; then
+ echo "Deleting $log_name"
+ rm -f $log_name
+ use_log_name=0
+ fi
+ else
+ use_debug_message=0
+ fi
+
+ #------------------------------------------------------------------------------
+ # If they didn't like the warning window, turn it off
+ #------------------------------------------------------------------------------
+ if [ $info_return -eq 3 ] ; then
+ echo "Disabling Wine debug window. Remove $debug_flag to enable"
+ touch $debug_flag
+ fi
+
+ #------------------------------------------------------------------------------
+ # If they want to retry with debug, let 'em.
+ #------------------------------------------------------------------------------
+ if [ $info_return -eq 2 ] ; then
+ echo "Rerunning $0 $debug_options $*"
+ exec $0 $debug_options $*
+ fi
+ done
+fi
+