How can I check if my .Manifest file is valid?
I am converting a VB6 app to use a manifest for free deployment.
I created a manifest with Make My Manifest, but when I ran the application I got an error (below).
I want to make sure my manifest is not invalid anyway. (I opened it and it looks ok except for some non-printable characters, which seems strange for an XML file.
** --------------------------- C: \ Bungalow \ Tutor \ tutor.exe
This application failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
OK **
An excerpt from a manifest that has non-printable characters
<file name="THREED32.OCX">
<typelib tlbid="{0BA686C6-F7D3-101A-993E-0000C0EF6F5E}" version="1.0" flags="control" helpdir="" />
<comClass clsid="{0BA686AA-F7D3-101A-993E-0000C0EF6F5E}" tlbid="{0BA686C6-F7D3-101A-993E-0000C0EF6F5E}" progid="Threed.SSCheck" description="A three-dimensional check box. ***\ 1 ª8! DOCUME~1 D ï¾1×°¬:÷ D o c u m e n t s a n d S e t t i n g s *** " />
I removed all non-printable characters
a source to share
If you are using Vista / Server08, use the sxstrace.exe command line tool from the elevated prompt before starting the application; he can give you more information.
Also, look at the Windows Event Log for parsing failures.
I also suggest adding the "regfreecom" tag to this question.
a source to share
Here's an excerpt from the Troubleshooting section of the MSDN article on reg-free COM. As with Eugene, he suggests looking at the event log on Windows Server (with Virtual PC perhaps ?).
First, get ... your client running with a registered server; then unregister the server and make sure your error message is what you expected; and finally ... craft and deploy manifest files. So the troubleshooting effort ... will be limited to the structures of your manifest files (and the correct nesting of the assembly manifest if you choose to do so).
When troubleshooting without logging COM problems, Event Viewer on Windows Server 2003 is your friend ... take a look at the syslog for events from the COM server. I am not suggesting that you take a look at the Windows XP Event Log ... it will always contain a message ... which does not help identify the problem.
a source to share
Since version 0.6.7, Make My Manifest handles character escaping for "odd" characters and symbols. This version has only a few changes from 0.6.6, so the update shouldn't cause any problems for most people.
The new version should also handle large COM version numbers. This should help programmers who have problems managing interface binary compatibility (or ignore compatibility).
a source to share
You might want to check that you are not linking in libraries compiled with different versions of Visual Studio .. (assuming this is what you are using)
I had a problem very similar to this ... same error message ... after I moved my application from VS2005 to VS2008. The error was that it was linked in a library built in a separate solution that I hadn't moved to VS2008. The release version worked fine, but the debug version hit this bug.