This is release 20050111 of Wine, a free implementation of Windows on
Unix.  This is still a developers only release.  There are many bugs
and unimplemented features.  Most applications still do not work
correctly.

WHAT'S NEW with Wine-20050111: (see ChangeLog for details)
        - Many OLE bug fixes and improvements.
        - A lot more work on the MSI dll.
        - Update regions now handled in the Wine server.
        - Beginnings of typelib generation in the IDL compiler.
        - Many janitorial cleanups.
        - Lots of bug fixes.

See the README file in the distribution for installation instructions.

Because of lags created by using mirror, this message may reach you before
the release is available at the ftp sites.  The sources will be available
from the following locations:

  http://www.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-20050111.tar.gz
  http://prdownloads.sourceforge.net/wine/Wine-20050111.tar.gz

It should also be available from any other site that mirrors ibiblio.org.
These locations also hold pre-built documentation packages in various
formats: wine-doc-html.tar.gz, wine-doc-txt.tar.gz,
wine-doc-pdf.tar.gz and wine-doc-ps.tar.gz.

You can also get the current source directly from the CVS tree. Check
http://www.winehq.org/cvs for details.

Patches should be submitted to "wine-patches@winehq.org".  Please
don't forget to include a ChangeLog entry. If you submitted a patch,
please check to make sure it has been included in the new release.

If you want to receive by mail a patch against the previous release
when a new one is released, you can subscribe to the mailing list at
http://www.winehq.org/mailman/listinfo/wine-releases .

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

--
Alexandre Julliard
julliard@winehq.org
