Wednesday, April 24, 2019

PuTTY for Mac and Windows sale

Were having a 50% off sale on PuTTY for Mac and Windows until April 30th 2019
Just use coupon code ( DPF50 ) at checkout.

We are also nearing our PuTTY 10.0.0 release with many new features and bug fixes. If you need PuTTY on MacOS or Microsoft Windows this is a good time to make your purchase and save 50% off the normal retail price.

Wednesday, April 3, 2019

CodeWeavers has Released CrossOver 18.5.0 for Linux and MacOS

I am very pleased to announce that CodeWeavers has just released CrossOver 18.5.0 for both macOS and Linux.

CrossOver 18.5 now supports OneNote 2016 on Linux.

Change Log For CrossOver Mac and Linux :

18.5.0 CrossOver - March 21, 2019
  • Core Technology Improvements:
    • CrossOver 18.5 includes an update to Wine 4.0.
    • Reimplementation of XAudio2 using the FAudio library.
  • Linux:
    • Preliminary support for OneNote 2016.
    • Restored support for the latest release of Office 365.
  • Bug Fixes:
    • Fixed a bug disrupting the activation status of Office 2010 bottles upgraded from CrossOver 17.x and earlier.
    • Fixed a bug that caused Office 2010 to attempt and fail configuration on every launch.
    • Fixed an audio regression that prevented sound from working for some game titles.

Putty for Mac
Putty for Mac

Monday, April 1, 2019

How Proton helped improve Wine 4.2

On Tuesday (March 26, 2019), Valve released Proton 4.2, a new update to their Steam Play compatibility layer based on Wine 4.2. The previous major version of Proton was based on Wine 3.16.

As with CodeWeavers's own projects, the strong preference for work going into Proton is to also get the changes into upstream Wine. There are many benefits to this. First, all Wine users will benefit from these fixes, whether they are end users of Wine itself, CrossOver users, or users of any other Wine fork. There are also benefits for the maintainers of Proton. For example, upstreaming patches helps prevent regressions, thanks to Wine's extensive test suite; it lowers the maintenance burden, as there are fewer changes to move between Wine versions; it ensures code quality, since patches to Wine are reviewed by the Wine community; and it widens the pool of users to test, since Wine is used in many, many places other than Proton.

Proton 3.16-8 has 380 commits on top of Wine 3.16. After rebasing onto Wine 4.2, there are 214 commits. That means that 166 patches from the 3.16 branch have either been upstreamed, or are otherwise no longer needed going forward. In addition, a lot of work we have done for Wine 4.2 never got pulled back into Proton 3.16.

Let's take a look at how upstream Wine has improved thanks to Valve's sponsored work on Wine. Below is a list of changes to upstream Wine that were made in order to improve games running in Proton.

Full Article

Friday, March 29, 2019

Wine development release 4.5 is now available for Linux FreeBSD and macOS

Wine development release 4.5 is now available for Linux FreeBSD and macOS

The Wine development release 4.5 is now available.

What's new in this release:
  • Support for Vulkan 1.1.
  • Better support for kernel objects in device drivers.
  • Still more Media Foundation APIs implemented.
  • Support for SVG elements in MSHTML.
  • Fixes for case conversion troubles in Turkish locale.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

Bugs fixed in 4.5 (total 30):

  19098  Regedit randomly crashes when deleting registry keys
  23455  FileAlyzer, Affinity-installer- can't load PE images (needs imagehlp.ImageLoad and imagehlp.ImageUnload implementation)
  26445  URLDownloadToFileW does not support FTP URLs
  38087  Settlers III: mouse not working on start screen and menu (after fixing raw input bug 33479)
  38801  Settlers Heritage of Kings crashes when loading a map
  41591  Solidworks 2016 installer needs ADVAPI32.dll.RegLoadAppKeyW
  45322  League Of Legends installer on tr_TR.UTF-8: unknown color "systemhighlight"
  45429  Inno Setup v5.x based game-installers using 'wintb' plugin fail with: 'Runtime error 229 at
' (Win7+ ITaskbarList3 ThumbBar/Thumbnail semi-stubs needed)
  45497  Biamp Systems Nexia v3.3: Button labels missing in DSP controls
  45998  64-bit FACEIT Anti-cheat client claims "Your system is out of date, you are missing important Windows updates!" (needs 'wintrust.CryptCATAdminAcquireContext2' stub)
  46115  Cursor in unity games moving down and to the right one pixel on any mouse interaction
  46222  Star Citizen hang on splash screen
  46643  Belarc Advisor Computer Inventory 9.0 crashes on unimplemented function advapi32.dll.AuditQuerySystemPolicy with WinVer >= Windows Vista
  46807  The Sims hangs when opening menus
  46812  PS4 Remote Play installer 2.8.x fails, claims 'You need the Media Feature Pack' (MsiGetDatabaseState is called from a custom action)
  46830  Gaea 1.0.x installer stops: err:msi:ITERATE_Actions Execution halted, action L"WixSchedInternetShortcuts" returned 1603 (MsiViewGetErrorA/W() needs to be RPC-compatible)
  46833  Multiple application installers fail with err:msi:ITERATE_Actions Execution halted, action L"" returned 1603 (iTunes, Dameware Mini Remote Control 10.x)
  46845  Freelancer: character glitches in cutscenes after loading a saved game
  46846  msi x64 installer does not display splash and other texts like a license agreement
  46848  PTC Mathcad Prime 3.0 Web installer crashes on unimplemented function api-ms-win-crt-convert-l1-1-0.dll.wctrans
  46851  Can't input Japanese text after updating to 4.4.
  46881  Power World Simulator installer needs unimplemented function msi.dll.MsiSourceListForceResolutionW
  46885  Multiple applications fail to install with wine-4.4-114-g15f852015a+, reporting err:msi:ITERATE_Actions Execution halted, action L"BindImage" returned 1615  (MS Office 2007, AstroToaster 2.x. MS .NET Framework 4.x)
  46892  redefinition of typedef ‘UUID’
  46894  SIMATIC WinCC V15.1 Runtime installer (.NET 4.0) fails in CoreLib::GetPhysicalMemoryAmountWmi() (missing 'DeviceLocator' property of 'Win32_PhysicalMemory' WMI class)
  46895  SIMATIC WinCC V15.1 Runtime installer (.NET 4.0) fails due to missing 'OperatingSystemSKU' property of 'Win32_OperatingSystem' WMI class
  46906  SIMATIC WinCC V15.1 Runtime installer: SeCon tool 'SeCon_Win32.exe' crashes due to hnetcfg 'INetFwRules::get__NewEnum' not initializing out parameter
  46907  msi crashes in RemoveFiles action for a broken msi
  46908  Support msvcp mtx_init 'mtx_try' flag (0x2) to create a mutex object that supports test and return
  46909  Missing (black) textures in Black & White

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Friday, March 15, 2019

Wine development release 4.4 is now available for Linux FreeBSD and macOS

Wine development release 4.4 is now available for Linux FreeBSD and macOS

The Wine development release 4.4 is now available.

What's new in this release:
  • New MSIDB tool for manipulating MSI databases.
  • Support for custom draw buttons in common controls.
  • Many more Media Foundation APIs implemented.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

