我开发了一个vb6程序,然后使用visual studio interdev构建了一个安装向导。
我使用“依赖性walker”和“进程资源管理器”找出丢失的DLL,但总是存在问题:
IESHIMS.DLL
WER.DLL
MPR.DLL
依赖步行者显示的这些dll。
当在另一台机器上安装程序时,我有以下错误消息:
uxtheme.dll failed to register
msdatsrc.tlb failed to register etc..
PS:在安装了visual studio的机器上没问题。
解决此问题的任何想法?
由于
答案 0 :(得分:6)
Dependency Walker不是解决VB6依赖关系的合适工具。它适用于使用隐式依赖项以C或C ++编写的DLL。虽然它没有跟上时间的步伐,但是存在于Windows并排缓存中的DLL或者是延迟加载的DLL都有问题。延迟加载是ieshims.dll等人生成警告的原因。
VB6使用COM,它使用LoadLibrary()动态加载DLL。除非使用“配置文件”选项,否则您将永远不会在Depends中看到这种依赖关系。这些DLL可以通过注册表找回,这是您需要编写安装程序并修改regsvr32.exe的原因。
在编写类似的安装程序时,你必须非常小心,VB6是旧并且可以依赖于自1998年以来已多次更新的操作系统组件。像uxtheme.dll,一个重要的操作系统实现视觉样式的DLL。让安装程序覆盖用户计算机上的现有安装程序是灾难性的。尽管它可能通过其文件系统保护功能受到Windows的保护,但这些功能已被添加为对抗破坏的安装程序的对策。
除了“不伤害”之外,提供适当的建议是困难的。像InstallShield或Wise这样的商业安装人员(当时我喜欢这种安装人员)是避免射击客户腿的最佳方法。相当确定他们仍然支持VB6安装。 Microsoft为VB6提供了一个预先安装的安装程序,可以安装所有核心vb6运行时组件。你可以download it here。
答案 1 :(得分:0)
您应该始终仔细检查并验证您认为应用程序需要的任何依赖项。 您提到的所有文件都是系统DLL,不得分发。
对于VB6应用程序,您需要基本运行时,以及您明确引用/使用的任何DLL,当且仅当您获得这些DLL的作者的许可以及有关安装它们的正确过程和位置的说明时。
对于标准的Microsoft提供的OCX文件,这些通常只需要复制到system32文件夹并注册。 有关详细信息,请参阅Visual Studio安装根目录中的redist.txt。