The Wine development release 1.7.14 is now available.

What's new in this release (see below for details):
  - More Task Scheduler support.
  - Improvements for AVI encoding support.
  - More VisualBasic interfaces in MSXML.
  - Support for deflate content encoding in Wininet.
  - Some fixes for monochrome printers.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.14.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.14.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.7.14 (total 56):

   3901  Rayman 3 Hoodlum Havoc installer can't copy files
   5552  Need for Speed Porsche 2000 doesn't see DX as installed
   7602  MPLAB 7.52 starts with errors
   8391  EDWinXP 1.50 trial version aborts after splash screen (IPicture DISPID_PICT_RENDER support missing)
   8539  VMXBuider 0.8 (VB6 app) fails to create new VM, reporting "Run-time error '-2147417848 (80010108)': Automation error"
   9396  Solidworks 2006/2007/2012 fails to save files, reporting 'An unsupported operation was attempted.' (comdlg32 version resource outdated/inconsistent with default WinVer setting)
  12757  Europa Universalis Rome crashes on startup (D3DXLoadSurfaceFromFileInMemory must not unconditionally call CoUninitialize(), different COM threading model used)
  15286  Multiple applications need Windows Media Player ActiveX control: CLSID 6bf52a52-394a-11d3-b153-00c04f79faa6 (iMesh 7.x, Amazon mp3 downloader, ...)
  15480  Saving files in Microsoft Word/Excel 2000-2010 creates useless .lnk files (CSIDL_RECENT folder missing)
  16360  Help does not work in Office 2000
  19513  Rise of Legends: CD2 is not recognized (wine eject/umount/remount doesn't work)
  20209  AverTV installer for AverMedia AverTV Hybrid Volar HX crashes
  22010  Europa Universalis: For the Glory; crashes on startup
  22089  Starcraft II license screen - moving the mouse makes installer think you've read entire license
  22171  BizAgi Process Modeler requires gdiplus.GdipWidenPath() implementation (Mono, MS .NET)
  22935  Double clicking a word file can't open it (opens fine from Word 2007 opens it)
  22986  can't read DivX 7.2 licence agreement
  23577  Kaspersky Internet Security 2010 installation problem: needs Win XP SP 2 (builtin 'fltlib.dll' needs version resource)
  24419  Nvidia hdr sample crashes without native d3dx9_36
  25430  Internet Explorer 4 can't load the WineHQ forum without native urlmon
  25668  DAEMON Tools 3.47 installer crashes on unimplemented function setupapi.dll.SetupDiSetSelectedDevice
  26461  OmniPage 17 installer fails to complete (hangs, heap corruption)
  26517  The game Battleground Europe crashes
  26568  Siemens PLM NX 7.5: License Server installation hangs up on starting services
  26602  MS Excel 2007: Excel hangs-up after closing solver
  26654  MS Office 2000 programs crash when resizing windows
  26927  iTunes 10.2.2 store homepage is black
  27236  Lego Pirates of the Carribean demo: psychadelic rendering artifacts
  27504  Freejack downloader crashes before downloading files
  28067  In Battleground Europe mouse stuck in middle of screen
  28080  Radeon Bios Editor v1.28 (VB6 app) crashes when saving modified BIOS files
  28405  AVID/Pinnacle LE 6.10 crashes on unimplemented function setupapi.dll.SetupAddToSourceListA
  28972  Seagate Crystal Enterprise 8.0 installer fails when starting services
  29432  Mezzmo DLNA media server 3.4 crashes on startup
  29447  ZBrush 4R2 not launching
  29846  HTML-Kit 292 can't show any plugin previews except the default
  29856  Password Safe 3.26 initial default help page is blank (invalid MSITStore moniker constructed)
  29954  ERWIN r8.2 cannot install due to missing ERwinIScustomactions.dll
  29987  BlueKenue 3.x crashes on startup
  30097  Can't host server on Terraria 1.1
  30099  Terraexplorer 6.1 not run
  30324  imgburn 2.5.7.0 crashes on startup
  30876  Diablo 1 demo crashes
  31111  wmp9 install fails with builtin pidgen
  33489  WinRAR 5.0 beta 1 help causes HH crash
  33947  Battle.net desktop app crashes after 15 seconds
  35107  Cannot display japanese vertical text correctly.
  35572  gdi32:font fails on Windows 2000
  35624  3Dmark 2001 SE: Broken "Fill Rate (Multi-Texturing)" test
  35629  Zynaps: menu is rendered incorrectly
  35635  VMXBuider 0.8 (VB6 app) fails to create new VM, reporting "Run-time error '445'" - filesys_get_Drives
  35636  JobTabs Free Resume Builder 2013 (vb6 app) fails on startup (failure to parse app SxS manifest referencing registry free COM server)
  35668  HEDZ installer crashes
  35673  Gallium 0.4 on SVGA3D not recognized (running Call To Power 2 stops)
  35676  iMesh 7.x crashes on IWMPCore::get_settings method stub
  35691  IPLA 0.9 installer aborts with 'Windows Media Player version 9 or newer needed' (wmp.dll version resource missing)

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

Changes since 1.7.13:

Alexandre Julliard (3):
      ntdll: Detect 16-bit modules and resolve imports for them.
      configure: Avoid printing empty warning lines.
      kernel32/tests: Add more Unicode digit ranges.

Alistair Leslie-Hughes (1):
      dpnet: Add pointer tests and checks in EnumServiceProvider.

André Hentschel (3):
      kernel32/tests: Remove unused assertion header.
      ws2_32/tests: Test OOB data more sequential by sending bidirectional.
      ws2_32/tests: Get rid of the do_oob_send helper function.

Aric Stewart (4):
      secur32: Return success on graceful close of SSL connection.
      dmime: Do not try to query a NULL direct sound buffer.
      shell32: Improve the FO_MOVE operation.
      user32: Correct buffer calculation for GetMenuStringA.

Bruno Jesus (3):
      ws2_32/tests: Add W2K error values as valid.
      po: Update Brazilian Portuguese translation.
      po: Update Portuguese translation.

Christoph von Wittich (2):
      comctl32: Rename TBSTYLE_EX_UNDOC1 to TBSTYLE_EX_VERTICAL.
      comctl32/tests: CCS_VERT should be set when TBSTYLE_EX_VERTICAL is set.

Daniel Lehman (1):
      ole32: Make some COM functions hot-patchable.

Dmitry Timoshkov (18):
      xmllite: Also clear the attr pointer in reader_clear_attrs.
      include: Fix typedef for TASK_RUNLEVEL_TYPE.
      taskschd: Add support for reading more TaskSettings fields to XML parser.
      taskschd: Add support for reading RegistrationInfo to XML parser.
      taskschd: Add support for reading Principals to XML parser.
      taskschd: Add initial version of the task definition XML writer.
      taskschd: Add support for RegistrationInfo to task definition XML writer.
      taskschd: Add support for Principals to task definition XML writer.
      taskschd: ITaskService::NewTask doesn't need a server connection.
      taskschd/tests: Add more various tests.
      taskschd: Add a check for the task namespace.
      taskschd: Don't accept task XML with an invalid boolean value.
      taskschd: Return appropriate error code for a malformed XML.
      taskschd: Add more tests for RegisterTask, GetTask and DeleteTask.
      taskschd/tests: Add more ITaskFolder::RegisterTask tests.
      gdiplus/tests: Mark some GdipGetPropertyItem test results as broken under XP.
      kernel32/tests: Add some tests for CreateFile called on a directory instead of a file.
      kernel32/tests: Add a test for CreateFile called with TRUNCATE_EXISTING/FILE_WRITE_DATA parameters.

Erich Hoover (2):
      hhctrl.ocx: Support delimited filenames for HH_DISPLAY_TOPIC data.
      hhctrl.ocx: Permit HTML start/end tags within quoted attributes.

François Gouget (16):
      d3d9/tests: Fix some test failures on Windows 2000.
      oleaut32/tests: Skip the test_stub() tests if we have insufficient privileges.
      winmm/tests: Change the current directory to a place that will be writable.
      d3d10_1: Make debug_d3d10_{driver_type,feature_level}() static.
      ddraw/tests: Fix some comma versus semi-colon mixups.
      ddraw/tests: Simplify the 'NT4 testbot' special case a bit.
      xcopy/tests: Fix the test in case stdin has been redirected.
      oleaut32/tests: Fix compilation on systems that don't support nameless structs.
      advapi32/tests: Fix the backup tests when run in a non-administrator pre-Vista account.
      kernel32/tests: Skip some profile tests if not allowed to create files in the Windows directory.
      msi/tests: Check that we have enough privileges to run the automation tests.
      msi/tests: Avoid source test failures when running in an account with insufficient privileges.
      msi/tests: Avoid msi test failures when running in an account with insufficient privileges.
      msi/tests: Skip some package tests if in a non-administrator, non-power user account.
      msi/tests: Update is_process_limited() to deal with non-administrator accounts.
      faultrep/tests: Update is_process_limited() to deal with non-administrator, non-power user accounts.

Frédéric Delanoy (12):
      msvidc32: Use BOOL type where appropriate.
      taskkill: Use BOOL type where appropriate.
      atl/tests: Use BOOL type where appropriate.
      d3dcompiler_43/tests: Use BOOL type where appropriate.
      setupx.dll16: Use BOOL type where appropriate.
      avifil32: Use BOOL type where appropriate.
      comdlg32/tests: Use BOOL type where appropriate.
      dplayx: Use BOOL type where appropriate.
      shlwapi/tests: Use BOOL type where appropriate.
      notepad: Use BOOL type where appropriate.
      start: Use BOOL type where appropriate.
      winemenubuilder: Use BOOL type where appropriate.

Gediminas Jakutis (2):
      d3dx9: Implement D3DXCreateBox().
      d3dx9/tests: Add a mesh test for D3DXCreateBox().

Grazvydas Ignotas (2):
      include: Remove unneeded semicolons and fix a typo.
      winegcc: Define __stdcall and similar attributes to nothing on ARM.

Hans Leidekker (11):
      msi: Don't install services without an image path.
      msi: Use an INSTALLSTATE variable to track install state of classes and extensions.
      msi: Get rid of the InstallMe field in MSIMIME.
      msi: Correctly [un]register progids when associated class and extensions change state.
      winspool: Add stub implementations of UploadPrinterDriverPackageA/W.
      wbemprox: Implement Win32_DiskDrive.MediaType.
      wbemprox: Implement Win32_PhysicalMedia.Tag.
      wbemprox: Add support for negated expressions in WHERE clauses.
      msi: Remove the product reference when a shared component is unregistered.
      ws2_32/tests: Mark some test results on Windows 8 as broken.
      advapi32/test: Fix test failures on filesystems where compression is enabled.

Henri Verbeet (24):
      d3d9/tests: Get rid of "skip_once" in yuv_layout_test().
      ddraw/tests: Try 24 bpp display modes if 32 bpp modes are unavailable.
      ddraw/tests: Properly create offscreen plain surfaces.
      ddraw/tests: Don't trust what EnumDevices() tells us about the supported Z buffer formats.
      wined3d: Also trace "mem" and "pitch" in wined3d_surface_update_desc().
      wined3d: Filter redundant WINED3D_MAP_DISCARD buffer maps.
      ddraw: User memory surfaces should be in the system memory pool.
      ddraw: User memory surfaces should be created with an explicit pitch.
      ddraw: Don't overwrite the caller specified pitch in ddraw_surface_init().
      ddraw: Validate the surface pitch for user memory surfaces in ddraw_surface_init().
      ddraw: Clear DDSD_LPSURFACE after surface creation.
      ddraw: Disallow user memory surfaces before version 4.
      ddraw/tests: Add a test for creating surfaces with an explicit pitch.
      ddraw/tests: Avoid using EnumDevices() to get a supported Z buffer format.
      wined3d: Recognize VMware SVGA3D.
      wined3d: Get rid of GL_VENDOR_INTEL.
      ddraw/tests: Verify that creating a ddraw object works before running any real tests.
      d3d8/tests: Don't bother handling Direct3DCreate8() failures, we verified it works earlier.
      d3d9/tests: Don't bother handling Direct3DCreate9() failures, we verified it works earlier.
      d3d9/tests: Use create_device() in more tests.
      d3d8/tests: Use create_device() in more tests.
      d3d9/tests: Handle failure to create a device in the stateblock tests with skip().
      d3d8/tests: Handle failure to create a device in the stateblock tests with skip().
      d3dx9: Use a 1x1x1 unit box in D3DXCreateBox().

Huw D. M. Davies (2):
      wineps: Use the correct colours when a monochrome bitmap without a colour table is the source.
      wineps: Return 32 even for monochrome printers.

Jacek Caban (29):
      urlmon: Fixed some tests on IE11.
      wmp: Return success in IPersistStreamInit::InitNew.
      wmp: Added DoVerb(OLEIVERB_HIDE) implementation.
      wmp: Added SetObjectRects implementation.
      wmp: Added IOleControl stub implementation.
      urlmon: Fixed protocol tests on IE11.
      urlmon: Query bind info object for BINDSTRING_ROOTDOC_URL.
      wmp: Added IWMPPlayer4::get_settings implementation.
      urlmon: Fixed url.c tests on IE11.
      wmp: Added version info resources.
      secur32/tests: Fixed tests with new winehq.org setup.
      wininet/tests: Fixed tests for the new winehq.org cert.
      qcap: Added AVICompressorIn_Disconnect implementation.
      crypt32: Moved chain engine handle handling to separated function and improved error handling.
      crypt32: Added support for HCCE_LOCAL_MACHINE.
      mshtml: Don't use fragment navigation for SuperNavigate calls.
      wininet: Renamed read_mode_t to blocking_mode_t.
      wininet: Use blocking_mode_t instead of flags in NETCON_recv.
      wininet: Improved non-blocking mode in secure NETCON_recv.
      wininet: Get rid of no longer needed size calculation in netconn_read.
      wininet: Use non-blocking reads in netconn_drain_content.
      wininet: Get rid of no longer needed hack in gzip_read that prevents consuming the whole input buffer until we're at the end of stream.
      wininet: Added support for raw deflate content encoding.
      atl/tests: Use HKCU instead of HKCR for registrar tests.
      ws2_32: Improved WSAIoctl debug messages.
      vbscipt: Added beginning support for arrays as class members.
      vbscript: Directly access 'this' object properties in interpreter.
      crypt32: Simplified getting context expiration.
      urlmon/tests: Use asynchronous binding for invalid cert tests.

Kai Tietz (2):
      d3dx9core.h: Allow overriding D3DX_SDK_VERSION.
      d3dx9shader.h: Added some missing declarations.

Ken Thomases (8):
      wined3d: Call context_enter() before context_update_window() so it records the proper restore state.
      wined3d: Remove redundant call to context_set_pixel_format() from context_update_window().
      wined3d: Use a separate flag to track if the GL context needs to be made current.
      wined3d: Make context_update_window() just mark the GL context as needing to be set rather than setting it.
      wined3d: Restore the pixel format of the window whose pixel format was actually changed.
      d3d9/tests: Test that Direct3D9 doesn't modify the pixel format of the window it targets. (try 4, resend).
      d3d8/tests: Test that Direct3D8 doesn't modify the pixel format of the window it targets.
      ddraw/tests: Test that DirectDraw doesn't modify the pixel format of the window it targets.

Lauri Kenttä (2):
      readme: Update Norwegian Bokmål translation.
      readme: Update Swedish translation.

Marcus Meissner (1):
      include: Added missing FindExInfoBasic enum.

Matteo Bruni (15):
      d3dx9: Calling CommitChanges with no active pass silently returns.
      d3dx9: Call D3DCompile() for ASCII effects.
      d3dx9: Kill a noisy TRACE.
      d3dx9: Remove Begin/End stub fixmes.
      d3dx9: Don't call CoUninitialize if CoInitializeEx failed.
      d3dx9: Turn D3DXCreateEffectEx FIXME into a TRACE, improve it a bit.
      d3dx9: Always use type->Rows as D3DXPC_MATRIX_ROWS parameters size.
      d3dx9: Improve a number of WARN messages.
      d3dx9: Allow loading DDS volume textures into 2D textures.
      d3dx9/tests: Replace a test giving inconsistent results on Windows.
      d3dx9: Fix an error trace.
      d3dx9: Introduce a handle table for parameters to make lookup faster.
      d3dx9: Support skipping mip levels in D3DXCreateTextureFromFileInMemoryEx.
      d3dx9: Free string data.
      wined3d: Free CS data on CS destruction.

Michael Stefaniuc (8):
      qedit: Use the generic IEnumPin implementation for SampleGrabber.
      avifil32: Basic COM cleanup for IAVIFile from WAVFile.
      avifil32: Unconditionally support IAVIStream in WAVFile.
      avifil32: Support COM aggregation in WAVFile.
      avifil32/tests: Add WAVFile COM tests.
      avifil32: Merge IPersistFile into the WAVFile object.
      avifil32: Merge IAVIStream into the WAVFile object.
      avifil32: Avoid forward declarations of COM methods.

Nikolay Sivov (42):
      oleaut32/tests: Test for VariantClear() on VT_RECORD variant.
      oleaut32: Fix VariantCopy() for VT_RECORD variants.
      oleaut32: Fix SafeArrayPutElement() for FADF_RECORD arrays.
      oleaut32/tests: Test for internal safearray data layout.
      oleaut32: Fix buffer increment step for VT_RECORD case doing SafeArrayCopyData().
      scrrun: Added a IDriveCollection stub.
      scrrun: Added a IEnumVARIANT stub for IDriveCollection.
      include: Use existing DISPID values instead of magic numbers.
      oleaut32: Some tests for IFontEventsDisp change event.
      ntdll: Use case-insensitive matching for typelib flags.
      shell32/tests: Fix some test failures on Win8.
      oleaut32: Propagate return codes properly.
      oleaut32: Fix SafeArrayGetElement() for FADF_RECORD arrays.
      oleaut32: Use better naming to clarify copy direction.
      scrrun: Added IDrive stub and Next() for drive collection.
      scrrun: Implement DriveType property of IDrive.
      fntcache: Added stub Font Cache service.
      programs: Added stub wevtutil tool.
      dmime: COM cleanup of IDirectMusicSegmentState8 interface.
      dmime: COM cleanup of IDirectMusicGraph interface.
      kernel32: Partial implementation for GetCalendarInfoEx().
      oleaut32: Implement DISPID_PICT_RENDER dispid.
      fontsub: Added dll stub.
      msxml3: Unify Invoke()/InvokeEx() tracing format.
      msxml3: Support VT_BSTR|VT_BYREF as reader input.
      msxml3: Fix IVBSAXXMLReader interface definition.
      msxml3: Support more variant types in putProperty().
      msxml3: Added IVBSAXDeclHandler interface for MXWriter.
      msxml3: Added IVBSAXLexicalHandler interface for MXWriter.
      msxml3: Added partial implementation of IVBSAXContentHandler for MXWriter.
      msxml3: Added stub support for ISAXDTDHandler/IVBSAXDTDHandler for MXWriter.
      msxml3: Added stubs for ISAXErrorHandler/IVBSAXErrorHandler for MXWriter.
      msxml3: Fix return values for some methods needed by SAX reader.
      msxml3: Fix IVBSAXAttributes handling of retval BSTRs.
      msxml3: Fix retval BSTR handling for IVBSAXXMLReader.
      msxml3: Fix BSTR retval handling for IVBSAXLocator.
      msxml3: Implement startElement() for writer's IVBSAXContentHandler.
      msxml3: Implement endElement() for writer's IVBSAXContentHandler.
      oleaut32/tests: Some tests for propputref invocation.
      msxml3: Make propputref methods invocable with DISPATCH_PROPERTYPUT.
      po: Update Russian translation.
      user32/tests: Properly maintain clipboard viewers chain.

Piotr Caban (26):
      qcap: Add Avi Mux input pin IMemInputPin::GetAllocatorRequirements implementation.
      qcap: Don't define IMemInputPin_iface in AviMuxIn structure.
      qcap: Add Avi Mux input pin IMemInputPin::GetAllocator.
      qcap: Add Avi Mux input pin IMemInputPin::NotifyAllocator.
      qcap: Add Avi Mux IConfigInterleaving::put_Mode implementation.
      qcap: Add Avi Mux input pin IMemInputPin::ReceiveCanBlock implementation.
      qcap: Fix Avi Mux IConfigInterleaving::put_Mode implementation.
      qcap: Add Avi Mux IConfigInterleaving::put_Interleaving implementation.
      qcap: Add support for FORMAT_VideoInfo pins in AviMuxIn::ReceiveConnection.
      qcap: Add partial Avi Mux IBaseFilter::Run implementation.
      qcap: Add Avi Mux Receive helper implementation.
      qcap: Add Avi Mux IMemInputPin::Receive implementation.
      qcap: Add Avi Mux IBaseFilter::Stop implementation.
      qcap: Fix strf chunk size in AviMuxIn_ReceiveConnection.
      qcap: Fix some memory leaks in Avi Mux.
      qcap: Fix uninitialized variable access in Avi Mux.
      qcap/tests: Add more Avi Mux tests.
      qcap/tests: Add option to save generated avi file.
      user32: Check WS_CHILD style in IsChild function.
      ole32: Change DoDragDrop return value on IDropTarget::Drop call.
      ole32: Merge OLEDD_TrackMouseMove and OLEDD_TrackStateChange functions.
      ole32: Fix DROPEFFECT value in OLEDD_TrackStateChange.
      ole32: Add more DoDragDrop tests.
      ole32/tests: Fix DoDragDrop tests.
      hlink: Improve file protocol handling in HlinkParseDisplayName.
      dinput8: Create a window that will receive events generated by input tests.

Stefan Dösinger (5):
      wined3d: surface_load_ds_location can handle WINED3D_LOCATION_DISCARDED.
      ole32: Make CoCreateInstance hookable for Steam.
      user32: Make SetWindowTextA/W hookable.
      d3d9: Make ResetEx and PresentEx hookable.
      winmm: Make some joystick functions hookable.

Stefan Leichter (3):
      wtsapi32/tests: Add some tests for WTSEnumerateProcessesW.
      fltlib: Add a version resource.
      comdlg32: Update version resource to values reported from XP.

Vincent Povirk (3):
      msi/tests: Add tests for [un]registering progids.
      ole32: Use pstgPriority if specified in StgOpenStorage.
      kernel32: Cache locale info from the registry.

--
Alexandre Julliard
julliard@winehq.org
