The Wine development release 1.3.8 is now available.

What's new in this release (see below for details):
  - Icons in the "open with" menus.
  - Man pages for all installed binaries.
  - Support for schemas in MSXML.
  - Many installer fixes.
  - Translation updates.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.8.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.3.8.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

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

----------------------------------------------------------------

Bugs fixed in 1.3.8:

   4098  Visual Basic 6 sp6 runtime installer: No progress window shown
   6856  Civilization 4 fails to start
   8107  Civilization 4 Warlords fails to start due to XML issues
  12293  Warhammer 40K: dark crusade - Cursor is not properly drawn
  14343  Bigfishgames "Play My Games" Crashes With "Unhandled page fault"
  15195  People's General randomly hangs with err:seh:setup_exception_record nested exception on signal stack
  16548  qedit:mediadet.c test is skipped due to renaming a file
  16842  Goldwave crashes
  16988  Guild Wars - 'blocky' graphics
  17140  Brothers in arms: crashes after 20-30 minutes of playing
  17623  IconWorkshop displays icons without alpha channel
  17630  Unreal Tournament 3: d3dx10_35.dll not found
  17728  Check exception during first configuration creation
  17790  ICQ 6.5 unhandled exception
  17969  Warhammer 40K: DoW: Dark Crusade demo exits silently
  18705  Heavy Load first chance exception in NtQuerySystemInformation
  18958  Adobe Reader 9 has a divide by zero error during install
  19480  Monster truck Challenge problem
  19669  Sonic Mega Collection Plus quits just after the launcher
  19787  Many Years Ago game launcher crashes on startup
  20064  Divine Divinity II - Floor is transparent
  20329  Free Realms crashes with Unimplemented d3dx9_36.dll.D3DXCreateEffectFromFileA
  20656  Kindle for PC missing text at login screen
  21261  implement the IGameExplorer interface
  21668  Unable to Play Rise of Nations Thrones and Patriots
  21680  Unity 3D: Online registration doesn't work...
  21699  VLC videos are black in Vista+ mode
  21859  Sins of a Solar Empire: Main menu does not respond to mouse clicks
  22247  Sketchup cannot export collada or google earth files
  22380  Big Fish Games: requires Administrator access
  22707  Star Wolves: crash when starting a new game
  22861  XML Copy Editor hangs when editing a file
  22905  MS Office 2007: Right-click on taskbar icon and selecting close does not work
  23176  Perfect Dark crashes in Japanese language environment
  23243  Fleet Operations 3.1.x (Star Trek Armada II) has performance problems
  23408  Sid Meier's Civilization IV Beyond the Sword v3.19 crashes
  23460  Universal USB installer 'Cancel' button does not work
  23758  XML Copy Editor save dialog 'new folder' creates new directory but does not show it
  23926  Civilization IV Colonization not getting the correct info
  24365  Adobe Photoshop CS4 installer: completely white / ie6 workaround doesn't work
  24366  Crystal Cubes: unimplemented function d3dx9_36.dll.D3DXFillTexture
  24382  Call Of Duty 4: Modern Warfare crash because of too low memory reported
  24416  America's Army 3 needs msvcr80.dll._ctime64_s
  24540  Final Fantasy 8 config program does not work
  24564  Black Mirror 2: movies in cutscenes freeze
  24595  Ninja Penguin crashes during the startup.
  24596  Italian translation for "target" should be "destinazione" and not "obiettivo"
  24729  Internet Explorer 9.0 (32-bit) beta needs msvcrt.wprintf_s
  24925  Fallout 3 needs msvcr80.dll.qsort_s
  24952  dlls/user32/button.c handles incorrectly unknown button types
  25019  Osmos Demo: needs a few msvcr80/msvp80 functions
  25056  Worms Armageddon's "Fill" and "Random Holes" map editor tools produce interlaced images
  25057  Magic Workstation: mwsplay.exe crashes when launching it
  25062  popen: the stderr from the child process is (wrongly) redirected to the parent's stdin
  25074  dotnet30 install fails with status 87 in wine > 1.3.4?
  25119  Text has a green background in Pikachu Volleyball 3D
  25121  Jigsaw (Mile Drummond) does not start
  25131  AFS Kaufmann: install crashes on "custom" installation
  25141  Morrowind: non-fatal page fault on startup (only when no gstreamer plugins are installed)
  25142  Max Payne: intro video gives black screen (only sound works)
  25144  NFS Porsche and High Stakes crash at beginning
  25149  Explzh: show the first letter only in listview or treeview.
  25159  Gmax installer crashes
  25174  Sandlot Games launchers fail with "Cannot find import... File CRYPT32.dll, function CertFindChainInStore"
  25182  MsiDatabaseImport on _ForceCodepage table returns ERROR_FUNCTION_FAILED
  25186  Tom Clancy's Splinter Cell installer locks up
  25199  Rag Doll Kung Fu crashes on startup
  25209  prototype failed to execute
  25210  unimplemented function msvcr90.dll - Puzzle Agent(Telltale Games) Demo won't start
  25235  Wrong italian translation in "add/remove programs"
  25238  Wine is missing manpages for some built-in applications
  25250  msiexec crashes with OpenWorkBench 1.1.6 install
  25262  Fallout New Vegas: runs out of memory if iShadowMapResolution=1024
  25272  ping sleeps 1 second more
  25278  Internet Explorer 4 crashes - unimplemented function wininet.dll.InternetShowSecurityInfoByURL
  25285  qedit/mediadet tests fail on most 64-bit machines
  25294  Lemony Snicket's "A Series of Unfortunate Events" installer crashes

