我来自Linux背景,但我想在Windows上提供我的软件版本。对于用户运行我的程序,他们将需要Visual C ++可再发行组件。我想将它作为一揽子计划的一部分提供给他们。
我担心的是,将来会有Visual Studio 2008 Redistributable的SP2。如果我向他们提供SP1,或者让他们自己安装它,它会破坏未来工具可能需要的更高版本的dll吗?
是否有任何指示要求用户确保他们不这样做?
我当然不想通过给他们错误的指示搞砸某人的机器或其他应用程序。
除了可再发行的exe之外,我打算将我的工具作为zip文件提供,他们可以将它们提取到他们喜欢的任何目录中,所以我不打算提供安装程序。
答案 0 :(得分:7)
使用VS 2008,可以显示运行时并将并排安装。因此,如果您的应用程序链接到SP1的运行时,它将仅与SP1运行时一起运行(除非清单明确指示应该覆盖Sp1版本)。
所以你受到了这种类型的DLL地狱的保护,以换取另一种(用户必须安装了SP1可再发行组件)。
答案 1 :(得分:7)
为什么不静态链接并完全避免这个问题?
答案 2 :(得分:3)
VC ++可再发行组件可以并排安装,可以和平共存。
这是MSDN docs about the VC++ redistributables的页面。 MSDN的整个部署部分应该具有指导意义。
答案 3 :(得分:2)
正如人们所说,它们是并排安装的。如果您使用Visual Studio的安装程序项目类型,则可以选择包含CRT可再发行组件,并且它将正确设置以便您随应用程序一起安装和卸载。
特别是,它们已安装到\ Windows \ WinSxS目录中。
为了对并排的工作方式有所了解,请
cd %systemroot%\winsxs
dir /S msvc*.dll
你会看到人们放在你机器上的所有版本。