1

我有一个使用一些 3rd 方 DLL 的项目,并且正在开发安装项目以进行部署。该程序在 Visual Studio 2005 中运行(调试)时运行良好,但在“安装”时不能。

DLL 被正确复制到应用程序文件夹。我的理解是安装程序没有注册 DLL。“由于以下错误,检索具有 CLSID { GUID }的组件的 COM 类工厂失败:80040154”

在安装项目中,每个 DLL 程序集都将“Register”属性设置为“vsdraCOM”,我认为这应该触发注册。

编辑:看起来它们都是 .NET 程序集,就像我的应用程序一样,注册应该不是问题。标题已更改以反映这一点。

这似乎应该是非常基本的,但我不知道我应该做什么?

4

3 回答 3

0

使用 Dependency Walker ( http://dependencywalker.com/ ) 检查 DLL 可能试图加载的其他内容。

然后尝试在 HKCR\CLSID 下的注册表中搜索您的 GUID,其中 InprocServer32 应包含成功注册的 DLL 的路径。

于 2010-01-20T00:31:08.107 回答
0

如果这些是自注册的普通 COM 对象(不是 .NET 程序集)(即您可以使用 regsvr32 注册它们),那么您vsdraCOMSelfReg不需要vsdraCOM. vsdraCOM用于为 COM 互操作注册 .NET 程序集。

是的,这根本不直观。

于 2010-01-20T00:48:49.173 回答
0

使用的 DLL 来自一个 SDK 包,其中包含来自供应商的文档、代码示例等,位于安装程序中。我有在移动到新计算机时传输的所有松散文件,但没有发现我实际上没有在新计算机上运行安装程序。

安装 SDK 必须进行所需的任何注册 - 我的应用程序现在可以正常运行。我可以通过运行两个安装程序在目标机器上进行安装,这是可以接受的。

于 2010-01-20T20:49:01.480 回答