----------------------------------------------------------------

Changes since 1.3.7:

Adam Martinson (22):
      msxml3: Store the DLL instance handle.
      msxml3: Add our own xmlFirstElementChild() for older libxml2 versions.
      msxml3: Add urn:schemas-microsoft-com:datatypes schema.
      msxml3/tests: XDR schema tests.
      msxml3: XDR schema support.
      msxml3: Use built-in urn:schemas-microsoft-com:datatypes schema for validation.
      msxml3: Fix a datatypes.xsd oops.
      msxml3: Move schema cache into the domdoc_properties struct.
      msxml3: Add XDR datatypes enum and string table.
      msxml3: Add functions to get the dt:dt of a node.
      oleaut32/tests: Test VT_BSTR => VT_UI8 at upper limit.
      msxml3: Use the associated schema for domelem_get_dataType().
      msxml3: Add BSTR versions of the XDR_DT <-> string functions.
      msxml3: Validate node content in domelem_put_dataType().
      msxml3: Implement domtext dt-related functions.
      msxml3: Fix domdoc_getElementsByTagName()/domelem_getElementsByTagName().
      configure: Add a check for xmlSchemaSetParserStructuredErrors().
      msxml3: Add schema parse/validate error callbacks.
      msxml3/tests: Move domdoc.c schema-related tests to schema.c.
      msxml3: Fix a few error messages.
      msxml3/schema: Properly handle schema_cache_add() from a URL.
      msxml3: Store the DOMDocument/XMLSchemaCache object version.

Akihiro Sagawa (1):
      jscript: Update Japanese translation.

Alexander Morozov (5):
      crypt32/tests: Do not crash on some Win98.
      crypt32/tests: Fix test failures on WinME and some NT4.
      crypt32/tests: Use pCryptAcquireContextA.
      crypt32/tests: Skip more tests.
      crypt32/tests: Fix test failures on some Win95 and some NT4.

Alexandre Julliard (17):
      winapi: Add support for more spec entry flags.
      winex11: Properly forget about a foreign window when it's destroyed through DestroyWindow().
      user32: Check structure size in GetGUIThreadInfo.
      user32: Add a stub for IsGUIThread().
      oleaut32: Fix the overflow check in VarNumFromParseNum.
      msxml3: Fix incorrect uses of va_list arguments.
      libwine: Fix a pointer comparison warning.
      advapi32/tests: Avoid sizeof in traces.
      gameux: Avoid sizeof in traces.
      msvcrt/tests: Avoid sizeof in traces.
      urlmon/tests: Avoid sizeof in traces.
      winspool/tests: Avoid sizeof in traces.
      winecrt0: Add a generic mechanism for dll registration through IRegistrar.
      oleaut32: Convert dll registration to the new IRegistrar mechanism.
      cryptnet/tests: Don't import shlwapi.
      include/msvcrt: Define more CPU control word flags.
      msvcrt: Add parameter checking in _controlfp_s.

