[Bug 39059] Neverwinter Nights 2 Toolset 'NWN2ToolsetLauncher.exe' (.NET 2.0 app) crashes with System.TypeLoadException (managed DirectX runtime not installed)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Aug 8 09:29:09 CDT 2015


https://bugs.winehq.org/show_bug.cgi?id=39059

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |dotnet
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |focht at gmx.net
         Resolution|---                         |INVALID
            Summary|NWN2ToolsetLauncher.exe     |Neverwinter Nights 2
                   |dotnet20 Application        |Toolset
                   |crashes with                |'NWN2ToolsetLauncher.exe'
                   |System.TypeLoadException    |(.NET 2.0 app) crashes with
                   |                            |System.TypeLoadException
                   |                            |(managed DirectX runtime
                   |                            |not installed)

--- Comment #1 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming.

The failure is expected since 'NWN2Toolset.dll' .NET assembly depends on
managed DirectX.

--- snip ---
fixme:advapi:ReportEventW
(0xcafe4242,0x0001,0x0000,0x00001388,(nil),0x000b,0x00000106,0x3009a1b4,0x6ec5d4):
stub
err:eventlog:ReportEventW L"clr20r3"
err:eventlog:ReportEventW L"nwn2toolsetlauncher.exe"
err:eventlog:ReportEventW L"1.0.23.1765"
err:eventlog:ReportEventW L"4a89fba1"
err:eventlog:ReportEventW L"nwn2toolset"
err:eventlog:ReportEventW L"1.0.1765.0"
err:eventlog:ReportEventW L"4a89fc8c"
err:eventlog:ReportEventW L"20d"
err:eventlog:ReportEventW L"1b"
err:eventlog:ReportEventW L"system.typeloadexception"
err:eventlog:ReportEventW L"NIL"
...
Unhandled Exception: System.TypeLoadException: Could not load type
'NWN2Toolset.NWN2.NetDisplay.NWN2NetDisplayManager' from assembly 'NWN2Toolset,
Version=1.0.1765.0, Culture=neutral, PublicKeyToken=6bb96f3d82daa243'.
   at NWN2Toolset.NWN2ToolsetMainForm.Initialize()
   at NWN2Toolset.NWN2ToolsetMainForm.StartupWindow()
   at NWN2ToolsetLauncher2.LauncherStub.Main()
   at main(String[] args)
wine: Unhandled exception 0xe0434f4d in thread 9 at address 0x7b845d3d (thread
0009), starting debugger...
--- snip ---

Dumping the culprit with ILSpy:

--- snip ---
// Z:\home\focht\.wine\drive_c\GOG Games\Neverwinter Nights 2
Complete\NWN2Toolset.dll
// NWN2Toolset, Version=1.0.1765.0, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243

// Global type: <Module>
// Architecture: AnyCPU (64-bit preferred)
// Runtime: .NET 2.0

// mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// OEIShared, Version=1.0.1765.0, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// System.Drawing, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
// System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
// System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// DotNetMagic2005, Version=5.0.1.0, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// SandBar, Version=1.3.4.1, Culture=neutral, PublicKeyToken=75b7ec17dd7c14c3
// QWhale.Syntax, Version=1.3.3516.30270, Culture=neutral,
PublicKeyToken=cd79f04377768f46
// System.Design, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
// Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35
// GlacialTreeList, Version=2.3.2.0, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// ManagedElectron, Version=1.0.1765.0, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// Microsoft.DirectX.AudioVideoPlayback, Version=1.0.2902.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35
// Sano.PersonalProjects.ColorPicker.Controls, Version=0.1.1.0,
Culture=neutral, PublicKeyToken=6bb96f3d82daa243
// XPExplorerBar, Version=3.3.0.0, Culture=neutral,
PublicKeyToken=26272737b5f33015
// SmartPropertyGrid, Version=1.1.0.30, Culture=neutral,
PublicKeyToken=e293f9639c6b7e7d
// SourceGrid2, Version=2.2.0.0, Culture=neutral,
PublicKeyToken=ad929b4064585aea
// System.Xml, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
// QWhale.Editor, Version=1.3.3516.30281, Culture=neutral,
PublicKeyToken=cd79f04377768f46
// IRenderer, Version=1.0.3516.30272, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// OEILocalization, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// Microsoft.VisualC, Version=7.0.5000.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
// ManagedResourceInterface, Version=1.0.3516.30318, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// managednwscript, Version=1.0.1765.0, Culture=neutral,
PublicKeyToken=6bb96f3d82daa243
// ICSharpCode.SharpZipLib, Version=0.83.1.0, Culture=neutral,
PublicKeyToken=1b03e6acf1164f73
// mscorlib, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
// NWN2RulesLib.dll 

