运行我的安装程序项目导致“模块注册失败”.错误
本文关键字:注册 模块 失败 错误 安装 我的 程序 项目 运行 | 更新日期: 2023-09-27 17:50:50
我正在尝试部署我的项目并创建一个安装程序。我已经创建了一个。vdproj,它有一个输出设置。msi当运行。msi安装向导时,我得到错误:
"模块xyz注册失败。"HRESULT -2147024769。联系你的支持人员。"
注册失败的模块是c++ dll,而我的应用程序是wff - c#应用程序。
有谁知道这个问题的解决方案吗?
安装程序抱怨它在DLL中找不到导出的函数来注册它,DllRegisterServer函数。很有可能您要求安装程序注册DLL,而实际上DLL并不是COM服务器。并不是每个c++ dll都是COM dll。大多数都不是。
您应该能够在代码中使用DLL的方式中看到这一点。您通常通过添加对dll或类型库的引用来使用COM dll,并且在构建目录中会有一个Interop.Foo.dll程序集。相反,在代码中使用带有[DllImport]属性的非com dll。
将DLL的"Register"属性更改为vsdrpdonoregister,然后再试一次
错误为0x8007007F(十六进制),翻译成Windows错误码127 (0x7F) ERROR_PROC_NOT_FOUND
。问题可能是因为过程DllRegisterServer(用于注册由该程序集导出的COM类型的标准过程)没有被DLL导出。您可能需要注册一个关联的typelib。
否则,参见类似的问题堆栈溢出,如LoadLibrary()错误码127。
这可能有两个原因
-
您正在尝试注册的dll(使用安装程序)不是activeX dll,因此不需要注册。标准dll不需要注册。你只需要复制到系统文件夹或应用程序文件夹。你应该试着从你的安装程序中删除那些试图注册所有
的指令。 第二个原因可以由akron建议,你需要注册一个相关的类型库,而不是dll本身。
你可以使用dependency walker来查找它是什么类型的dll,以及与它链接的其他dll。