COM组件的Windows安装程序

问题描述:

我有一个C++的activex控件,我需要为其安装程序。它需要删除该DLL并制作一些注册表项。COM组件的Windows安装程序

我有大约6个.RGS文件,我通过regsvr32进行了自我注册,这是工作。

做一个安装程序我手动将RGS脚本移植到visual studio 2008 windows安装程序注册表GUI中。我觉得不可能做一个确切的端口(例如像ForceRemove这样的RGS关键字)。

是不是有办法从IDL文件生成这些文件?我做错了吗?

SelfReg不是MSI安装中的最佳实践,因为它是过程中并且很脆弱。 Visual Studio 2008安装程序是有限的,但您应该能够将Register属性设置为vsdrfCOM而不是vsdrfCOMSelfReg。这将导致COM元数据从您的DLL中收集,并在MSI本地创作。

生成MSI后,您应该注意SelfReg表为空,并且在注册表中为您的COM数据创建了一系列自动创作的行。

注意:VDPROJ在解压这个COM的时候是一种愚蠢的行为,所以它可能不起作用。您可能需要考虑更强大的工具,如InstallShield或Windows Installer XML。

+0

好吧,是的,vsdrfCOM是“无法提取注册信息”或其他。我会检查WIX。是否有任何理由手动输入注册码? – 2010-08-26 14:16:13

+0

是的。 COM提取可能是一个令人毛骨悚然的过程,有时会失败。在这些情况下,我会快照/配置文件/比较虚拟机以找出错过的内容,然后手动将这些条目创建到安装程序中以进行补偿。 – 2010-08-26 14:17:16

你做错了。 .rgs文件在那里,以便组件可以自行安装。任何安装程序都支持让组件自行安装。例如,Visual Studio安装项目设置“注册”属性。

+0

好吧,我看到了,但MSDN似乎建议反对它:http://msdn.microsoft.com/en-us/library/bb204770(VS.85).aspx#no_selfreg http://msdn.microsoft .com/en-us/library/aa371608(v = VS.85).aspx我误解了这些? – 2010-08-25 17:11:15

+0

好的。在那种情况下,我的答案是“否”。 – 2010-08-25 17:19:32

+0

+1。看起来像.rgs文件只能被ATL函数解析,它们唯一的目的是被包含在库资源中,以便以后从DllRegisterServer()中使用。 – sharptooth 2010-08-26 05:18:44