Amine Khaldi (2):
      activeds: Properly stub some exports.
      shdocvw: Fix translations.

Andreas Pflug (1):
      oledb32: Added conversions for R8,BOOL,DATE,DBTIMESTAMP.

Andrew Bogott (2):
      ole32: Use default values if options passed to StgCreateStorageEx are NULL.
      ole32/tests: Added a couple of simple tests for StgCreateStorageEx.

Andrew Eikum (3):
      shell32/tests: Make SHChangeNotify tests more easily extendible.
      shell32: PIDLs should be checked recursively in SHChangeNotify.
      shell32: Fix an off-by-one error that causes an infinite loop.

André Hentschel (6):
      widl: Fix for typelib generation when unaligned access to memory is not allowed.
      include: Define SIO_SET_COMPATIBILITY_MODE.
      winemaker: Catch special case in Workspace file.
      include: Add some relocation types.
      winemaker: Add spec file dependency for dlls.
      ws2_32: Map AI_ADDRCONFIG.

Austin English (15):
      msiexec: Add a manpage.
      appwiz.cpl: Fix Italian translation.
      notepad: Add a manpage.
      regsvr32: Add a manpage.
      wined3d: Add detection for Nvidia GT 330.
      mmdevapi/tests: Increase timeout in capture tests.
      winemine: Add a manpage.
      winefile: Add a manpage.
      winecfg: Add a manpage.
      wininet: Add a stub for InternetShowSecurityInfoByURL.
      wineboot: Add a manpage.
      wineconsole: Add a manpage.
      regedit: Add a manpage.
      winepath: Add a manpage.
      winegcc: Symlink winegcc manpage to winecpp.

Austin Lund (1):
      gdi32/tests: Skip GetGlyphIndices tests for non-ANSI codepages.

Borut Razem (2):
      msvcrt: popen: stderr from the child process should not be redirected to the parent's stdin.
      ping: Sleep 1 second less.

Cheer Xiao (10):
      comdlg32: Update Simplified Chinese translation.
      oleview: Update Simplified Chinese translation.
      taskmgr: Update Simplified Chinese translation.
      winecfg: Update Simplified Chinese translation.
      winebot: Update Simplified Chinese translation.
      wineconsole: Update Simplified Chinese translation.
      winhlp32: Update Simplified Chinese translation.
      wordpad: Update Simplified Chinese translation.
      shell32: Update Simplified Chinese translation.
      notepad: Update Simplified Chinese translation.

Christian Inci (1):
      wined3d: Add nVidia GT 320M to the table.

Damjan Jovanovic (7):
      winemenubuilder: Generate icons for the fd.o "Open with" menu.
      winemenubuilder: Update TODO.
      winemenubuilder: Deduplicate some file open associations.
      iexplore: Use a better file description.
      atl: Improve IRegistrar dword parsing.
      atl: Add support for binary values in IRegistrar.
      sti: Use IRegistrar instead of regsvr.c.

David Hedberg (5):
      shdocvw: Implement DocHostUIHandler::TranslateAccelerator.
      shdocvw: Add IOleControlSite interface to dochost.
      shdocvw: Implement ControlSite::TranslateAccelerator.
      shdocvw: Implement InPlaceActiveObject::TranslateAccelerator.
      ole32: Avoid unneccessary stream conversion.

Detlef Riekenberg (3):
      msvcr90: Forward getenv_s to msvcrt.
      ntoskrnl.exe: Forward more functions to ntdll.
      ntdll: Add semi stub for TokenElevationType in NtQueryInformationToken.

Eric Pouech (9):
      wineconsole: Properly manage window position (in wineconsole) from within wineserver.
      wineconsole: Properly handle (user)-window resizing wrt the console.
      wineconsole: Added support for curses window resizing.
      wineconsole: In curses mode, map some box drawing attributes to ACS characters.
      msvcrt: Implemented _ltoa_s.
      msvcrt: Implemented _i64to[aw]_s.
      msvcrt: Use the macros for parameter checking for wcsncat_s (and fix the test).
      winedbg: Rename 'info exception' into 'info frame' (which is somehow closer to what it does).
      winedbg: Moved into a common function all code dealing with printing information about an exception, and use this function to implement new 'info exception' command.

