0

我正在将 VB6 应用程序转换为使用 Manifest 进行 Reg Free 部署。

我使用 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   ***   " />

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

4

5 回答 5

1

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

此外,查看 Windows 事件日志,那里报告了清单解析失败。

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

于 2009-05-12T20:55:26.283 回答
0

这是 MSDN文章中有关无注册 COM的故障排除部分的摘录。正如 Eugene 的回答,它建议查看 Windows Server 中的事件日志(也许使用Virtual PC?)。

首先让...您的客户使用已注册的服务器;然后注销服务器并验证您的错误消息是否符合您的预期;最后......制作和部署清单文件。这样,您的故障排除工作......将仅限于清单文件的结构(以及如果您选择这样做,则正确嵌入程序集清单)。

在解决免注册 COM 问题时,Windows Server 2003 上的事件查看器是您的好朋友……在系统事件日志中查找来自 COM 服务器的事件。我不建议您查看 Windows XP 事件日志……它总是包含一条消息……这无助于识别问题。

于 2009-05-12T21:45:40.663 回答
0

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

于 2009-05-12T23:10:59.807 回答
0

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

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

于 2009-07-06T23:07:47.973 回答
0

从 0.6.7 版开始,Make My Manifest 可以更好地处理“奇数”字符和符号的转义。此版本与 0.6.6 相比只有少量更改,因此更新不会给大多数人带来任何问题。

新版本也应该更好地处理大的 COM 接口版本号。这应该有助于难以管理接口二进制兼容性(或忽略兼容性)的程序员。

于 2009-06-20T20:52:08.967 回答