Bugs fixed in 4.4 (total 50):

  10407  StarForce v3 kernel driver service 'sfhlp02' crashes on unimplemented function ntoskrnl.exe.IoCreateSynchronizationEvent
  10531  Windows Calculator: Color in buttons missing
  13087  Hard Truck Apocalypse fails to load keyboard layout
  17005  Chicken Tournament: Rendering issues
  23175  Zak McKracken - Between Time and Space fails to play back intro video (ICM_DECOMPRESS_GET_FORMAT problems with Xvid)
  25180  Clonk Endeavour's intro video is not rendered correctly (iccvid does not support non-multiple of 4 video width)
  28240  Mipony 1.5.x (.NET 2.0 app): Embedded web browser shown in too small window
  28847  LabChart Reader 7.x crashes due to missing wmvcore 'IWMProfileManager2', CLSID '{7a924e51-73c1-494d-8019-23d37ed9b89a}'
  30548  MediaOne Plus 2.0 PhotoImpact (Ulead PhotoImpact X3) installer runs "regedit" with unsupported "/c" switch
  33506  Microsoft Expression Design 4 (Free Version) crashes when quickly populating main menu items (dropdown sub-menu drawing)
  35251  Skype 4 MSI installer fails to start Skype.exe when finishing installation in Vista mode (TaskService_Connect is a stub)
  35841  R.U.S.E. Demo need wmvcore.dll.WMCreateSyncReader implementation
  35986  Multiple DRM-enabled apps and games crash when being relay traced (game overlay renderer enabled Steam games)
  37325  Rhapsody 4.0 auto setup for DRM crashes on unimplemented function wmvcore.dll.WMCreateBackupRestorerPrivate
  37327  Rhapsody 4.0 crashes on unimplemented function 'wmvcore.dll.WMCreateSyncReaderPriv' when playing a track
  37585  64-bit Chromium browser engine with native API sandboxing/hooking scheme fails if 64-bit is not mapped at desired fixed address (Google Chrome 38+ crashes with WinVer <= Vista)
  37871 downloader (.NET 3.5 app) wants wininet.GetUrlCacheConfigInfoA/W implementation
  37972  Multiple application installers fail due to VBScript parser failure in 'Get' method calls (UC Receptionist Console 14 SP6, PostgreSQL 9.3, Symantec VIP Access)
  38791  In server/queue.c, clipping cursor to empty rectangle is off by one pixel (affects "The Long Dark")
  38943  Warhammer 40k: Dawn of War GOTY (Steam) crashes while loading to the menu with Wine-Mono 4.7.5 or earlier
  39606  Infinite loop in StackWalk64
  41226  Sound effects play at incorrect volume in Halo PC and Halo Custom Edition
  42939  NOX App Player v3.8.x (Android Emulator) fails in post-installation step (VirtualBox COM Server raises assert: failed to set self TLS. lasterr=87 thread 'CGMgr')
  42982  Bayonetta can't save settings
  43071  Bayonetta can't read its "system_data" config file
  43851  Monkey Island Special Edition Collection: Installer crashes on the first run
  44423  Office 2007/2010 32bit - links not working
  44793  Epic Games Launcher 7.x crashes on startup (relies on native Windows behaviour: 'shcore.dll' loaded by 'shlwapi.dll')
  44800  FL Studio: Attempting to minimize FL Studio shows a small label instead
  45577  Skyrim tries to install MS VC Redist Package each launch
  45925  WPF application (.NET 4.5) printing fail: crash in unimplemented function prntvpt.dll.PTOpenProviderEx
  45927  Tom Clancy's TheDivision.exe terminates itself a few seconds after launch
  46305  Skyrim, Fallout 3, and Fallout: New Vegas all crash upon clicking 'Play'
  46371  FFXI + Ashita random crash ingame
  46571  FPS Monitor doesn't work (needs gdi32.D3DKMTCloseAdapter stub)
  46579  F.E.A.R. 2: Project Origin screen is completely light grey while playing intro movie
  46680  redefinition of typedef ‘fnprintf’
  46706  Eventide H9 Control crashes on unimplemented function bthprops.cpl.BluetoothFindDeviceClose
  46712  Atelier Firis config tool crashes with "Unhandled page fault on execute access"
  46721  Two quotes together (in outer quotes) not parsed correctly in argv
  46731  64-bit dotnet20 installer freezes in 4.2
  46754  Multiple application installers fail in VBscripts due to IWshEnvironment::Item property returning BSTR with embedded null terminator (PostgreSQL 9.3)
  46761  BigNox VM VirtualBox Support Driver 'YSDrv.sys' (part of NoxPlayer 6.x) crashes on unimplemented function ntoskrnl.exe.MmBuildMdlForNonPagedPool
  46762  BigNox VM VirtualBox Support Driver 'YSDrv.sys' (part of NoxPlayer 6.x) crashes on unimplemented function ntoskrnl.exe.ExSetTimerResolution
  46772  Creo Elements/Direct Modeling Express 6.0 installer fails with VBScript parser error: parser_lex '_' not followed by newline
  46783  Metro Exodus crash on start [DXGI]
  46792  Europa Universalis III crashes after start
  46798  Multiple Microsoft applications need support for Antimalware Scan Interface (AMSI) 'AMSI.dll'
  46811  Inquisitor: black screen after start in fullscreen mode
  46835  Wine fails to compile with vkd3d 1.0

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Friday, March 1, 2019

Wine development release 4.3 is now available for Linux FreeBSD and macOS

Wine development release 4.3 is now available for Linux FreeBSD and macOS

The Wine development release 4.3 is now available.

What's new in this release:
  • Re-implementation of XAudio2 using the FAudio library.
  • Mono engine updated to the latest upstream.
  • More modern handling of iconic windows.
  • Improved handling of kernel objects.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

Bugs fixed in 4.3 (total 45):

   1719  MDI child window minimize problem in Delphi VCL applications
   7287  Redundant "tabs" appear with tabbed MDI (test with LTSpice)
   8226  DlgDirListComboBox does not fail properly on bad path spec argument
  15703  LEGO Star Wars controller options
  18496  BREW simulator always shows a black display
  19777  Ad Astra game runs very slow
  21023  SetupDiOpenDevRegKey() returns wrong HKEY
  26653  Multiple VB6 applications need oleaut32 VarRound to support VT_DECIMAL
  31954  Second Sight hangs with a black screen after the intro videos
  32374  List box with LBS_NODATA set, has very low performance, depending on items count.
  35516  Microworlds EX hangs when clicking toolbar button
  37705  Heroes of Might and Magic VI Shades of Darkness Textures Fail to Display in Most Campaign Maps
  38488  Wrong traces in functions *_invalidate_location
  39932  bat-script with quotes cann't be called using CreateProcess
  41670  BattlEye launcher stuck at 'Starting BattlEye Service...' (PUBG, Planetside2, H1Z1: King of the Kill, Tibia 11)
  43395  Wine intermittently crashes after any program terminates
  43659  Jurassic Park: Operation Genesis crashes inside winegstreamer (disabling winegstreamer is a workaround)
  44300  Windows Media Player 7.1 fails to play media due to unimplemented function wmvcore.dll.WMCheckURLExtension
  45149  Provide mscoree.dll.CorIsLatestSvc stub with diagnostic message to tell native MS .NET CLR bootstrapper must be used (dll override)
  45631  League of Legends client crashes when joining a lobby with other players
  45632  Garena client v2.0.x crashes on startup ('ntdll.NtQueryVirtualMemory' needs to validate 'MemoryInformationLength' before writing to buffer)
  45841  Battleye's BEDaisy.sys requires that PsThreadType and PsProcessType are defined
  46105  TopoEdit crashes with unimplemented function mf.dll.MFCreateSequencerSource
  46245  V-sync setting does not work (Direct3D 12)
  46318  vbscript doesn't parse if identifier is also keyword token
  46319  32-bit IL-only executable launched as 32-bit subprocess on Wine and 64-bit subprocess on Windows
  46442  FormatCurrency(9) returns .9.00 (period in front)
  46481  strftime has a buffer overflow
  46493  Functions ilogb* are not implemented
  46583  LINE latest version doesn't work
  46623  Game controller behaves incorrectly
  46638  dotnet40 no longer installs using winetricks
  46639  LoadLibraryShim fails in wow64
  46654  dotnet35sp1 fails to install with winetricks
  46678  Width of latin characters is wrong with some fonts.
  46681  TopoEdit crashes with unimplemented function mf.dll.MFCreateTopologyNode
  46691  comctl32/tests/propsheet.c shows uninitalized memory use
  46708  Photoline crashed right after start, no problem with wine 3.0.4
  46717  TopoEdit crashes with unimplemented function mf.dll.MFCreateTopoLoader
  46719  iTunes crashes during the installation
  46724  Call of Juarez: Bound in Blood crashes on startup when using FAudio
  46727  Alekhine's Gun crashes on startup when using FAudio
  46728  dotnet35sp1 fails to complete with install via winetricks
  46729  Wine directx not detecting Intel HD Graphics 620 (Rev 02) chipset
  46732  BleachBit-2.0 crashes at startup

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Friday, February 15, 2019