Eryk Wieliczko (8):
      msvcrt: Implement strncat_s.
      msvcrt: Implement _ctime32/64_s.
      msvcrt: Implement _wfindfirst64i32.
      msvcrt: Implement _wfindnext64i32.
      msvcrt: Implement vfprintf_s and vfwprintf_s.
      msvcrt: Implement vprintf_s and vwprintf_s.
      msvcrt: Implement printf_s and wprintf_s.
      msvcrt: Implement fprintf_s and fwprintf_s.

Francois Gouget (1):
      configure: Load wine lower in memory on FreeBSD to leave more space for mmap() and malloc().

Gerald Pfeifer (2):
      msxml3: Remove practically unused variable from XDR_to_XSD_doc.
      ntdll/tests: Remove unused variable from test_query_volume_information_file.

Greg Geldorp (2):
      ws2_32/tests: NT4 and Win2000 print IPv6 addresses a little bit differently.
      winetest: Add "-u" command line option so TestBot can include a URL in the report.

Hans Leidekker (19):
      msi: Check component attributes before extracting the cabinet.
      msi: Honor msidbComponentAttributesPermanent.
      msi: Components don't require a key path.
      msi: Forward MsiInstallMissingComponentA to MsiInstallMissingComponentW.
      winspool.drv: Return success from the AddPrintProcessorW stub.
      msi: Trace the reinstall mode in hex in MsiReinstallFeatureW.
      msi: Fix handling of an empty language id list in msi_parse_summary.
      msi: Improve tracing in MsiQueryFeatureStateW.
      msi: Add support for importing and exporting the special _ForceCodepage table.
      msi: Install assemblies only if the component action request is set to INSTALLSTATE_LOCAL.
      rstrtmgr: Add stub implementations of RmEndSession and RmRestart.
      programs: Add a stub implementation of servicemodelreg.exe.
      usp10: Add stub exports for the OpenType functions.
      ntdll: Add a stub implementation of FSCTL_GET_RETRIEVAL_POINTERS.
      gdi32/tests: Fix a test failure on systems configured to use a color profile.
      msi: Fix the Create/RemoveFolders actions to actually create and remove empty folders.
      msi: Trace errors from LoadLibraryShim.
      msi: Always initialize the dialog font list. Convert it to a standard Wine list.
      msi/tests: Fix the scope of todo_wine in the tests for MsiApplyMultiplePatches.

Henri Verbeet (20):
      include: Add the tagBIND_OPTS3 structure.
      wined3d: Rename the IWineD3DPaletteImpl "Flags" field to "flags".
      wined3d: Add a trace to IWineD3DSurfaceImpl_SetMem().
      wined3d: Properly recreate the sysmem resource location in IWineD3DSurfaceImpl_SetMem().
      wined3d: Remove a redundant flag in IWineD3DSurfaceImpl_SetMem().
      wined3d: buffer_get_sysmem() potentially invalidates the current element array buffer binding.
      d3d9: Fix some return values.
      d3d8: Fix some return values.
      wined3d: Send a notification that the GL texture changed in flip_surface().
      d3d9/tests: Fix some failure messages.
      d3d8/tests: Fix some failure messages.
      ddraw/tests: Fix some failure messages.
      wined3d: Disallow empty surfaces.
      d3d9/tests: Add a test for 0 width / height surface creation.
      d3d8/tests: Add a test for 0 width / height surface creation.
      ddraw: Return DDERR_INVALIDPARAMS for 0 width / height surface creation.
      d3d9/tests: Use GetRenderTargetData() for reading back pixels.
      wined3d: Textures never have a resource size.
      wined3d: Get rid of the remaining "Flags".
      wined3d: Fix the indentation in buffer_direct_upload().

Hwang YunSong (1):
      shdocvw: Update Korean resource.

