.TH WINE 1 "July 2013" "@PACKAGE_STRING@" "Windows On Unix"
.SH NAME
wine \- run Windows programs on Unix
.SH SYNOPSIS
.B wine
.IR "program " [ arguments ]
.br
.B wine --help
.br
.B wine --version
.PP
For instructions on passing arguments to Windows programs, please see the
.B
PROGRAM/ARGUMENTS
section of the man page.
.SH DESCRIPTION
.B wine
loads and runs the given program, which can be a DOS, Windows
3.x, Win32 or Win64 executable (on 64-bit systems).
.PP
For debugging wine, use
.B winedbg
instead.
.PP
For running CUI executables (Windows console programs), use
.B wineconsole
instead of
.BR wine .
This will display all the output in a separate windows (this requires X11 to
run). Not using
.B wineconsole
for CUI programs will only provide very limited console support, and your
program might not function properly.
.PP
When invoked with
.B --help
or
.B --version
as the only argument,
.B wine
will simply print a small help message or its version respectively and exit.
.SH PROGRAM/ARGUMENTS
The program name may be specified in DOS format
.RI ( C:\(rs\(rsWINDOWS\(rs\(rsSOL.EXE )
or in Unix format
.RI ( /msdos/windows/sol.exe ).
You may pass arguments to the program being executed by adding them to the
end of the command line invoking
.B wine
(such as: \fIwine notepad C:\(rs\(rsTEMP\(rs\(rsREADME.TXT\fR).
Note that you need to '\(rs' escape special characters (and spaces) when invoking Wine via
a shell, e.g.
.PP
wine C:\(rs\(rsProgram\(rs Files\(rs\(rsMyPrg\(rs\(rstest.exe
.PP
It can also be one of the Windows executables shipped with Wine, in
which case specifying the full path is not mandatory, e.g. \fIwine
explorer\fR or \fIwine notepad\fR.
.PP
.SH ENVIRONMENT
.B wine
makes the environment variables of the shell from which it
is started accessible to the Windows/DOS processes started. So use the
appropriate syntax for your shell to enter environment variables you need.
.TP 
.B WINEPREFIX
If set, the contents of this variable is taken as the name of the directory where
Wine stores its data (the default is
.IR $HOME/.wine ).
This directory is also used to identify the socket which is used to
communicate with the
.BR wineserver .
All 
.B wine
processes using the same 
.B wineserver
(i.e.: same user) share certain things like registry, shared memory,
and config file.
By setting 
.B WINEPREFIX
to different values for different 
.B wine
processes, it is possible to run a number of truly independent 
.B wine
processes. 
.TP
.B WINESERVER
Specifies the path and name of the
.B wineserver
binary. If not set, Wine will try to load
.IR @bindir@/wineserver ,
and if this doesn't exist it will then look for a file named
"wineserver" in the path and in a few other likely locations.
.TP
.B WINELOADER
Specifies the path and name of the
.B wine
binary to use to launch new Windows processes. If not set, Wine will
try to load
.IR @bindir@/wine ,
and if this doesn't exist it will then look for a file named "wine" in
the path and in a few other likely locations.
.TP
.B WINEDEBUG
Turns debugging messages on or off. The syntax of the variable is
of the form
.RI [ class ][\fB+\fR|\fB-\fR] channel [,[ class2 ][\fB+\fR|\fB-\fR] channel2 ]
.RS +7
.PP
.I class
is optional and can be one of the following: 
.BR err ,
.BR warn ,
.BR fixme ,
or 
.BR trace .
If
.I class
is not specified, all debugging messages for the specified
channel are turned on.  Each channel will print messages about a particular
component of Wine.
The following character can be either \fB+\fR or \fB-\fR to switch the specified
channel on or off respectively.  If there is no
.I class
part before it, a leading \fB+\fR\fR can be omitted. Note that spaces are not
allowed anywhere in the string.
.PP
Examples:
.TP
WINEDEBUG=warn+all
will turn on all warning messages (recommended for debugging).
.br
.TP
WINEDEBUG=warn+dll,+heap
will turn on DLL warning messages and all heap messages.  
.br
.TP
WINEDEBUG=fixme-all,warn+cursor,+relay
will turn off all FIXME messages, turn on cursor warning messages, and turn
on all relay messages (API calls).
.br 
.TP
WINEDEBUG=relay
will turn on all relay messages. For more control on including or excluding
functions and dlls from the relay trace, look into the
.B HKEY_CURRENT_USER\\\\Software\\\\Wine\\\\Debug
registry key.
.PP
For more information on debugging messages, see the
.I Running Wine
chapter of the Wine User Guide.
.RE
.TP
.B WINEDLLPATH
Specifies the path(s) in which to search for builtin dlls and Winelib
applications. This is a list of directories separated by ":". In
addition to any directory specified in
.BR WINEDLLPATH ,
Wine will also look in
.IR @dlldir@ .
.TP
.B WINEDLLOVERRIDES
Defines the override type and load order of dlls used in the loading
process for any dll. There are currently two types of libraries that can be loaded
into a process address space: native windows dlls
.RI ( native ") and Wine internal dlls (" builtin ).
The type may be abbreviated with the first letter of the type
.RI ( n " or " b ).
The library may also be disabled (''). Each sequence of orders must be separated by commas.
.RS
.PP
Each dll may have its own specific load order. The load order
determines which version of the dll is attempted to be loaded into the
address space. If the first fails, then the next is tried and so
on. Multiple libraries with the same load order can be separated with
commas. It is also possible to use specify different loadorders for
different libraries by separating the entries by ";".
.PP
The load order for a 16-bit dll is always defined by the load order of
the 32-bit dll that contains it (which can be identified by looking at
the symbolic link of the 16-bit .dll.so file). For instance if
\fIole32.dll\fR is configured as builtin, \fIstorage.dll\fR will be loaded as
builtin too, since the 32-bit \fIole32.dll\fR contains the 16-bit
\fIstorage.dll\fR.
.PP
Examples:
.TP
WINEDLLOVERRIDES="comdlg32,shell32=n,b"
.br
Try to load comdlg32 and shell32 as native windows dll first and try
the builtin version if the native load fails.
.TP
WINEDLLOVERRIDES="comdlg32,shell32=n;c:\(rs\(rsfoo\(rs\(rsbar\(rs\(rsbaz=b"
.br
Try to load the libraries comdlg32 and shell32 as native windows dlls. Furthermore, if 
an application request to load \fIc:\(rsfoo\(rsbar\(rsbaz.dll\fR load the builtin library \fIbaz\fR.
.TP
WINEDLLOVERRIDES="comdlg32=b,n;shell32=b;comctl32=n;oleaut32="
.br
Try to load comdlg32 as builtin first and try the native version if
the builtin load fails; load shell32 always as builtin and comctl32
always as native; oleaut32 will be disabled.
.RE
.TP
.B WINEARCH
Specifies the Windows architecture to support. It can be set either to
.B win32
(support only 32-bit applications), or to
.B win64
(support both 64-bit applications and 32-bit ones in WoW64 mode).
.br
The architecture supported by a given Wine prefix is set at prefix
creation time and cannot be changed afterwards. When running with an
existing prefix, Wine will refuse to start if
.B WINEARCH
doesn't match the prefix architecture.
.TP
.B DISPLAY
Specifies the X11 display to use.
.TP
OSS sound driver configuration variables:
.TP
.B AUDIODEV
Set the device for audio input / output. Default
.IR /dev/dsp .
.TP
.B MIXERDEV
Set the device for mixer controls. Default
.IR /dev/mixer .
.TP
.B MIDIDEV
Set the MIDI (sequencer) device. Default
.IR /dev/sequencer .
.SH FILES
.TP
.I @bindir@/wine
The Wine program loader.
.TP
.I @bindir@/wineconsole
The Wine program loader for CUI (console) applications.
.TP
.I @bindir@/wineserver
The Wine server
.TP
.I @bindir@/winedbg
The Wine debugger
.TP
.I @dlldir@
Directory containing Wine shared libraries
.TP
.I $WINEPREFIX/dosdevices
Directory containing the DOS device mappings. Each file in that
directory is a symlink to the Unix device file implementing a given
device. For instance, if COM1 is mapped to \fI/dev/ttyS0\fR you'd have a
symlink of the form \fI$WINEPREFIX/dosdevices/com1\fR -> \fI/dev/ttyS0\fR.
.br
DOS drives are also specified with symlinks; for instance if drive D:
corresponds to the CDROM mounted at \fI/mnt/cdrom\fR, you'd have a symlink
\fI$WINEPREFIX/dosdevices/d:\fR -> \fI/mnt/cdrom\fR. The Unix device corresponding
to a DOS drive can be specified the same way, except with '::' instead
of ':'. So for the previous example, if the CDROM device is mounted
from \fI/dev/hdc\fR, the corresponding symlink would be
\fI$WINEPREFIX/dosdevices/d::\fR -> \fI/dev/hdc\fR.
.SH AUTHORS
Wine is available thanks to the work of many developers. For a listing
of the authors, please see the file
.I AUTHORS
in the top-level directory of the source distribution.
.SH COPYRIGHT
Wine can be distributed under the terms of the LGPL license. A copy of the
license is in the file
.I COPYING.LIB
in the top-level directory of the source distribution.
.SH BUGS
.PP
A status report on many applications is available from the
.UR http://appdb.winehq.org
.B Wine Application Database
.UE .
Please add entries to this list for applications you currently run, if
necessary.
.PP
Bugs can be reported on the
.UR http://bugs.winehq.org
.B Wine bug tracker
.UE .
.SH AVAILABILITY
The most recent public version of 
.B wine
is available through WineHQ, the
.UR http://www.winehq.org/
.B Wine development headquarters
.UE .
.SH "SEE ALSO"
.BR wineserver (1),
.BR winedbg (1),
.br
.UR http://www.winehq.org/help
.B Wine documentation and support
.UE .