Wine development release 4.2 is now available for Linux FreeBSD and macOS

Wine development release 4.2 is now available for Linux FreeBSD and macOS

The Wine development release 4.2 is now available.

What's new in this release:
  • Unicode string normalization support.
  • Support for ECC cryptographic keys.
  • Support for mixing 32/64-bit dlls in the load path.
  • Futex-based implementations for more synchronization primitives.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

Bugs fixed in 4.2 (total 60):

  12453  Bad performance in Source based games
  17913  Port Royale: sea is black
  19748  Multiple games complain about checking occlusion query results from the wrong thread (Metro 2033, Unreal Tournament 3, Counter Strike: Source, Metro 2033, Call of Duty 4, Left 4 Dead, Left 4 Dead 2, Final Fantasy XIV, Half-Life 2)
  20083  SIV (System Information Viewer) v4.00 SIVDRIVER crashes to due invalid PIO_STACK_LOCATION->FileObject passed into IRP_MJ_DEVICE_CONTROL dispatch routine
  21101  Can't use SHIFT key with onboard visual keyboard and wine application
  23863  The Bard's Tale (2005): unplayable due to almost completely black screen
  28167  EA Sports FIFA 11 crashes on startup
  35096  Kerning misbehavior for Hebrew text in Office 2010
  35889  wine1.6 display fuzzy chinese ttf fonts, but dialog fonts display normal
  36201  valgrind shows a definite leak under crypt32/tests/store.c
  36261  valgrind shows a use after free in d3d_device_inner_Release() ddraw/tests/ddraw{4,7}.c
  36267  valgrind shows an invalid read in ddraw/tests/ddraw4.c
  36340  valgrind shows several warnings in ddraw/tests/ddraw2.c
  36343  valgrind shows some leaks in ddraw/tests/ddraw4.c
  36348  valgrind shows a couple leaks in d3d9/tests/d3d9ex.c
  36349  valgrind shows a few leaks in d3d9/tests/stateblock.c
  36380  valgrind shows a possible leak in in ddraw/tests/ddraw1.c
  36381  valgrind shows a couple possible leaks in in ddraw/tests/ddraw2.c
  36382  valgrind shows a possible leak in in ddraw/tests/ddraw7.c
  36620  valgrind shows a few invalid reads in ddraw/tests/ddraw1.c
  36621  valgrind shows several definite leaks in ddraw/tests/ddraw1.c
  36623  valgrind shows some leaks in ddraw/tests/ddraw7.c
  36631  valgrind shows a definite leak in in ddraw/tests/ddraw2.c
  36658  valgrind shows an invalid read in ddraw/tests/d3d.c
  36660  ddraw/tests/d3d.c CapsTest crashes under valgrind
  36689  ddrawex/tests/surface.c crashes under valgrind/nvidia
  37639  Multiple applications crash on unimplemented function vssapi.dll.?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z (AlphaShadow v1.2, EMC Retrospect 7)
  38021  64-bit Planetside 2 fails to load bundled xinput1_3.dll (loader must check architecture before trying to load module)
  38138  Avencast: Rise of the Mage: invisible doors
  38685  valgrind shows an invalid read in d3d9/tests/d3d9ex.c
  39080  The Settlers: Rise of an Empire: world geometry broken
  40036  Shadows of Destiny Crash After Begins
  41168  Test Drive Unlimited Crash before entry main menu
  42573  Several Flickering Senran Kagura Shinovi Versus
  42704  1Password 6.4.377 needs function bcrypt.dll.BCryptDeriveKeyPBKDF2
  42734  NormalizeString (Unicode normalization) is not implemented
  42911  Bayonetta: launches but screen stays black
  44150  Alien vs Predator: Crash in DX11 Mode
  45312  AC Syndicate needs bcrypt algorythm/functions (ECDH_P256, BCryptGenerateKeyPair, BCryptFinalizeKeyPair)
  45473  Rogue Squadron 3D crashes on startup
  45524  Add a futex-based implementation of condition variables
  45570  League of Legends 8.12+ fails to start a game (anticheat engine, incorrect implementation of LdrInitializeThunk)
  45820  Symantec Eraser Control Driver 'eeCtrl64.sys' (Norton 360) crashes on unimplemented function ntoskrnl.exe.ExpInterlocked{Push,Pop}EntrySList
  46047  Multiple applications want Windows 8+ futex-like operations kernelbase.dll.WaitOnAddress, kernelbase.dll.WakeByAddress{All,Single} (VLC)
  46088  BETest tool from Windows 10 SDK (10.0.17763.x) crashes on unimplemented function vssapi.dll.CreateVssBackupComponentsInternal
  46127  aria2 1.34 fails to connect, reports 'WinTLS: Channel setup failed. Schannel provider did not fulfill requested flags. Excepted: 33180 Actual: 33052'
  46208  Elite Dangerous is unstable in wine-devel
  46252  StarCitizen has bad performance
  46300  Yousician: unimplemented function mfplat.dll.MFGetSystemTime
  46341  kernel32/tests/pipe.c shows uninitialized memory use in test_overlapped_transport()
  46387  ReactOS/Windows XP TASKMGR: Column headers don't scroll when scrolling horizontally (multiple listview or header control)
  46516  AfterEffects CS16 headless renderer crashes due to missing crypt32 functions CryptHashCertificate2 and CryptImportPublicKeyInfoEx2
  46565  Disney's Chicken Little displays text upside down
  46581  HeidiSQL generates OLE error when executing custom queries against MSSQL server.
  46602  3D Custom Girl fails to render characters
  46611  Readiris 17 fails to load when d2d1 is enabled: fixme:d2d:d2d_factory_CreateGeometryGroup iface
  46617  Far Cry v1.40 locks up on the loading screen
  46618  Far Cry v1.40 locks up when changing screen resolution or anti-aliasing level
  46631  winecfg fails to load
  46644  Ichitarou crashes when creating a new document (needs msvcrt._ismbcl1)

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Monday, February 4, 2019

Wine stable release 4.1 is now available for Linux FreeBSD Android and macOS

Wine stable release 4.1 is now available for Linux FreeBSD Android and macOS

What's new in this release:
  • Support for NT kernel spinlocks.
  • Better glyph positioning in DirectWrite.
  • More accurate reporting of CPU information.
  • Context handle fixes in the IDL compiler.
  • Preloader fixes on macOS.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