Jacek Caban (32):
      shdocvw: Get rid of WEBBROWSER_THIS macro and WebBrowser to IWebBowser2 casts.
      shdocvw: Get rid of WEBBROWSER_THIS macro and InternetExplorer to IWebBowser2 casts.
      shdocvw: Get rid of more *_THIS macros.
      shdocvw: Get rid of remaining WebBrowser object's *_THIS macros.
      shdocvw: Get rid of CLIENTSITE_THIS.
      shdocvw: Get rid of DocHost-related *_THIS macros.
      shdocvw: Get rid of *_THIS macros in navigate.c.
      shdocvw: Get rid of remaining *_THIS macros.
      mshtml: Use IUriBuilder for nsIURI::SetPath implementation.
      mshtml: Use IUri for nsIURI::GetSpec implementation.
      mshtml: Moved cloneNode implementation to vtbl.
      mshtml: Use custom get_readyState implementations for object and frame elements.
      mshtml: Added IHTMLDocument3::createDocumentFragment implementation.
      mshtml: Added createDocumentFragment tests.
      mshtml: Correctly handle DOCUMENT_FRAGMENT_NODE in IHTMLDOMNode::get_nodeType.
      mshtml: Correctly handle NULL nsdoc in IHTMLDocument2::get_body.
      mshtml: Correctly handle NULL nsdoc in IHTMLDocument2::get_location.
      mshtml: Added document fragment cloneNode implementation.
      urlmon: Don't forward Start call to protocol handler in BindProtocol.
      urlmon: Don't forward StartEx call to protocol handler in BindProtocol.
      urlmon: BindProocol's protocol handler doesn't need IInternetProtocolEx iface.
      urlmon: Store BindProtocol as IInternetProtocolEx.
      urlmon: Make get_protocol_handler IUri-based.
      urlmon: Make Binding object IUri-based.
      oleaut32: Added LoadTypeLib failure test.
      ole32: Skip more tests on win9x.
      mshtml: Removed tests failing on IE7.
      shdocvw: Skip tests on IE 5.5.
      mshtml: Don't use wine_url in nsURI::Clone implementation.
      mshtml: Don't use wine_uri in nsIIOService::NewChannelFromURI implementation.
      mshtml: Don't use wine_url in nsIURI::SchemeIs implementation.
      mshtml: Fixed ref count tests on broken IEs.

Jeff Latimer (1):
      atl: Fix a comment.

Juan Lang (4):
      winhttp: Verify revocation status of certificate chain.
      wininet: Verify revocation status of certificate chain.
      crypt32: Add CertFindChainInStore stub.
      msisip: Determine whether a file is an MSI file based on its CLSID rather than its extension.

Jörg Höhle (4):
      winecoreaudio: OSStatus is not necessarily a FOURCC.
      mciavi: MCI_OPEN @NNNN should use an open AVIFile/Stream handle.
      mciseq: Rework MCI notification system.
      mciseq: Bogus sizeof led to incorrect positioning.

Ken Thomases (1):
      loader: On Mac, reserve the process's original thread for the frameworks.

Louis Lenders (3):
      wine.inf: Add another .NET v3.0 registry-key.
      ntdll/tests: Add tests for NtQueryVolumeInformationFile with FileFsVolumeInformation class.
      ntdll: Set the IdleTime member from the SystemPerformanceInformation info class in NtQuerySystemInformation.

Luca Bennati (2):
      xcopy: Fix Italian translation.
      cmd: Fix Italian translation.

Maarten Lankhorst (8):
      winegstreamer: Fix reference leak.
      winegstreamer: Destroy thread in GST_Connect.
      winegstreamer: Fix seeking for real.
      quartz: Prevent circular connections in render case too.
      quartz: Change VideoRenderer_Run to handle EndOfStream slightly better.
      winegstreamer: Do not allow timestamp + late to go negative in QOS messages.
      quartz: Add support for fullscreen mode in video renderer.
      qedit: Try all possible splitter filters instead of only the first one.

Marcus Meissner (1):
      ntdll: Fixed file view mapping in regards to no-exec.

