0

我使用vs安装程序为我的vb6应用程序构建安装程序包。 和问题是我可以看到,在项目资源管理器下有一个依赖关系列表附加到我的exe文件。什么是依赖之间的差异,并手动添加一个dll/ocx vs安装程序6?

alt text http://img505.imageshack.us/img505/9696/croppercapture259lr8.png

和目标机器树视图中的文件系统下,我可以在DLL/OCX实际存储在一个文件夹或在windows系统文件夹本身[左窗口。

alt text http://img101.imageshack.us/img101/9224/croppercapture251qm1.png

所以我不明白的是..有实际区别吗? 如果我只是设置依赖关系,并没有将dll或ocx添加到文件夹或win sys文件夹,那么dll是否也会自动复制过来?

回答

1

不保证所有这些dll都会出现在安装软件的系统上。所以他们需要包含在你的安装程序中。从那里你有两个选择。

您可以将它们安装在Windows系统文件夹或应用程序文件夹中。不同之处在于,如果将它们安装在应用程序文件夹中,则可以在XP和Vista上进行设置,以便可以启动并运行具有不同版本组件的不同版本的软件。将它们安装到系统文件夹中会破坏依赖旧版组件的旧版本。

如果某个组件依赖于无法更新的其他组件,则在应用程序文件夹中安装很少不起作用。发生这种情况时,通常与Microsoft库一起使用。多年来,他们在这个问题上变得更好。

你可以阅读更多有关方执行涉及面here

最后的依赖需要在您的安装,使他们在Windows注册表中注册的问题。与大多数.NET程序集不同,即使使用CreateObject和Variant类型来访问它,任何ActiveX/COM应用程序都需要注册该组件。

我会承认整个过程是特殊的,并且是有关DLL地狱的故事的来源之一。从MSDN文章开始,使用wikipedia,当然还可以在这里提出更多问题。

0

对于普通安装程序包,通常应该没有“应用程序文件夹”下的“dll”文件夹,但涉及很多因素(私有标准DLL,免注册COM等)。是的,这些依赖包括在内(除非你的不包括他们)。他们每个人都应该拥有一个属性,确定他们在目标系统上的安装位置。

此列表中还有许多组件不是以这种方式重新分发的,因为它们是依赖于操作系统的系统组件,MDAC组件,或未经许可用于重新分发(例如fm20.dll)。

不幸的是,这是一个可以直接导致用户系统的DLL Hell的软件包类型的例子。解决这个问题可能意味着研究MS KB文章中的每个MS组件,以确定什么可以或应该重新分配以及如何重新分配。

部署可能是一个混乱的业务得到正确的。

相关问题