Bugs fixed in 4.1 (total 30):

  11070  importpfx fails, needs PFXImportCertStore implementation
  33456  D3DXMatrixTransformation: Broken calculation when scalingrotation and scaling is used
  38274  White water in Heroes VI (DXTn volume textures)
  38558  cmd.exe bundled with Windows XP messed up when using FOR /F
  39663  GOG Galaxy client 1.x hangs or reports 'Something went wrong during DeelevateStrategy'  error in Win7 mode (GOG Galaxy service needs wtsapi32.WTSQueryUserToken implementation)
  39890  Orcish Inn fails to start with exception System.NotImplementedException
  40441  Chicken tournament crashes when loading texture
  42491  wine builds are not reproducible (widl needs initializization of datatype2 in add_typedef_typeinfo)
  43252  IcmpSendEcho doesn't work with a ReplySize<56 br="">  43322  Regression in Test Drive Unlimited 2, visual artifacts
  44469  Multiple apps using Windows 10 v1507+ UCRT crash due to multiple missing api-ms-win-crt-private-l1-1-0.dll._o__xxx stubs/forwards (Win10 DISM pkgmgr.exe, MS DirectX Shader Compiler)
  44941  Bioshock Remastered doesn't start in windowed mode
  45326  Multiple 64-bit kernel drivers crash on unimplemented function ntoskrnl.exe.__C_specific_handler (NoxPlayer 6.x, MTA:SA 1.5.x)
  45447  [World of Tanks] Borderless window broken since 1.0.2
  46137  NI Kontakt 5 crashes on unimplemented function msvcp140.dll.?_Getcat@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z
  46298  Middle-earth: Shadow of War (steam appid 356190) crashes on launch
  46303  Warcraft 3: Reign of Chaos (Czech language) can't be installed from CD
  46453  The Testament of Sherlock Holmes crashes while loading level with builtin d3dx9_43
  46465  Visual Studio 2015 crashes on unimplemented function msvcp140.dll._Equivalent
  46469  Only the first XInput controller is detected in wine 4.0
  46479  64-bit mono crashes in RtlAddGrowableFunctionTable
  46482  Gas Guzzlers Combat Carnage crashes when changing screen resolution
  46485  PBM_STEPIT crashes with division by zero when MinVal == MaxVal == 0
  46488  Diablo 2 LoD: Direct3D regression: Unhandled exception: Access_violation (c0000005)
  46489  ClrMamePro crashes on update attempt
  46494  64bit WinMerge crash after clicking "About WinMerge"
  46499  Multiple games crash in GetRawInputData when exiting(House Party, Murderous Pursuits, ICEY)
  46520  Kindred Spirits on the Roof crashes
  46536  Empire Earth (GOG version) main menu rendering is broken
  46569  ToDoList 7.1 : fails to launch after WINE upgrade to 4.0 version

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Thursday, January 24, 2019

PuTTY++ 9.2 has been released

WinOnMacs released Putty++ 9.2 for Microsoft Windows today.

About PuTTY++

PuTTY++ is a telnet and SSH client for Windows and UNIX. It supports several network protocols, including SCP, SSH, Telnet, rlogin, and raw socket connection.

The cost of Putty 9.2 is only $19.95. Anyone who has purchased Putty in the past three months is entitled to a free upgrade. Putty comes with three months of upgrades and of course a 14-day money back guarantee.

Supported Protocols:
  • Telnet
  • FTP
  • SFTP
  • SSH
  • SCP
Version 9.2 New Features:
  • Minor bug fixes
We now use FastSpring as our preferred storefront, you can pay with Credit / Debit Cards, PayPal, Amazon payments, Wire Transfer etc. etc. This store is very secure, simple and fast.

Tel-FTP 2.2 for macOS High Sierra and Mojave has been released

WinOnMacs released Telnet FTP 2.2.0 for MacOS High Sierra and Mojave today.

About FTP

The File Transfer Protocol (FTP) is a standard network protocol used for the transfer of computer files between a client and server on a computer network.

FTP is built on a client-server model architecture and uses separate control and data connections between the client and the server. FTP users may authenticate themselves with a clear-text sign-in protocol, normally in the form of a username and password, but can connect anonymously if the server is configured to allow it.

About Telnet

Telnet is a protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communication facility using a virtual terminal connection. User data is interspersed in-band with Telnet control information in an 8-bit byte oriented data connection over the Transmission Control Protocol (TCP).

Supported Protocols :
  • Telnet
  • FTP
About WinOnMacs :

There is a multitude of software developed only for the Windows operating system and even when software vendors port their applications to another platform, generally it lacks features that the Windows version contains. The only solution these developers face is to have access to both systems for testing which leads to increased infrastructure demands, and wasted project resources. Our goal is to have native ports of essential Windows tools and applications made available for MacOS users.

Version 2.2.0 New Features :
  • minor bug fixes
We now use FastSpring as our preferred storefront, you can pay with Credit / Debit Cards, PayPal, Amazon payments, Wire Transfer etc. etc. This store is very secure, simple and fast.

Wine stable release 4.0 is now available for Linux FreeBSD Android and macOS

Wine stable release 4.0 is now available for Linux FreeBSD Android and macOS

The Wine team is proud to announce that the stable release Wine 4.0 is now available.
This release represents a year of development effort and over 6,000 individual changes. It contains a large number of improvements that are listed in the release notes below. The main highlights are:
  • Vulkan support.
  • Direct3D 12 support.
  • Game controllers support.
  • High-DPI support on Android.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

What's new in Wine 4.0

*** Direct3D

- Initial support for Direct3D 12 is implemented. Direct3D 12 support
  requires the vkd3d library, and a Vulkan-capable graphics card.

- The Multi-Threaded Command Stream feature is enabled by default.

- OpenGL core contexts are always used by default when available. In
  the previous release, these were already used by default for
  Direct3D 10 and 11 applications on AMD and Intel graphics
  cards. That has been extended to all graphics cards, and all
  versions of Direct3D before 12.

- Among others, the following notable Direct3D 10 and 11 features are
  - Multi-sample textures and views, as well as multi-sample resolves.
  - Per-sample fragment shading.
  - Support for 1D textures.
  - Draws without render target views or depth/stencil views.
  - Multiple viewports and scissor rectangles per draw.
  - Depth clipping control.
  - Depth bias clamping.
  - Stream output without geometry shaders.
  - Several more capability queries.
  - Several more resource formats.

- The "depth bias clamping" feature mentioned above requires the
  ARB_polygon_offset_clamp/EXT_polygon_offset_clamp OpenGL
  extension. All Direct3D 10+ capable hardware should be able to
  support that extension, but it has come to our attention that some
  NVIDIA "Legacy Drivers" do not. We encourage affected users to
  explore whether the Free Software Nouveau drivers meet their needs.

- Several Direct3D 11 interfaces have been updated to version 11.2,
  and several DXGI interfaces have been update to version 1.6. This
  allows applications requiring those newer interfaces to start

- The first steps towards more fine-grained locking in the Direct3D
  implementation have been taken. This will be an ongoing effort to
  take better advantage of modern high core count CPUs.

- Support for using the correct swap interval is implemented, for both
  DXGI and DirectDraw applications.

- Application-configurable frame latency is implemented for Direct3D
  9Ex and DXGI applications.

- S3TC-compressed 3D textures are supported. S3TC-compressed 2D
  textures were already supported, provided the OpenGL drivers
  supported them.

- When the ARB_query_buffer_object OpenGL extension is available,
  query results can be polled with lower latency, resulting in a
  modest performance improvement in specific cases.

- Validation of Direct3D 8 and 9 resource pool and usage restrictions,
  as well as blit restrictions, has been improved.

- The Direct3D graphics card database recognizes more graphics cards.

- New HKEY_CURRENT_USER\Software\Wine\Direct3D registry keys:
  - "MultisampleTextures" (REG_DWORD)
    Enable (0x1, default) or disable (0x0) support for multi-sample
  - "Renderer" (REG_SZ)
    The backend API to target. Possible values are "gl" (default) for
    OpenGL and "gdi" for GDI.

- Deprecated HKEY_CURRENT_USER\Software\Wine\Direct3D registry key:
  - "DirectDrawRenderer"
    This has been superseded by the "Renderer" setting above.

- Removed HKEY_CURRENT_USER\Software\Wine\Direct3D registry key:
  - "StrictDrawOrdering"
    This feature was previously deprecated in favor of the
    multi-threaded command stream feature, and has been completely

*** Graphics

- A complete Vulkan driver is implemented, using the host Vulkan
  libraries under X11, or MoltenVK on macOS.