Matteo Bruni (7):
      d3dx9: Add color key support to D3DXLoadSurfaceFromMemory.
      d3dx9: Implement D3DXFillTexture function.
      d3dx9: Implement D3DXFillCubeTexture function.
      d3dx9: Implement D3DXFillVolumeTexture function.
      d3dx9/tests: Remove a D3DXPlaneNormalize test.
      d3dx9/tests: Fix some tests to take into account POW2 texture capability flags.
      d3dx9/tests: Fix a D3DXCheckTextureRequirements test failing on Windows.

Michael Stefaniuc (7):
      msxml3/tests: Remove redundant NULL check before SysFreeString (smatch).
      msxml3: Remove 'const' from the function return types.
      d3dx9_36: Move 'static' to the beginning of the declaration.
      msvcrt: Add missing dereference of the time pointer.
      shdocvw: Don't open code CONTAINING_RECORD().
      msxml3: Remove dead code: break after return (Smatch).
      clock: Add the Hindi translation.

Nikolay Sivov (3):
      comctl32/listview: Use a code set by dispinfo holder to convert data encoding after LVN_GETDISPINFO.
      comctl32/treeview: Use a code set by dispinfo holder to convert data encoding after TVN_GETDISPINFO.
      comctl32/treeview: Remove some casts.

Paul Vriens (9):
      include: Fix a define.
      msxml3/tests: Fix some test failures on Win98/WinMe.
      msi/tests: Cleanup properly on Win9x.
      comctl32/tests: Fix shell32 test failures on NT4/W2K.
      mscoree/tests: Use the correct wide string compare to cope with Win9x.
      mscoree/tests: Use StrStrIW from shlwapi.
      mscoree/tests: Use more A-functions to fix test failures on Win9x.
      mscoree/tests: Remove an unneeded test.
      advapi32/tests: Add a test for driver services.

Peter Urbanec (1):
      msi: Add AMD64 platform definition to support installation of Visual C++ 8.0 redistributable.

Piotr Caban (19):
      shell32: Added SHPropStg* stubs.
      shell32: Added SHPropStgCreate implementation.
      shell32: Added partial implementation of SHPropStgReadMultiple.
      shell32: Added partial implementation of SHPropStgWriteMultiple.
      shell32/tests: Added SHPropStg* tests.
      msvcrt: Fix msvcrt.spec.
      msvcrt: Update spec files.
      msvcrt: Move _initterm_e implementation (from msvcr90).
      msvcp90: Added basic_string<char>::append implementation.
      msvcp90: Added basic_string<wchar_t>::append implementation.
      msvcp90/tests: Added basic_string<char>::append tests.
      msvcp80: Update spec file.
      msvcp90/tests: Fix typo in loaded function name.
      msvcp90: Added basic_string<{char,wchar}> constructor (substring) implementation.
      msvcp90: Added basic_string<char>::compare implementation.
      msvcp90: Added basic_string<wchar>::compare implementation.
      msvcp80: Update spec file.
      msvcp90/tests: Added basic_string<char>::compare tests.
      msvcrt: Fix errors in spec files.

Stefan Leichter (1):
      ntoskrnl.exe: Add stub for PoSetPowerState.

Thomas Mullaly (3):
      urlmon: Added stub for CoInternetCombineUrlEx.
      urlmon: Implemented CoInternetCombineUrlEx.
      urlmon: Added pluggable protocol support to CoInternetCombineUrlEx.

Travis Athougies (1):
      d3dcompiler_43/tests: Added trigonometric function tests to HLSL test suite.

Vijay Kiran Kamuju (1):
      include: Add missing clsids in d3drmobj.h.

Vincas Miliūnas (6):
      msvcp90: Added basic_string<char>::swap implementation.
      msvcp90/tests: Added basic_string<char>::swap tests.
      msvcp90: Added basic_string<wchar_t>::swap implementation.
      msvcp90/tests: Added basic_string<wchar_t>::swap tests.
      msvcrt: Added qsort_s implementation.
      msvcr90/tests: Added qsort_s tests.

Vincent Povirk (1):
      ole32: Cache the contents of one extended big block depot block.

Volodymyr M. Shcherbyna (1):
      dbgeng: Add initial stub dll implementation.

Yaron Shahrabani (1):
      serialui: Added Hebrew translation.

--
Alexandre Julliard
julliard@winehq.org
