2012-03-18 131 views
2

我开发了一个vb6程序,然后我用visual studio interdev构建了一个安装向导。VB6缺少DLL

我用“的Dependency Walker”和“进程管理器”,找到了失踪的DLL,但始终存在着一个问题:

IESHIMS.DLL 
WER.DLL 
MPR.DLL 

通过Dependency Walker中显示这些DLL。

而另一台机器上安装该程序时,我有这些错误信息:

uxtheme.dll failed to register 
msdatsrc.tlb failed to register etc.. 

PS:在安装Visual Studio中的机器上没有问题。

任何想法解决这个问题?

感谢

+0

IESHIMS.DLL WER.DLL卸载ie8后,这些dll在依赖walker中不再显示。但我一直都有缺少dll的问题。 – 2012-03-18 20:54:40

回答

5

的Dependency Walker是不是解决VB6依赖适当的工具。对于用C或C++编写的使用隐式依赖关系的DLL来说,它工作得很好。虽然它没有跟上时代的步伐,并且遇到了存储在Windows并行缓存中或延迟加载的DLL问题。延迟加载是ieshims.dll等人产生警告的原因。

VB6使用COM,它使用LoadLibrary()动态加载DLL。除非使用“配置文件”选项,否则您将永远不会看到依赖关系返回到“取决于”。这样的DLL可以通过注册表找回,这是您需要用regsvr32.exe编写安装程序和修补程序的原因。

你写这样的安装时要很小心的,VB6是和可以依赖于自1998年一样的uxtheme.dll,实现可视化的重要操作系统DLL已更新很多次的操作系统组件样式。让您的安装程序覆盖用户计算机上的现有安装程序是一件灾难性的事情。虽然它可能通过其文件系统保护功能受到Windows的保护,但这些功能已被添加为防止损坏的安装程序的对策。

提供适当的建议在这里难以超越“不伤害”。像InstallShield或Wise这样的商业安装程序(当时我很喜欢)是避免拍摄客户腿部的最佳方法。相当肯定他们仍然支持VB6安装。 Microsoft为VB6提供了预安装的安装程序,可安装所有核心的vb6运行时组件。你可以download it here

+3

这就是答案#8888对我来说:) – 2012-03-18 21:13:23

+0

嗨,当执行与维生素B6工具包装我有一个DLL列表不能被正确引用的窗口:COMDLG32.OCX DAO360.DLL DBGRID32.OCX DBLIST32 .OCX EXCEL.EXE MSADO20.TLB MSADODC.OCX MSBIND.dll MSCHRT20.OCX MSDATGRD.OCX MSDATLST.OCX MSDATREP.OCX MSDBRPTR.DLL MSHFLXGD.OCX MSSTDFMT.DLL vstoee90.tlb VSTOEXCEL2003Adaptor.dll – 2012-03-26 22:19:49

0

您应该始终仔细检查并验证您认为您的应用程序需要的任何依赖关系。 您提到的所有文件都是系统DLL,不得分发。

对于VB6应用程序,您需要基本运行时以及您明确参考/使用的任何DLL,当且仅当您有这些DLL的作者的许可,以及有关安装它们的正确过程和位置的说明。

对于标准的Microsoft提供的OCX文件,通常只需要将这些文件复制到system32文件夹并进行注册。 有关更多详细信息,请参阅Visual Studio安装根目录中的redist.txt。