- A builtin vulkan-1 loader is provided as an alternative to the SDK

- Icons in PNG format are supported, enabling loading high-resolution
  256x256 icons.

- The standard icons include a 256x256 version to take advantage of
  the PNG support.

- Many Direct2D interfaces have been updated to version 1.2.

- New HKEY_CURRENT_USER\Software\Wine\Direct2D registry key:
  - "max_version_factory" (REG_DWORD)
    Limit the interface version of the ID2D1Factory interface to the
    specified version. 0x0 for ID2D1Factory, 0x1 for ID2D1Factory1,
    etc. By default there is no limit.

- Using an ARGB visual as default X11 visual is supported.

- The old 16-bit DIB.DRV driver is implemented using the DIB engine.

- Polygon drawing in the DIB engine is much faster for large polygons.

- A0, A1 and A2 paper sizes are supported for generic printers.

- Arrows are supported in GdiPlus.

*** Kernel

- Support for running DOS binaries under Wine is removed. When
  execution of a DOS binary is requested, an external DOSBox instance
  is launched. This doesn't apply to Win16 binaries, which are still
  supported internally.

- All the CPU control and debug registers can be accessed by kernel
  drivers, including on 64-bit.

- Events, semaphores, mutexes and timers are implemented in kernel
  mode for device drivers.

- The WaitOnAddress synchronization primitives are supported.

- Reported processor information correctly distinguishes logical and
  physical CPU cores to support hyper-threading.

- Detailed BIOS information can be queried on Linux platforms.

- The various debugger APIs support manipulating a 32-bit Wow64
  process from a 64-bit process context.

- Application settings, compatibility information and execution levels
  are recognized in application manifests.

- The various file I/O completion modes are implemented.

- Debug registers are supported on NetBSD.

*** User interface

- The infrastructure for setting DPI awareness and scaling of non
  DPI-aware applications is implemented. However, actual scaling of
  window contents is only supported on Android at this point.
  Scaling is disabled by default and can be enabled by setting the
  "DpiScalingVer" value under HKEY_CURRENT_USER\Control Panel\Desktop.

- Window class redirection is supported, enabling support of Common
  Controls version 6 features for standard USER controls like buttons.

- The standard USER controls Button, Listbox, Combobox, Edit and
  Static support version 6 features, including theming.

- The standard Task Dialog is implemented, including support for
  icons, hyperlinks, progress bars, and various other UI elements.

- Cue banners are supported in version 6 of the Edit control.

*** Desktop integration

- Exporting MIME-type file associations to the native desktop can be
  disabled with a checkbox under the Desktop Integration tab in
  winecfg.  It can be configured programmatically by setting the
  "Enable" value under

- The File Dialog can display file properties like size, times and

- The File Dialog optionally shows the Places toolbar on the left-hand

- The shell folder Public is used instead of AllUsersProfile to follow
  the behavior of recent Windows versions.

- The shell File Browser supports keyboard shortcuts to rename (F2
  key) and delete (Delete key) shell folders.

- Many standard icons are added to the Shell library.

- Shell Autocompletion is supported.

- In desktop mode the taskbar won't be displayed on top of fullscreen

- Additional names are provided for standard cursors to better match
  existing X11 cursor themes.

*** Input devices

- HID game controllers are supported in the XInput and Raw Input APIs.

- An SDL driver is implemented to make SDL game controllers
  available through the HID interface.

*** Internet and networking

- JScript has an EcmaScript compliant mode, which supports a number of
  features not available in legacy mode.

- JavaScript property accessors are supported.

- HTML style object is rewritten to support standard-compliant mode.

- HTML documents respect X-UA-Compatible HTTP header, allowing web
  pages to request specific compatibility mode. The
  HKEY_CURRENT_USER\Software\Wine\MSHTML\CompatMode key may be used to
  override the requested mode.

- MSHTML supports non-HTML elements, allowing limited SVG support.

- A number of new HTML APIs are supported.

- The proxy server can be configured through the Internet Control
  Panel applet.

- Stream I/O is implemented in WebServices.

- The Web Services on Devices API (WSDAPI) is implemented, including
  sending and receiving the various message types.

- More system information is reported through WBEM, including CPU,
  BIOS, video controller, and network adapter properties.

*** Cryptography

- Asymmetric encryption keys, as well as RSA and ECDSA signature
  verification are supported.

- The GCM and ECB encryption chaining modes are supported.

- Optimal Asymmetric Encryption Padding (OAEP) is supported in RSA

- A Kerberos security provider is implemented, supporting Kerberos

- A selection dialog for public key certificates is implemented.

- If available, GnuTLS is used on macOS in preference to the
  CommonCrypto framework.

*** Text and fonts

- Character tables are based on version 11.0.0 of the Unicode Standard.

- The new subpixel font rendering of FreeType >= 2.8.1 is supported.

- When a font face is missing, FontConfig is queried to provide
  possible substitutions.

- The font selected in the console emulator properly scales with the
  display DPI.

- Memory font resources are supported in DirectWrite.

- The builtin Wingdings font contains clock images.

*** Audio

- The Windows Media Player interfaces are implemented and support
  media playback.

- An MP3 decoder is provided as DirectX Media Object.

*** macOS

- The preloader is implemented on macOS, for better address space
  layout compatibility.

- The Command key can be mapped to Ctrl, by setting the
  "LeftCommandIsCtrl" or "RightCommandIsCtrl" values under
  HKEY_CURRENT_USER\Software\Wine\Mac Driver.

- The App Nap energy-saving feature is disabled by default in GUI
  processes. It can be re-enabled by setting the "EnableAppNap" value
  under HKEY_CURRENT_USER\Software\Wine\Mac Driver.

*** Android

- Setting the mouse cursor is supported using the APIs available in
  Android >= 7.

- The new version of the Android graphics buffer allocator API is
  supported, to enable graphics support on Android >= 8.

- Android x86-64 platforms are supported also in 64-bit mode, however
  WoW64 mode is not supported yet in the WineHQ packages.

*** ARM platforms

- Stubless COM proxies are implemented on ARM.

- The Windows calling convention for variadic functions is supported
  on ARM64.

- Exception handling and debugging is better supported on ARM64

- The MinGW toolchain is supported for cross-compilation to ARM64.

*** Built-in applications

- The Ping program provides actual pinging functionality using

- The SchTasks task scheduler program can create and delete tasks.

- The RegEdit registry editor has an improved hex editor for binary

- FOR loops are properly handled in the Command Interpreter.

- The XCopy program supports the /k (keep attributes) option.

*** Internationalization

- The Japanese 106 keyboard is properly supported.

- Translation of timezone names is supported.

- There is a partial translation to the Sinhala language.

- More locales are supported in the Resource Compiler (wrc) and
  Message Compiler (wmc).

*** Development tools

- winedbg supports debugging WoW64 processes.

- In gdb proxy mode, winedbg supports a --port option to specify the
  port used to connect to gdb.

- winegcc uses better heuristics for finding the appropriate lib
  directory for 32/64-bit cross-compiles.

- winegcc supports building native subsystem libraries.

- winegcc also looks for includes in the top-level include directory
  of the installation prefix.

- winebuild supports a -mfpu option for specifying the FPU
  architecture on ARM platforms.

- winedump supports dumping SLTG-format typelibs.

*** IDL compiler

- Application Configuration Files (ACF) are supported.

- Asynchronous interfaces are supported.

- Type and method serialization using encode/decode attributes is

- The defaultvalue() attribute is supported for pointer types.

- Generated files are always specific to the target platform. The
  target can be specified the same way as with the other tools,
  using the cpu-manufacturer-os platform specification.

- Nesting of pointers and arrays works correctly.

- Correct size and alignment are generated for encapsulated unions.

- The __int32 type is supported.

- The -robust command line option is recognized (but ignored) for
  compatibility with the Microsoft IDL compiler.

