无法使用Visual Studio Deployment获得某些com注册
Cannot get certain COMs to register using Visual Studio Deployment
我正在部署一个包含几个c++ com的MSI。我们正在调整它以在Windows 7/Server 2008上工作,由于某些原因,自注册com不再工作。因此,我将它们全部更改为COMRelativePath。
这似乎是有效的,但其中3个组件,神秘地,没有注册。在安装程序的构建过程中,对于那些没有注册的人,我看到了以下消息:
警告:无法为名为' componentthatwonregister .dll'的文件创建注册信息
在做了广泛的研究并尝试了所有的解决方法之后,我无法克服这个问题。我试过将RegCap.exe和devv设置为在各种兼容模式下运行,并将其提升到管理权限。我试过Visual Studio 2010,同样的问题。
奇怪的是,大多数COMs寄存器都很好,它们都以相同的方式设置;只有极少数人有这个问题。我一个项目一个项目地看了COMs,我找不到任何会导致一个失败而另一个成功的东西。此外,在同一系统上,如果我使用regsvr32注册com,只要我以管理员身份运行命令提示符,它就可以工作。
这表明如果msi中的两个或多个组件具有相同的progid,则可能发生错误。这是原因吗?
如果这些是ATL控件,有些可能会链接到ATL. dll,有些则不会。根据部署目标和构建机器的不同,当针对较旧的平台SDK进行编译时,您可能会得到一个支持UAC的atl1 . dll,而使用UAC的静态注册表则不支持UAC。
比较失败组件和成功组件的链接器选项
相关文章:
- 进程外 EXE 的免注册 COM
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- 可视化 使用 C++ API 注册 COM DLL 的所有接口
- 如何在Windows中注册COM(组件对象模型)?(用于图标覆盖处理程序)
- 从未通过 C# 注册C++ COM 服务器访问 COM 接口
- 为使用C# /托管代码的无注册COM Interop设置DLL
- 已确认的已注册com对象cocreateinstance返回regdb_e_classnotreg
- 如何在不同的目标平台上以编程方式智能注册 32 位 COM/DLL 组件
- 从注册表中删除 COM 服务器的铭文会将键保留在 HKEY_CLASSES_ROOTTypeLib 中
- 在 C++ 中使用 C# COM 包装的 DLL 会抛出未注册的类
- 使用来自 DLL 的 COM 对象而不注册
- 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/无注册的 COM
- 如何在 WinCE 5.0 中注册 COM 组件
- 类未在我自己的 COM 组件上注册 (0x80040154)
- 免注册 COM 互操作.程序集 B 引用程序集 A
- 一个C++客户端无法使用我们新的 COM 注册的 .NET .dll加载,另一个客户端可以正常工作
- 为什么 COM 类需要构造函数?如何在不注册的情况下使用 COM 类
- 如何在同一系统中为不同的用户帐户注册相同的COM dll
- COM 对象版本号以及如何通过 Win 注册表处理它
- 无法使用Visual Studio Deployment获得某些com注册