运行我的安装项目会导致“模块无法注册”错误

时间:2013-01-07 11:56:05

标签: c# wpf installer dllregistration vdproj

我正在尝试部署我的项目并创建一个安装程序。 我创建了一个.vdproj,它有一个输出setup.msi 运行.msi安装向导时,我收到错误:

  

“模块xyz无法注册.HRESULT -2147024769。请联系您的   支持人员。“

无法注册的模块是C ++ dll,而我的应用程序是WFF-C#应用程序。

有没有人知道这个问题的解决方案?

3 个答案:

答案 0 :(得分:0)

错误为0x8007007F(十六进制),转换为Windows error code 127 (0x7F) ERROR_PROC_NOT_FOUND。问题可能是因为proc DllRegisterServer(用于注册该程序集导出的COM类型的标准proc)不会被DLL导出。您可能需要register an associated typelib代替。

否则,请参阅类似LoadLibrary() error code 127的Stack Overflow上的类似问题。

答案 1 :(得分:0)

这可能有两个原因

  • 您尝试注册的DLL(使用安装程序)不是activeX dll,因此不需要注册。标准dll不需要注册。您只需将其复制到系统文件夹或应用程序文件夹中即可。 您应该尝试从安装程序中删除那些试图注册所有

  • 的指令
  • 第二个共振可以像akron一样建议,你需要注册一个相关的类型lib而不是dll本身。

您可以使用dependency walker找出它是什么类型的dll以及与之链接的其他dll。

答案 2 :(得分:0)

安装程序抱怨它无法在DLL中找到导出的函数来注册它DllRegisterServer function。非常好的几率,你要求安装程序在它实际上不是COM服务器时注册DLL。并非每个C ++ DLL都是COM dll。大多数都没有。

您应该能够在代码中使用DLL的方式中看到这一点。您通常通过添加对DLL或类型库的引用来使用COM dll,并且您的构建目录中将有一个Interop.Foo.dll程序集。相反,您在代码中使用带有[DllImport]属性的非COM dll。

将DLL的“Register”属性更改回vsdrpDoNotRegister,然后重试。