- Multiple typelibs can be generated into a single resource file.

*** .NET

- 32-bit CIL-only .NET binaries are supported on 64-bit.

- The Mono engine is updated to version 4.7.5 with some upstream Mono


- The typelib marshaller is reimplemented. It generates format strings
  and then uses the standard NDR marshalling routines; this way it
  also works on 64-bit and ARM platforms.

*** Installers

- MSI custom actions run in a separate process, enabling proper
  support for mixed 32/64-bit installers.

- Deferred installation actions are supported in MSI.

*** Build infrastructure

- The test framework supports building helper dlls inside a test, to
  allow testing features that require loading an external library.

- The test framework supports testing Windows kernel drivers.

- It is possible to build and run a WoW64 tree from inside the Wine
  source directory. Previously an out-of-tree build was required.

- A .editorconfig file is provided with the recommended indentation

*** Miscellaneous

- The Task Scheduler service and APIs are implemented.

- The Windows Management Instrumentation service is implemented.

- The OPC Services (Open Packaging Conventions, used for Microsoft
  Office XML files) library is implemented.

- The HKEY_PERFORMANCE_DATA magic registry key is partially

*** New external dependencies

- The Vulkan library is used to implement the Vulkan graphics driver.

- The Vkd3d library is used to implement Direct3D 12 on top of Vulkan.

- The SDL library is used to support game controllers.

- The GSSAPI library is used to implement Kerberos authentication.

Alexandre Julliard
The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!


Tuesday, January 22, 2019

Working on Wine Part 6 Sending Your Work Upstream

Andrew Eikum a CodeWeavers employee and Wine developer is writing a series of post to introduce people to Wine usage and development.

About This Guide

This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it.

The guide will be published throughout January.

  • Part 1 describes what Wine is and provides a short description of various popular forks of Wine.
  • Part 2 describes Wine's build process.
  • Part 3 describes how to use Wine as a developer.
  • Part 4 describes how to debug Wine in general.
  • Part 5 describes Wine's source tree layout and how to edit the source.
  • Part 6 describes how you can send your work upstream.

If you recall from Part 1, there are many forks of Wine. Where your fix belongs can vary depending on what fork of Wine you use, the nature of the bug you fixed, and how you fixed it.


Choosing the right place to send your fix

The ideal place for your fix is in upstream Wine. This is the origin point of all Wine forks. If you fix it in upstream Wine, then all users of Wine will eventually benefit from your work as the various forks pull in changes from upstream.

Sending your fix upstream should be the default choice for your work. If none of the exceptions below apply, or if you're unsure where your fix belongs, work with upstream first.


When upstream is the wrong choice

Your patch may be built on top of an existing patch in wine-staging. In that case, it should be sent to the wine-staging maintainers. If you, or they, think that the patch is ready to be sent upstream, then go ahead and do that instead.

If your patch fixes the issue, but you failed to fix the tests you wrote, or your patch causes some other test failures, it may belong on the bug tracker, or possibly in wine-staging.
If your patch provides a useful feature that upstream Wine is not interested in, it may belong in wine-staging.

If your patch is builds on a feature exclusive to some fork of Wine, like Proton or CrossOver, it may belong in that fork and not upstream. Work with the fork maintainers to determine if it's appropriate for upstreaming.


Upstreaming your fix

Hopefully, your patch is going upstream. Wine's patch submission process is done via email. Your patch should be sent in plain text to You should subscribe to this mailing list to avoid being placed into the moderation queue.

It is recommended to use git send-email to send the email through your mail server. You can also use git format-patch and attach the resulting file in an email client. Be careful that your mail client doesn't wrap, or otherwise corrupt, the attachment as if it were a text document.

Patches that are sent upstream should have your Sign-off. This can be applied by Git automatically with the -s switch during git commit and/or git format-patch. You must use your real name in the Author field when submitting a patch.

If you are submitting a series of patches, try to limit yourself to about four patches per submission. Your patches should be self-contained anyway, so there is no harm in submitting them in several batches. Smaller patch series are easier to review, and keep from cluttering up the mailing list if you have to re-send the series with changes.


Receiving feedback

Wine has a patch status webpage which will track the status of your patch. Your patch will be tested by the Wine Test Bot to ensure any new tests pass on various Windows versions. If the area of Wine changed by your patch has a maintainer, it will be assigned to that person for review. If not, it will be reviewed by the general community, or by the Wine maintainer.

Be patient, it may take a few days for your patches to receive review. Wine reviewers try to reply to every patch within a week, but if you don't get feedback you may send an email to wine-devel asking for a review. Be sure you are subscribed to wine-devel, as some reviews may be sent to that mailing list instead of directly back to the author.

If you received some suggestions, take those suggestions into account and send a new version of the patch. Feedback from Wine reviewers should not be seen as criticism or an attack. Wine is a very complicated piece of software, and it has a high standard of code quality for contributions. Rejections aren't made lightly—everyone wants Wine to improve. Instead, understand that there are reasons for the rejection, apply the suggestions, and resend the patch. If you do not have the time or interest in making the requested changes, consider sending your patch to wine-staging so some other person may take up the patch in the future and try to get it upstream. Or, attach it to a Bugzilla bug so it is not lost.

If your patch is accepted, then congratulations! You have just made Wine better. It's time to move on to the next bug.

Full Article

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Friday, January 18, 2019

Wine development release 4.0-rc7 is now available for Linux FreeBSD and macOS

Wine development release 4.0-rc7 is now available for Linux FreeBSD and macOS

The Wine development release 4.0-rc7 is now available.
What's new in this release:
  • Bug fixes only, we are in code freeze.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

Bugs fixed in 4.0-rc7 (total 13):

  20728  Multiple video players crash when opening audio or video file (MPC-HC v1.6.5, PotPlayer 1.5.x)(FilterGraph_create releases/destroys controlling IUnknown)
  26369  A.R.E.S. Extinction Agenda 1.x (.NET 2.0, XNA 3.1 game) crashes during intro ('quartz' FilterGraph2_Connect must translate HRESULT of failures more correctly)
  29461  BurnPlot (VB6 app) fails to start, complaining with "Run-time error '438'" (WshShell3 'SpecialFolders' collection 'item' method invocation fails)
  34884  Touhou Danmakufu 0.12m's font becomes distorted
  35573  gdi32:fonts test_stock_fonts() fails on Windows 7 in the Japanese and Hebrew locales
  36082  Cannot Read Text In "Question" Boxes On Microsoft Money 2005 Installation
  36084  Microsoft Money 2005 Window Going "Black" After Certain Menu Operations
  43211  NVIDIA GeForce Experience 3.x installer fails due to 'setupapi.SetupDiDeleteDeviceInfo' stub
  44796  Age of Empires II: The Conquerors is broken when CSMT is enabled
  45874  Secret Files 1-2: hardware mouse cursor corrupted
  46212  Multiple games have performance issues (Project CARS, NFS: Hot Pursuit (2010), Gas Guzzlers: Combat Carnage)
  46459  Secret Files 1-2, Ufo: Extraterrestrials: mouse cursor invisible when anti-aliasing and hardware mouse enabled
  46480  Invalid write of size 2 in ntoskrnl.exe/tests/ntoskrnl.c

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Thursday, January 17, 2019

Working on Wine Part 5 Fixing Wine

Andrew Eikum a CodeWeavers employee and Wine developer is writing a series of post to introduce people to Wine usage and development.

About This Guide

This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it.

The guide will be published throughout January.

  • Part 1 describes what Wine is and provides a short description of various popular forks of Wine.
  • Part 2 describes Wine's build process.
  • Part 3 describes how to use Wine as a developer.
  • Part 4 describes how to debug Wine in general.
  • Part 5 describes Wine's source tree layout and how to edit the source.
  • Part 6 describes how you can send your work upstream.

