com - 如何在 WiX 3 中注册 Win32 COM DLL 文件?

标签 com dll wix wix3

我找到了一个关于注册 DLL 的示例,Registering an Assembly for COM Interop in a MSI file with the Windows Installer XML toolset. ,WiX 提示“AssemblyRegisterComInterop”属性。

我删除了它并将“Assembly”属性更改为 win32,它说我需要指定 AssemblyManifest 属性,但是我应该在那里放什么?

最佳答案

最简单的方法(Rob M 会大吼大叫这是怎么回事)就是使用 SelfRegCost=1在 DLL 的文件标记上。

这是错误的,因为我们应该明确控制 DLL 的注册,而不是允许它通过 DllRegisterServer 运行任意代码。理论是 DLL 应该在调用 DllRegisterServer 时将适当的条目放入注册表中。不幸的是,他们中的很多人做的远不止这些,所以自我注册可能是让您的安装工作的唯一方法。

这也是错误的,因为这意味着 Windows 安装系统对这些注册表项一无所知,也不知道应该和不应该存在什么。这意味着修复将不起作用,并且可能卸载无法正确清理等。

否则,您可以通过指向 heat.exe 生成适当的 WiX 代码。在您的 DLL 中,并将其输出集成到您当前的 WiX 项目中。您将获得各种 Class、ProgID、TypeLib 和 Registry 标记。您可能需要手动编辑该输出以使其编译。

我希望这有帮助。

关于com - 如何在 WiX 3 中注册 Win32 COM DLL 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/364187/

相关文章:

c - Windows DLL 文件的正确构建模式是什么?

properties - 如果属性在安装时未设置,为什么在卸载时会被忽略?

command-line - WiX Bootstrap : How do I set burn variables from the command line?

visual-studio-2008 - 在 C# 中将一个 DLL 嵌入到另一个 DLL 中

.net - 如何有效地检索所有私有(private) MSMQ 队列的名称?

c# - Outlook Com 未注册

c++ - 在 C++ 中使用 COM 属性或 COM setter 和 getter 是最佳实践吗?

windows - 如何使用 WinSxS list 重定向到旧版本的 DLL?

wix - 如何使用WIX在D盘创建INSTALLLOCATION文件夹?

delphi - 如何实现IDispatch方法?