The Wine development release 1.7.24 is now available.

What's new in this release (see below for details):
  - Beginning of some DirectWrite classes implementation.
  - Initial wrapper dll for the packet capture library.
  - Some crypto improvements.
  - Various bug fixes.

The source is available from the following locations:

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

   9121  Crash when launching winning eleven 8
  14240  FC_Edit fails to initialize
  14943  CoDeSys 3.2 (Patch2) development environment does not work
  16365  Archlord Episode 3 Client crashes on startup (decrypting files with a RC4 session key derived from MD5 hash fails, only 40 bits are used, salt is dropped)
  17441  Anarchy Online: First run has messed up graphics and pointer
  17678  Anarchy Online fullscreen followes you when you switch desktops
  22177  Standalone version of DivX fails to install
  22896  Multiple applications and games need support for shell32 FOLDERID_LocalAppDataLow (.NET based Unity Engine games, Java JRE 6 in Vista mode)
  24711  AV Voice Changer Software Diamond 7.0 (VcsCore.exe) crashes on startup
  26346  Letters from Nowhere 2 demo: 'play trial' button does not work
  26887  Magicka crashes a few seconds after title screen
  26951  REALTEK 11n USB Wireless LAN Driver installer crashes
  27969  wine explorer crashes on startup
  28312  Assassin's Creed Brotherhood v1.03 needs "Saved Games" folder
  30454  Unknown program crashes on start
  30496  Serif WebPlus X2 and X5 crash on startup in mshtml
  30803  CCleaner 3.19 won't start, err:seh:setup_exception stack overflow
  30945  Jammer 6 demo fails to install without native ie7
  31008  WinUAE "Browse for folder" works incorrectly
  31408  anarchy online crash new zone
  31566  Fallout 3: regression causes block at critical section when radio is enabled
  31599  Serif Photoplus X6 installer fails, reporting 'Invalid command line.' (registry command association for msi package, 'msiexec.exe' must be a fully qualified path)
  31687  DYMO Stamps can't connect to its server
  31846  World of Warcraft: graphical glitches with particle weather effects using D3D9 engine
  32318  Excel 2007 files password-protected in Wine cannot be opened in Windows, and vice versa
  32480  Shogun: Total War Demo crashes at startup
  32758  .NET 3.5 and 4.x apps using Microsoft Enhanced RSA and AES Cryptographic Provider with default WinVer = Windows XP report "PlatformNotSupportedException" (TurboTax 2012, Adicom PNV, GOG.com downloader)
  33805  LEGO Digital Designer 4.3.6 crashes on start
  33867  Uplay shop doesn't let you buy things
  34141  Thunderbird 17.07 Crashes when clicking done in account configuration  window
  34324  QQ2013 SP1 can't install
  35342  Office 2013 full offline install setup crash at startup
  35571  Questrade IQ Divide by Zero error
  36629  .NET Framework 4.0 fails to install
  36716  World Of Tanks black screen
  36833  app aborted because call unimplemented function iphlpapi.dll._PfBindInterfaceToIPAddress@12
  36835  Microsoft OneDrive/SkyDrive needs support for Shell32.dll.SHGetKnownFolderPath with 'KNOWNFOLDERID_Links'
  36888  DDO Wine website not work any more
  36927  SADX Mod Loader crashes due to missing msvcp100 function std::basic_istream::swap()
  36995  Regression: crash in msxml3
  36998  Cube World crashes on unimplemented function msvcp110.dll.?_Xbad_alloc@std@@YAXXZ
  37001  APB Reloaded 1.x (MMORPG) launcher crashes on startup (some CIM data type to OLE variant (VT) mappings are incorrect)
  37005  Serif WebPlus Starter Edition crashes on startup (IPropertyBag2::GetPropertyInfo returns more properties than the caller requested, leading to stack smashing)
  37039  When copying data into memory, shows a dialog message then crashes (but info passes to memory)

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

Changes since 1.7.23:

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

Andreas Mohr (1):
      kernel32: Fix naming/spelling/typo of macro to HasOverlappedIoCompleted().

Andrei Slăvoiu (5):
      wined3d: Make the card selection for Nvidia binary driver use arrays only.
      wined3d: Make the card selection for AMD binary driver use arrays only.
      wined3d: Replace vendor specific callbacks with generic code that uses vendor specific renderer string tables.
      wined3d: Make d3d_level_from_gl_info return an enum instead of a plain int.
      wined3d: Use capabilities from the shader backend or the fragment pipeline to determine the D3D level.

André Hentschel (2):
      wpcap: Initial stub implementation.
      wpcap: Implement pcap_lib_version.

Aric Stewart (2):
      dwrite: Make dwritefactory an allocated object.
      dwrite: Basic implementation for FontCollectionLoader registration.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Austin English (3):
      wine.inf: Use full path to msiexec.
      hid: Add HidD_GetProductString stub.
      wine.inf: Fix quoting for msiexec commands.

Bernhard Reiter (1):
      imagehlp/tests: Add test for BindImageEx.

Bruno Jesus (11):
      rsaenh: Detect AES prototype provider correctly.
      dmime/tests: Fix a crash in Windows 2000.
      winhttp/tests: Add a no-content header test.
      rsaenh/tests: Run the tests in the Base and Strong providers too.
      rsaenh: Use a helper to get the key container.
      rsaenh: The RC2 algorithm from Base provider supports only 40 bit keys.
      rsaenh/tests: Add SHA-256 tests.
      rsaenh/tests: Update some tests.
      rsaenh: Handle the failure to set Base provider effective key length properly.
      rsaenh: Use the remaining hash data as salt if requested.
      rsaenh: A 40 bit key on Enhanced provider will not have salt even if asked for.