Once you've got some idea of what is causing the problem with your application, it's time to go understand how those APIs are implemented in Wine so you can fix it. You may also need to change Wine's code to debug the application in the first place.


Search for existing bugs

Before digging into the source, it's always useful to first search for existing bugs. You can search Wine's Bugzilla for your application, or for the symptoms you're seeing. As you begin to debug your issue, you may find other search terms to try. If you find a bug, you may find some useful analysis or work has already been done for the issue.

You may also want to look through the Wine Staging patches, especially once you have some idea of what the problem is. You may find someone has already written a patch to fix this problem, but it isn't ready to go upstream yet. You can pick up the torch and try to upstream the work.


Wine source layout

Wine implements the Windows operating system, which is composed of libraries, programs, and kernel functionality. You can find the code for Wine's implementation of each of those components in dlls, programs, and server, respectively. To give you some idea of how different components of Wine work together, some important, core components are listed here.
  • dlls/ntdll – This is where many of the core OS APIs are implemented, like file handling, thread creation and synchronization, timing, and much more. Applications typically use kernel32 instead of ntdll directly.
  • dlls/kernel32 – This is the application-facing interface for the core ntdll APIs mentioned above.
  • dlls/user32 – This is where much of the Windows GUI handling lives, like window creation, message handling, terminal services, and so on.
  • dlls/winex11.drv and dlls/winemac.drv – These libraries map the Windows GUI interfaces, and some other platform-specific functions, to the native platform. user32 calls into these platform drivers.
  • dlls/d3d* and dlls/wined3d – These libraries implement the Direct3D graphics API on top of the platform's OpenGL implementation.
  • programs/services – This program manages background services, both those created by Wine and those provided by installed applications.
  • programs/wineboot – This program kicks off initial prefix creation and other tasks when a prefix is booted.
  • programs/winecfg – This is Wine's configuration program.
  • server – The Wine server implements all cross-process functionality, including message routing, multi-process synchronization primitives, registry handling, and much more. The Wine server is always running if an application is running.
While debug channels are often named after the component in which they are declared (e.g. the dsound channel is declared in dlls/dsound), this is not always the case. You can use git grep to find the relevant debug trace line if it isn't obvious.


Writing tests

In most cases, your work should be driven by tests. Study the documentation for the relevant APIs and write tests first to confirm that Windows's implementation behaves how you expect it to. Then, change Wine's source to pass the tests that you wrote.

Wine has an extensive suite of unit tests. The unit tests comprise well over one million lines of code as of this writing. Any patch you submit must pass all of these tests. Patches should contain more tests proving that the new behavior is correct.

In general, you should focus your work on what a real application actually does. That is, you don't need to implement a bunch of unrelated functionality if the application doesn't actually need it. You should write tests to show how an application is using an API, and how Wine fails to meet its expectations. Then fix Wine to also pass those tests without breaking any existing tests. Any change to Wine has the potential to break other applications. Simply passing tests that you wrote is insufficient reason to change Wine.

You can find the tests for a given component in the tests subdirectory. For example, the tests for dsound live in dlls/dsound/tests. You will find .c files in that directory. The tests start in the START_TEST function and exercise the component being tested. The ok function demonstrates correct behavior. Again, "correct" is defined to mean "like Windows." For example:

    hr = IDirectSound_CreateSoundBuffer(ds, &bufdesc, &primary, NULL);
    ok(hr == S_OK, "CreateSoundBuffer failed: %08x\n", hr);
Here you can see the return value from IDirectSound::CreateSoundBuffer is expected to be S_OK. If it is not S_OK, then the test will fail.

Your tests should demonstrate how your application behaves when interacting with that API. Since you are fixing a bug in Wine's implementation of the API, your tests should demonstrate that Wine will fail without your fix. It isn't necessary, or even recommended, to fully exercise all inputs to an API in the Wine tests. Instead, be thoughtful about how your application might use the API given different inputs from the user, and write tests that reflect those possibilities.

Your tests should be self-contained. They should initialize the necessary functions, test the APIs, and then clean up before continuing. If you need to create files on disk, create them in a temporary location and/or clean them up afterwards. If your test may leave changes to the system, expect to have to clean up after a previous run that crashed, before you run your tests.

After you have written some tests, you need to verify that they pass when run on Windows. To do this locally, run make crosstest, which will use your system's mingw-w64 compiler to build a Windows executable. Run this executable on Windows in the command prompt to verify Windows's behavior. If you do not have a Windows system or VM available, you can upload your patch or test binary to the Wine Test Bot.

Once your tests pass on Windows, run them in Wine with make test. If your tests meaningfully demonstrate a Wine bug, they should fail. Now it is time to fix Wine to pass those tests, as well as all existing tests.


Working with Wine's source

As you develop your fix, there are some rules you should know if you intend to send your work upstream.

For better or worse, Wine does not have a coding style standard and likely never will. The rule is to try to match the surrounding code as best as possible. Especially in older code, you will find a horrible mish-mash of tabs and spaces and brace styles. Do your best to make the code no worse than it was. However, extraneous changes are discouraged as they make review difficult and looking up the source history in Git more cumbersome. If you are changing a line, or even one line in a short code block, it can be re-formatted to be less ugly than it was. But don't reformat an entire function to fit some style, no matter how ugly it is.

Wine only accepts code that adheres to the C89 standard, because some compilers that Wine cares about don't support anything later. The three most common snags here are that your code must declare its variables at the top of the block, you cannot use //-style comments, and function declarations with no arguments must be declared with void arguments:

    int some_function(void);
Resist the urge to gut an entire function or module and re-write it. Small, discrete changes that can be easily understood are the right way to fix Wine. Wine is more than two decades old. There is a lot of hard-won knowledge in much of Wine's source, and throwing out all of that history because it's easier than working in the existing code is not likely to pass review.

Make your changes as obviously correct as possible. Unrelated changes must be placed into their own commits. You should not introduce unused code in an early patch, which begins to be used in a later patch.

Write your patches with the reviewer in mind. It may be unintuitive, but understand that it is more important for your patch to be easy to review than make Wine's code perfect. Reviewer time is one of Wine's most valuable assets. Patches that are easier to review are more likely to pass that review.
Be aware that some tests are "flaky." This is an unfortunate reality of a system as complex as Wine. Ideally all tests would pass on all Windows and Wine environments, but due to bugs, differing platform behavior (especially window managers) and timing differences, they don't. Most modules have well-written tests that should always pass. Some, like the user32 messaging tests, and some audio and graphics tests, fail with some frequency, even on Windows.

Full Article

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Tuesday, January 15, 2019

Working on Wine Part 4 Debugging Wine

Andrew Eikum a CodeWeavers employee and Wine developer is writing a series of post to introduce people to Wine usage and development.

About This Guide

This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it.

The guide will be published throughout January.
  • Part 1 describes what Wine is and provides a short description of various popular forks of Wine.
  • Part 2 describes Wine's build process.
  • Part 3 describes how to use Wine as a developer.
  • Part 4 describes how to debug Wine in general.
  • Part 5 describes Wine's source tree layout and how to edit the source.
  • Part 6 describes how you can send your work upstream.
If you've made it this far, then you should have a functioning Wine build and an application installed that has some problem that you want to fix.

Debugging Wine is unlike debugging an application or even most open source libraries and software. As a Wine developer, you typically don't have access to the source of the application. So you have to be able to guess at what the application is trying to do, and then figure out why Wine is failing to meet its requirements.

Applications are often debugged with debuggers, but this is of limited use with Wine. A lot of time is spent in application code, which isn't useful to us, or in OS library or kernel code, which is also often not useful to us. Wine is just the go-between from application code to library or OS code, so debuggers tend to spend a lot more time out of Wine code than in it. Problems in Wine are also often less about bugs than they are missing features. Debuggers don't help here.



