https://bugs.winehq.org/show_bug.cgi?id=43270
--- Comment #6 from Daniel Kamil Kozar dkk089@gmail.com --- I looked into this some more, and it appears that the data from the manifest is entirely ignored at the time of the CoCreateInstance() call, leading the function to lookup data inside the registry instead of data which should be available at runtime. Calling CoCreateInstance() with the given CLSID leads to create_monodata() being called, and failing due to the CLSID not being present in the registry.
Here's some additional debugging I've tried : 1. Adding the <File> directive to the manifest embedded inside PluginHandler.dll, since according to https://docs.microsoft.com/en-us/dotnet/framework/interop/configure-net-fram... even embedded manifests should contain a <File> directive. I hoped this might help, seeing how actctx.c calls add_dll_redirect() only when a <File> directive appears inside a manifest file. However, that did not help, and CoCreateInstance() ended up looking for the CLSID inside the registry anyway.
2. Manually creating the registry keys and values that create_monodata() looks for, i.e.
[HKEY_CLASSES_ROOT\CLSID{C55D92B1-4FDF-4B54-B817-98AB9569F4F4}\InprocServer32] "Class"="MetadataPlugIn.PluginHandler" "CodeBase"="C:\Program Files\Exact Audio Copy\PluginHandler.dll"
However, this only led to the following error :
Unhandled Exception: System.Runtime.InteropServices.MarshalDirectiveException: The type `System.Array' layout needs to be Sequential or Explicit