Vb6 如何验证我的.Manifest文件是否有效?

Vb6 如何验证我的.Manifest文件是否有效?,vb6,manifest,regfreecom,Vb6,Manifest,Regfreecom,我正在将VB6应用程序转换为使用清单进行无注册部署 我用Make My manifest创建了一个清单,但是当我运行应用程序时,我得到了一个错误(如下) 我想确保我的舱单没有以某种方式无效。(我打开它,除了一些不可打印的字符外,它看起来还行,这对于XML格式的文件来说似乎很奇怪 **--------------------------- C:\Bungalow\tutor\tutor.exe 由于应用程序配置不正确,此应用程序无法启动。重新安装应用程序可能会解决此问题。 好的** 从包含不可打印

我正在将VB6应用程序转换为使用清单进行无注册部署

我用Make My manifest创建了一个清单,但是当我运行应用程序时,我得到了一个错误(如下)

我想确保我的舱单没有以某种方式无效。(我打开它,除了一些不可打印的字符外,它看起来还行,这对于XML格式的文件来说似乎很奇怪

**--------------------------- C:\Bungalow\tutor\tutor.exe

由于应用程序配置不正确,此应用程序无法启动。重新安装应用程序可能会解决此问题。 好的**

从包含不可打印字符的清单中摘录

<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   ***   " />


我删除了所有不可打印的字符

如果您在Vista/Server08上,请在运行应用程序之前从提升的提示中使用sxstrace.exe命令行工具;它可能会为您提供更多信息

<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   ***   " />
此外,请查看Windows事件日志,其中报告了清单分析失败


我还建议在这个问题上添加“regfreecom”标记。

这里是一段MSDN中关于regfreecom的摘录。正如Eugene的回答一样,它建议查看Windows Server中的事件日志(可能是?)

首先,让你的客户与你合作 已注册的服务器;然后注销 启动服务器并验证您的错误 信息是您所期望的;并且 最后…制作并部署舱单 文件。这样您就可以排除故障了 努力…将仅限于 清单文件的结构(以及 程序集的正确嵌入 如果您选择这样做,则显示)

故障排除时免费注册 COM问题,上的事件查看器 Windows Server 2003是您的朋友。。。 在系统事件日志中查找来自COM服务器的事件。 我不建议你看电视 Windows XP事件日志。。。 它将始终包含一个 消息…这没用 找出问题所在


我不知道这是否是您的问题,但如果您将清单包含在res文件中,我相信它的大小必须能被4个字节整除(不要问我为什么)

从版本0.6.7开始,让我的清单处理“奇数”的转义字符和符号更好。此版本仅对0.6.6进行了一些更改,因此更新不会给大多数人带来任何问题


新版本还可以更好地处理较大的COM接口版本号。这可以帮助在管理接口二进制兼容性(或忽略兼容性)方面有困难的程序员。

您可能需要检查是否没有链接到使用不同版本的Visual Studio编译的库中。。(假设这就是您正在使用的)


在我将一个应用程序从VS2005移动到VS2008之后,我遇到了一个与此非常类似的问题…相同的错误消息…错误是因为它链接到了一个单独解决方案中构建的库中,而我没有移动到VS2008。发布版本工作正常,但调试版本遇到了此错误。

重新标记regfreecom的好主意,我很高兴我现在就做。我还将投票给你+1,让你更接近magic 500 rep和自己重新标记问题的能力。你就快到了:)MMM会自动处理这个问题。资源必须是4字节的倍数的原因是资源总是用NUL(0字节)填充到DWORD边界如果没有。这将是无效的XML。我不知道是否有验证器。一个问题是Microsoft没有发布.manifest文件的完整架构(它们有架构,但不完整)。包含“垃圾”的组件似乎有问题描述。一个临时修复方法是创建外部.manifest文件并手动编辑它们以删除描述属性。我听说新的MMM在转义生成的XML中的奇数字符方面会更积极。;-)