Instead, most Wine debugging is done with printf-debugging. Wine developers have introduced copious logging into the libraries. When you run an application with these debug traces enabled, it will spit out large quantities of information about how the application is using the library.

You enable these logs with the WINEDEBUG environment variable. This variable takes a comma-separated list of debug channels. While it has a more complicated syntax than this, usually you just enable channels entirely. For example, to debug a networking issue, you might start with:

    $ WINEDEBUG=+seh,+winhttp,+winsock,+wininet ~/src/wine.win64/wine Steam.exe
This will emit a ton of output on stderr. Usually you redirect to a file:

    $ rm -f out.txt && WINEDEBUG=+seh,+winhttp,+winsock,+wininet 
~/src/wine.win64/wine Steam.exe &>> out.txt
Notice that the redirect is in append mode, to allow for more readable multi-threaded logging. This requires that we delete any old log file first.

This is the basic Wine debugging loop. Run the application with logging enabled, demonstrate the failure, examine the log, add more logging if necessary, and repeat until you understand the problem.


Debugging channels

Wine trace logs have four "severities," called TRACE, WARN, FIXME, and ERR. TRACE is just general debugging, and is silenced by default. WARN indicates some suspicious, but non-fatal condition and is also silenced by default. FIXME indicates some missing feature of Wine and will be printed by default. ERR indicates a serious problem and will also be printed by default.

Wine lets developers output logs on specific channels. These are declared in the C source files with WINE_DECLARE_DEBUG_CHANNEL and WINE_DEFAULT_DEBUG_CHANNEL. Grepping the C files for DEBUG_CHANNEL works great.

It's not always easy to determine which log channels are useful to trace. If you know what general area your problem is in, you can add channels from the relevant Wine libraries. If you don't have any idea, then a log with just +seh is a decent starting place to dig for fixmes and errs.
There are some special debugging channels.

tid and pid will prepend each log line with the Thread ID and Process ID that outputted the log line. tid is enabled by default in recent Wine.

relay will output every API entry point that the application, or other parts of Wine, make a call to. This is extremely verbose, but can be very valuable, especially if you don't know where the problem lies.

timestamp will prepend every log line with a millisecond-resolution timer. This is great if you can estimate when in the log the problem occurred, or are working with timing-sensitive code like audio.


Working with log files

Most WINEDEBUG logs will grow to hundreds of kB and MB of plaintext. Logs of multiple GB are not uncommon, especially relay logs. Many GUI text editors will not handle files of these sizes very well. An editor like vim is recommended.

You should also get familiar with tools like grep, head, and tail to pare log files down to manageable chunks. In particular, grep -v can get rid of uselessly repetitive log lines.
When encountering a new log, a good first step is to grep for err:, warn:, and fixme:. These can indicate problems. You'll likely get a lot of fixmes and probably some warns. If you're getting messages from areas unrelated to the problem you're examining, you can usually ignore them. For example, fixmes from the d3d channel are probably unrelated to a problem with audio.


Log file techniques

One generally useful technique is to find the problem and then search backwards. For example, bad pointer dereferences are a common failure. These can be found in a +seh log by searching for c0000005. Once you've found the failure in the log, you can start going backwards and if you're lucky, find some fixme or err indicating a missing feature. Or in a relay log, you might find some API that is returning a failure, like a bad HRESULT instead of S_OK.

If you don't have an obvious crash point, you can also try to find where in the log things start to go bad. For example, most applications follow a pattern of loading libraries, initializing stuff, normal application processing, then uninitializing stuff and unloading libraries. If you have an application that is quitting unexpectedly, you can search for when shutdown-related code is happening and then start going backwards to try to find the culprit.

If you have an application that fails on some specific input condition (say, clicking on some UI element), you can actually write to the log at the same time that Wine is. While Wine is debugging, run:

    $ echo '@@@@@@@@' >> out.txt
Then perform your action and observe the failure. Then run it again:
    $ echo '########' >> out.txt
Now you know the failure occurred between the at-symbols and the hashes.

Full Article

The newest CodeWeavers coupon promo code is ( UNITY ) save 30% off CrossOver Mac or Linux today!

Monday, January 14, 2019

Phoenicis PlayOnLinux 5.0 - Alpha 2 has been released

Hi everyone!

We wish a happy and successful year! For this first day of 2019, we are glad to release the second alpha version of Phoenicis PlayOnLinux 5.

A new wine builder

We have rewritten from scratch our winebuild platform. To make it short, it is more reliable, more transparent, easier to setup and cross-platform compatible. Any project that needs to use wine could now potentially use it and take advantage of the 1828 different builds. (We admit that some of them are outdated, though).

The winebuild project is open source, uses containers. You can install it on your machine in no time if you want to build wine by yourself.

Support of new wine distributions

Speaking about wine builds, we now support 4 wine distributions:
  • Upstream wine builds are vanilla and unmodified wine (1)
  • Staging wine builds are the wine builds patched by wine-staging
  • Dos support wine builds contains wine and dosbox. (See the next feature)
  • CX contains a wine version patched by codeweavers
We plan to support proton in the next weeks.
All these wine build can be compiled directly through

(1) Except the very old versions that have a specific suffix is their names, like 1.5.3-heap_allocation_v2-avoid_deadlock, but we are going to move them anyway.

DOS Support

Winebuild now provides dos_support distribution. The way these wine binaries works is very simple: Wine launch script has been modified to detect if the given .exe is Win32 or a DOS executable. If it is a DOS executable, it will set-up a dosbox configuration that will behave consistenly with wine:
  • mount drive_c as C: on dosbox
  • if a autoexec.bat file exists inside the prefix, it will run it
  • support of custom DOS configuration per prefix
  • ...
The script framework has also been modified so that you can tweak some dosbox settings directly from a script. Here is an exemple of "advanced" script
9 + "/drive_c/The Elder Scroll 1: Arena/Arena106.exe"); // Arena106.exe is a w32 fine, wine will run
    .cpuCycles("max 95% limit 33000")
    .renderFrameSkip(1); + "/drive_c/The Elder Scroll 1: Arena/ARENA.BAT"); // ARENA.BAT is obviously a MS-DOS file, dosbox will run

GoG support

We've added a way to add a web browser view directly inside script wizards. Thanks to this feature, scripts can now authenticate to any website.
Phoenicis can automatically download and install GoG games from your account, as POLv4 used to do during the past years.

A complete demonstration video of support:
Also, we have made a script pattern for all GoG games: it has drastically simplified them from POLv4. The script are so much easier that we believe that they will be a lot more maintained.

POLv5 script POLv4 script
include(["engines", "wine", "quick_script", "gog_script"]);
var installerImplementation = {
    run: function () {
        new GogScript()
            .author("Quentin P├éRIS")

We are planning to add tons of GoG games in the library so stay tuned!

Installation of verbs directly inside a container

You can now install verbs directly from a wine container.

Standalone packages

  • We are now providing standalone packages that can work on any distribution without the need to install JDK runtime. These packages also remove all the feature that we don't need from the JDK. In the future, there will be probably two sorts of packages, but we want to make things easier for you for now.
  • We now provide macOS packages
  • We also support flatpak

I'd like to thank once again all the developers that helped us during the past weeks, plata, madoar, and also all those of you that contributed by reporting bugs, suggesting improvements, or tested phoenicis-winebuild.

Our next goals is to focus on prefix management (change of wine version inside a prefix, add debugging tools, etc...) and performance optimization.

If you have any suggestion or encounter any bug, we encourage you to come in our Github page: This version is still at alpha-stage, so please be indulgent.
I also take the opportunity of this news to also announce you that PlayOnLinux and PlayOnMac 4.3.4 has been released. They have been updated to support the new winebuild system, and the different windows of the application have been made resizable. It should fix the HDPI issues some of you were encoutering. We continue to maintain these versions until you are 100% satisfied with POLv5

Full Article

Putty for Mac
Putty for Mac