I am working on a vb6 project and want to create a manifest so no registering is required.
I use MMM (Make My Manifest) tool which scans your VB6 project for dll dependencies and generates the manifest.
However, the MMM does not include tlb files, and I have a Client.dll and Client.tlb written in .net that which has been exposed to COM and used in my VB6 program.
I don't to you use Regasm as it would be nice if no register to the registry is done.
I tried to generate a seperate manifest for the via the mt tool in command line, 'mt.exe -tlb:Client.tlb -dll:Client.dll -out:Client.manifest'
Then I thought I could merge the 2 manifest via: 'mt.exe -manifest program.exe.manifest client.manifest -out:program.exe.manifest'
However, when I run the program I'm getting an message box that says ' Run-time error -2147220999 (800401f9): Automation error , Error in the Dll'
Am i doing things correctly above, anyone had similar experience, any help appreciated.
Here is a short description how UMMM does it:
First, for the .Net dll it generates a manifest to a temp file with this
mt.exe -nologo -managedassemblyname:"{dotnet_dll}" -nodependency -out:"{dotnet_dll}.manifest"
Then embeds this manifest into .Net dll as RT_MANIFEST resource 2 with this
mt.exe -nologo -manifest "{dotnet_dll}.manifest" -outputresource:"{dotnet_dll}";2
Finally references the .Net dll from the VB6 executable by extracting assemblyIdentity
tag from .Net dll manifest and adding it to the reg-free manifest inside dependency\dependentAssembly
tag like this
<dependency>
<dependentAssembly>
<assemblyIdentity name="PdfSigner" version="1.0.0.0" processorArchitecture="msil" />
</dependentAssembly>
</dependency>
This way clrClass
tags Hans mentions appear in the the .Net dll embedded manifest and not in the VB6 executable manifest.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With