Hi,<br><br>Working on a D3D game, I have found that wine is refusing to load the following <br>manifest file (when Windows does not fail).<br><br>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
<br>&lt;!-- Copyright &copy; 1981-2001 Microsoft Corporation --&gt;<br>&lt;assembly xmlns=&quot;urn:schemas-microsoft-com:asm.v1&quot; manifestVersion=&quot;1.0&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &lt;noInheritable/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;assemblyIdentity type=&quot;win32&quot; name=&quot;
Microsoft.VC80.OpenMP&quot; version=&quot;8.0.50727.42&quot; processorArchitecture=&quot;x86&quot; publicKeyToken=&quot;1fc8b3b9a1e18e3b&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;file name=&quot;vcomp.dll&quot; hash=&quot;0d009725bd5653af143fdfd9d8abf8adad533d16&quot; hashalg=&quot;SHA1&quot;/&gt;
<br>&lt;/assembly&gt;<br><br>Adding verbosity to actctx.c, it seems that this game is requesting version 8.0.50608.0, which does match major.minor, <br>but not the whole version number (<i>major.minor.build.revision)</i>.
<br><br>trace:actctx:parse_assembly_identity_elem name=L&quot;Microsoft.VC80.OpenMP&quot; version=8.0.50727.42 arch=L&quot;x86&quot;<br>fixme:actctx:parse_assembly_elem VERBOSE: wrong version FOUND: 8/0/50727/42<br>fixme:actctx:parse_assembly_elem VERBOSE: wrong version EXP: 8/0/50608/0
<br>fixme:actctx:parse_manifest_buffer failed to parse manifest L&quot;C:\\Program Files\\Microsoft.VC80.OpenMP.manifest&quot;<br>fixme:actctx:parse_depend_manifests Could not find dependent assembly L&quot;Microsoft.VC80.OpenMP
&quot;<br><br>According to MSDN, it seems only major.minor is considered for version matching:<br>- <a href="http://msdn2.microsoft.com/en-us/library/aa374234.aspx">http://msdn2.microsoft.com/en-us/library/aa374234.aspx</a>
 : A version number that changes only in the <i>build</i> or <i>revision</i> parts indicates that the assembly is backward compatible with prior versions.<br>- <a href="http://msdn2.microsoft.com/en-us/library/aa375365.aspx">
http://msdn2.microsoft.com/en-us/library/aa375365.aspx</a>: [...]
are manifests used to redirect the version of a side-by-side assembly
to another compatible version. The version that the assembly is being
redirected to should have the same major.minor values as the original
version. <br><br>I am proposing the following one-liner to ntdll/actctx.c:<br><br>isa@isa:~/downloads/tmp$ diff -u wine-0.9.49/dlls/ntdll/actctx.c /home/isa/downloads/wine-0.9.49/dlls/ntdll/actctx.c<br>--- wine-0.9.49/dlls/ntdll/actctx.c&nbsp;&nbsp;&nbsp;&nbsp; 2007-11-09 17:56:
12.000000000 +0100<br>+++ /home/isa/downloads/wine-0.9.49/dlls/ntdll/actctx.c 2007-11-19 21:07:35.000000000 +0100<br>@@ -1390,8 +1390,8 @@<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (expected_ai)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* FIXME: more tests */
<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (assembly-&gt;type == ASSEMBLY_MANIFEST &amp;&amp;<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcmp(&amp;assembly-&gt;id.version, &amp;expected_ai-&gt;version, sizeof(assembly-&gt;id.version)))<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (assembly-&gt;type == ASSEMBLY_MANIFEST &amp;&amp;
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((assembly-&gt;id.version.major != expected_ai-&gt;version.major) || (assembly-&gt;id.version.minor != expected_ai-&gt;version.minor)) )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FIXME(&quot;wrong version\n&quot;);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return FALSE;<br><br>With this patch, the manifest (and related DLL) is loading correctly. <br>This does not prevent my game die shortly after, in D3D code this time. Still work to do ;-)<br><br>Thanks,
<br><br>Norbert Lataille<br>