Tag: 安装

如何获得在VB.NET中编写的用于Excel的COM服务器安装并注册在自动化服务器列表中?

版本 Excel 2007,Windows Vista,VB.NET,带有.NET 3.5 sp2的Visual Studio 2008,MSI安装程序包。 我正在尝试做什么 我有一个用VB.NET编写的Excel UDF。 它是作为COM服务器公开的,因为您无法直接在.NET语言中创buildExcel UDF。 安装是一个真正的痛苦,因为没有任何安装设置似乎得到它是正确的; 他们都没有给你一个安装包,把COM服务器放到客户端机器上,注册了服务器,注册了types库,以及在Excel 2007的自动化服务器列表中可见的组件。 我试过了 以下是types库的安装设置,它们的缺陷在编译时和安装时显而易见: vsdrfComSelfReg 在编译安装项目时没有警告 模块xxx.tlb注册失败。 HRESULT -2147024703 组件的ProgID和GUID在registry中设置,但该组件不出现在自动化服务器列表中 vsdrfDoNotregister 编译期间没有警告 安装工作,但当然TLB没有注册 vsdrfCOM 编译时警告:警告:无法为名为“xxx.tlb”的文件创build注册信息 types库在安装过程中未被注册 正确的设置应该是vsdrfCOM,如下所述: 问:任何人都可以告诉vsdrfCOM在Visual Studio的安装项目中的含义吗? 当我在安装项目中检查添加文件的属性中的“注册”属性时可用。 答:这意味着Visual Studio将在构build时提取COM注册数据,并将其放入MSI文件(主要是MSI文件的registry表,还有类表)。 所以当你安装它的时候,你的代码不需要自行注册,因为文件被复制到磁盘并且registry项被创build。 它还将通过向MSI的TypeLib表添加条目来创buildtypes库注册。 许多困难似乎是Vista特有的。 尤其是,使用REGCAP实用程序从.TLB文件生成.REG文件在Vista中不起作用。 如果不是这样的话,那么这个build议可能是有用的 。 相反,它完全可以产生空的.REG文件。 我已经尝试了这个StackOverflowpost中的所有build议。 这篇文章对技术问题有很好的描述: “引用”对话框中的条目来自HKCR \ TypeLibregistry项,而不是来自HKCR \ CLSID。 如果你的程序集没有出现在引用对话框中,但编译后的DLL仍然可以使用你的COM程序集,这意味着你的程序集正确的注册了类和接口,但是types库本身不是。 这个问题 任何人都有如何使安装注册组件和types库的想法? 我无法访问Windows XP计算机。 […]