			Wine without Windows
			====================

A major goal of Wine is to allow users to run Windows programs without
having to install Windows on their machine. Wine implements the
functionality of the main DLL's usually provided with Windows.
Therefore, once Wine is finished, you will not need to have windows
installed to use Wine.

Wine has already made enough progress that it may be possible to run
your target applications without Windows installed. If you want to try
it, follow these steps:

1. Create empty C:\windows, C:\windows\system, C:\windows\Start Menu,
   and C:\windows\Start Menu\Programs directories.
   Do not point Wine to a Windows directory full of old installations
   and a messy registry. (Wine creates a special registry in your home
   directory, in $HOME/.wine/*.reg. Perhaps you have to remove these
   files).

2. Point [Drive C] in wine.conf or .winerc to where you want C: to be.
   Refer to the Wine man page for more information. Remember to use
   filesystem=win95 !

3. Use tools/wineinstall to compile Wine and install the default
   registry. Or if you prefer to do it yourself, compile programs/regapi,
   and run:   programs/regapi/regapi setValue < winedefault.reg

4. Run and/or install your applications.


Because Wine is not yet complete, some programs will work better
with native Windows DLL's than with Wine's replacements. Wine has been
designed to make this possible. Here are some tips by Juergen Schmied
(and others) on how to proceed. This assumes that your C:\windows
directory in the configuration file does not point to a native Windows
installation but is in a separate Unix file system. (For instance,
C:\windows is really /home/ego/wine/drives/c).

- Run the application with   -debugmsg +module,+file   to find out
  which files are needed. Copy the required DLL's one by one to the
  C:\windows\system directory. Do not copy KERNEL/KERNEL32, GDI/GDI32,
  or USER/USER32. These implement the core functionality of the
  Windows API, and the Wine internal versions must be used.

- Edit the [DllOverrides] section of wine.conf or .winerc to specify
  'native' before 'builtin' for the Windows DLL's you want to use.
  For more information about this, see the Wine manpage.

- Note that some network DLL's are not needed even though Wine is
  looking for them. The Windows MPR.DLL currently does not work; you
  must use the internal implementation.

- Copy SHELL/SHELL32 and COMDLG/COMDLG32 COMMCTRL/COMCTL32
  only as pairs to your Wine directory (these DLL's are
  "clean" to use).  Make sure you have these specified in the
  [DllPairs] section of wine.conf or .winerc.

- Be consistent: Use only DLL's from the same Windows version
  together.

- Put regedit.exe in the C:\windows directory (office95 imports
  a *.reg file when it runs with a empty registry, don't know
  about office97).

- Also add winhelp.exe and winhlp32.exe if you want to be able to browse
  through your programs' help function.