using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;

[assembly: AssemblyVersion("1.0.1765.0")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyDescription("")]
[assembly: AssemblyKeyName("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyTitle("")]
[assembly: AssemblyTrademark("")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: ComVisible(false)]
[assembly: Guid("A517C836-0AF4-4cb5-ACBE-6502F087531C")]
[assembly: SecurityPermission(8, SkipVerification = true)]
[module: UnverifiableCode]
--- snip ---

MS .NET Frameworks don't provide managed DirectX runtime.

You either:

* didn't run/skipped the DirectX 9 installer (the GOG.com package contains DX9
and .NET 3.5 runtime installers)
* the main installer checked for Direct 9 presence and skipped it on its own
due to Wine registry keys, missing the managed DirectX install part

Either run 'winetricks -q directx9' which installs the needed .NET assemblies
or let the game distributed DX9 runtime installer do its job.

Remove all overrides afterwards since the winetricks recipe will pollute the
prefix unnecessarily.

--- snip ---
$ find . -name "*DirectX*.dll"
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.AudioVideoPlayback.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.Diagnostics.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.Direct3D.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.DirectDraw.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.DirectInput.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.DirectPlay.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2902.0/Microsoft.DirectX.DirectSound.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2903.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2904.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2905.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2906.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2907.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2908.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2909.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2910.0/Microsoft.DirectX.Direct3DX.dll
./windows/Microsoft.NET/DirectX for Managed
Code/1.0.2911.0/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2903.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2904.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2905.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2906.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2907.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2908.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2909.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2910.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2911.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
./windows/assembly/GAC/Microsoft.DirectX/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.dll
./windows/assembly/GAC/Microsoft.DirectX.AudioVideoPlayback/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.AudioVideoPlayback.dll
./windows/assembly/GAC/Microsoft.DirectX.Diagnostics/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Diagnostics.dll
./windows/assembly/GAC/Microsoft.DirectX.Direct3D/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Direct3D.dll
./windows/assembly/GAC/Microsoft.DirectX.DirectDraw/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectDraw.dll
./windows/assembly/GAC/Microsoft.DirectX.DirectInput/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectInput.dll
./windows/assembly/GAC/Microsoft.DirectX.DirectPlay/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectPlay.dll
./windows/assembly/GAC/Microsoft.DirectX.DirectSound/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectSound.dll
--- snip ---

There is also bug 34045 ("Provide Managed DirectX replacement assemblies for
Mono") but that one targets Wine-Mono and will likely stay forever^H^H^H^H a
long time.

---

It's possible to create a winetricks recipe for managed DirectX runtime install
without using the atomic bomb option 'directx9'.

Essentially you do it as MS suggests when providing a minimized DX install.
Create a folder and put the following files into:

--- snip ---
$ ls -1sh
total 8.4M

1.1M Apr2006_d3dx9_30_x86.cab
4.0M Apr2006_MDX1_x86_Archive.cab
896K Apr2006_MDX1_x86.cab
1.8M dsetup32.dll
 88K DSETUP.dll
528K DXSETUP.exe
 92K dxupdate.cab
--- snip ---

You must ensure that at least one MS .NET Framework is present *prior* running
the DX installer otherwise the .NET assemblies are not getting installed in
GAC.

You either run 'dxsetup.exe' (user-interface) or unattended by passing
'/silent' option and end up with minimal managed DX 9 runtime.

NOTE: Inclusion of 'Apr2006_d3dx9_30_x86.cab' is not a mistake, it must be
present since MDX inf has dependencies to this.

$ wine --version
wine-1.7.49

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list