David Hedberg (8):
      shell32/tests: Tests for IShellItemGetAttributes.
      shell32: Mask out attributes we didn't ask for in ShellItem::GetAttributes.
      shell32: Return S_OK only if the flags matches the result exactly.
      shell32: Always initialize shellitem to NULL in SHCreateShellItem.
      shell32: Implement SHCreateShellItemFromIDLists.
      shell32: Implement IShellItemArray::GetAttributes.
      comdlg32: Support browsing for folders.
      shell32: Implement IEnumShellItems for IShellItemArray.

Erich Hoover (6):
      strmbase: Fix race condition on InputPin_BeginFlush between csRenderLock and filter.csFilter.
      strmbase: Fix race condition on InputPin_EndFlush between csRenderLock and filter.csFilter.
      strmbase: Fix race condition on InputPin_EndOfStream between csRenderLock and filter.csFilter.
      quartz: Fix race condition on EndOfStream between csRenderLock and filter.csFilter.
      quartz: Fix race condition on EndFlush between csRenderLock and filter.csFilter.
      quartz: Fix race condition between EndOfStream and Pause.

Gerald Pfeifer (4):
      winebuild: Remove unused empty_name_table.
      winhttp: Remove unused constant proxymsg.
      dbghelp: Do not try to ignore the return codes in PEV_ERROR and and PEV_ERROR1.
      scrrun: Add a check for empty string in start_enumeration.

Hao Peng (3):
      iphlpapi: Add PfBindInterfaceToIPAddress function stub.
      iphlpapi: Add PfDeleteInterface function stub.
      iphlpapi: Add PfUnBindInterface function stub.

Henri Verbeet (5):
      wined3d: Add constant buffer support to the GLSL shader backend.
      d3d10core: Implement d3d10_device_CopyResource().
      wined3d: Make the "desc" parameter to wined3d_buffer_create() const.
      wined3d: Get rid of the get_drawable_size() callback in struct wined3d_surface.
      wined3d: Move the "draw_binding" field from struct wined3d_surface to struct wined3d_resource.

Indrek Altpere (1):
      wbemprox: Fix a few OLE variant mappings.

Jacek Caban (2):
      mshtml: Added IHTMLWindow2::navigate implementation.
      mshtml: Added IHTMLElement:scrollIntoView implementation.

Jactry Zeng (1):
      include: Fix wrong type in tom.idl.

Ken Thomases (3):
      ntdll: In find_file_in_dir(), don't test directory entries' short names if the target name isn't a short name.
      winemac: Use new API when available to list all display modes available on Retina Macs.
      winemac: When removing the status item for a systray icon, discard any associated events in the queue.

Michael Müller (2):
      shell32: Create profile directories available in Vista and above.
      windowscodecs: Fix number of returned properties in PropertyBag_GetPropertyInfo.

Nikolay Sivov (8):
      dwrite: Added some layout tests, simplify debug output for text ranges.
      dwrite: Store maximum width/height for text layout.
      dwrite/tests: Added some tests for inline object and ranges handling.
      msxml3/saxreader: Fix attributes array growing size.
      include: Added IDWriteLocalFontFileLoader.
      dwrite: Implement Resize() for bitmap render target.
      dwrite: Added GetCurrentTransform() for a render target.
      dwrite/tests: Some tests for drawing sequence for a layout.

Piotr Caban (8):
      msvcp100: Add ios_base::swap implementation.
      msvcp100: Add basic_ios::swap implementation.
      msvcp100: Add basic_istream::swap implementation.
      msvcp100: Add basic_ostream::swap implementaiton.
      msvcp100: Add basic_iostream::swap implementation.
      msvcp100: Add basic_streambuf::swap implementation.
      msvcrt: Only check for flag presence in isatty function.
      msvcp110: Add _Xbad_alloc implementation.

Shuai Meng (4):
      vbscript: Implemented ScriptEngine.
      vbscript: Inplemented ScriptEngineBuildVersion.
      vbscript: Implemented ScriptEngineMajorVersion.
      vbscript: Implemented ScriptEngineMinorVersion.

Stefan Dösinger (1):
      user32: Make GetRegisteredRawInputDevices hotpatchable.

Thomas Faber (10):
      amstream: Destroy BaseFilter after MediaStreamFilterImpl child class.
      quartz: Avoid side-effects in asserts.
      quartz/tests: Fix memory leaks.
      dsound: Do not call CoUninitialize if CoInitialize failed.
      qcap: Reference module only on successful object creation.
      strmbase: Separate BasePin destructors from Release.
      qcap: Destroy BaseOutputPin in VfwPin_Release.
      quartz: Destroy BaseOutputPin in FileAsyncReaderPin_Release.
      quartz: Fix IEnumFiltersImpl memory leak.
      quartz: Destroy BaseRenderer in NullRendererInner_Release.

Zhenbo Li (2):
      mshtml/tests: Better output when an exception is caught.
      mshtml: Added IHTMLStyle:: textTransform property implementation.

--
Alexandre Julliard
julliard@winehq.org
