Visual studio 2015 VisualStudio安装项目(vdproj)-STDOLE,如何正确注册COM DLL?
我正在使用Visual Studio 2015安装项目 我在安装程序中有一个COM DLL,它引用了STDOLE(系统类型库{00020430-0000-0000-C000-0000000000 46},据我所知,该库不能注册,因为它是受保护的文件/注册)。如果您尝试注册它,安装MSI时会出现错误(警告) 不过,vdproj扩展将此DLL的注册添加到“TypeLib”MSI表中。虽然它似乎并不总是这样,但在某些情况下我无法推断。我没有选择排除tlb,它不知何故一直在重新出现(可能是从依赖项中出现?)Visual studio 2015 VisualStudio安装项目(vdproj)-STDOLE,如何正确注册COM DLL?,visual-studio-2015,windows-installer,vdproj,Visual Studio 2015,Windows Installer,Vdproj,我正在使用Visual Studio 2015安装项目 我在安装程序中有一个COM DLL,它引用了STDOLE(系统类型库{00020430-0000-0000-C000-0000000000 46},据我所知,该库不能注册,因为它是受保护的文件/注册)。如果您尝试注册它,安装MSI时会出现错误(警告) 不过,vdproj扩展将此DLL的注册添加到“TypeLib”MSI表中。虽然它似乎并不总是这样,但在某些情况下我无法推断。我没有选择排除tlb,它不知何故一直在重新出现(可能是从依赖项中出现
Typelib\{000204EF-0000-0000-C000-0000000000 46}
是Visual Basic 6运行时的一部分,WiX中的一个已知问题是,heat.exe
对COM数据的错误提取会为每个ActiveX或COM组件带来此注册表项请注意,这不是WiX的故障,而是VB6的一般问题。因此,您在VisualStudio安装程序项目中也会看到这个问题
(多用途工具,其中之一是COM注册提取):“…注册COM时
在VB6中创建的组件它添加作为
VB6运行时组件。建议VB6组件使用此标志
避免在卸载时中断VB6运行时。以下值为
排除在外:CLSID\{D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731}
,
Typelib\{EA544A21-C82D-11D1-A3E4-00A0C90AEA82}
Typelib\{000204EF-0000-0000-C000-0000000000 46}
,引用这两个类型库的任何接口“
分辨率:现在最难的部分是,实际的解决方案是什么?坦白地说,我现在没有时间测试,但我想你可以用Orca打开最终的MSI并删除这些条目——如果它们在那里的话。我想这正是你现在正在做的,所以你回到了原点,但至少有一点是清楚的,是什么导致了这个问题我想您可以尝试在VB6组件未注册时运行生成,而不是在注册时运行生成?
这会有某种意义,即只有在生成时组件未注册时,它才会提取密钥如果是这种情况,可能在安装构建之前尝试自注册VB6组件
RegSpy.exe:您可以使用名为(或RegSpy2)的工具从COM文件中提取COM注册。您可以在“Release”文件夹中找到exe,然后转到:
regspy.exe richtx32.ocx >> richtx32.reg
然后,您可以将reg文件导入Visual Studio安装程序项目。记住用MSI目录属性替换硬编码路径,并删除上面提到的错误VB6条目
VSProj:在Visual Studio中,右键单击Visual Studio安装程序项目
查看
注册表
右键单击顶部节点
导入…
VB6运行时:注册表项:
是Visual Basic 6运行时的一部分
,WiX中的一个已知问题是,heat.exe
错误地提取COM数据会为每个ActiveX或COM组件带来此注册表项。请注意,这不是WiX的错误,而是VB6的一般问题。因此您在VisualStudio安装程序项目中也看到了这个问题
(多用途工具,其中之一是COM注册提取):“…注册COM时
在VB6中创建的组件它添加作为
VB6运行时组件。建议VB6组件使用此标志
避免在卸载时中断VB6运行时。以下值为
排除在外:CLSID\{D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731}
,
Typelib\{EA544A21-C82D-11D1-A3E4-00A0C90AEA82}
Typelib\{000204EF-0000-0000-C000-0000000000 46}
,引用这两个类型库的任何接口“
分辨率:现在最困难的部分是,实际的解决方案是什么?坦率地说,我现在没有时间测试,但我想你可以用Orca打开最终的MSI并删除这些条目-它们应该在那里。我想这正是你现在正在做的,所以你回到了原点,但至少有一点单簧管我想你可以试着在VB6组件未注册时运行生成,而不是在注册时运行生成?这在某种意义上说,如果在生成时组件未注册,它只提取密钥?如果是这种情况,也许可以试着自注册你的VB6组件在安装生成之前输入
RegSpy.exe:您可以使用名为(实际上是RegSpy2)的工具从COM文件中提取COM注册。您可以在“Release”文件夹中找到exe,然后执行以下操作:
regspy.exe richtx32.ocx >> richtx32.reg
然后,您可以将reg文件导入到Visual Studio安装程序项目中。还记得吗