2016-01-29 87 views
0

我该如何处理这种情况,用户的机器可能没有像msvcp100.dll,msvcp100.dll这样的DLL?我不希望我的软件不安装在用户的机器上,因为这种错误。我一直在想要找到一个工具,并将每一个需要的DLL复制到可执行文件运行或尝试构建一个static version of Qt(最终可能有相同的结果)。我见过没有提供这些dll的应用程序,它取决于用户获取它们,安装等。这可能是这些用户的问题,找到正确的DLL匹配版本和所有。我想避免它。如何处理丢失的DLL如msvcp100.dll,msvcp100.dll?

这通常如何解决在现实世界的应用程序?

+0

我为我的每个Qt应用程序创建一个NSIS安装程序,并将Visual Studio可再发行组件作为安装的可选组件。尽管我的Qt版本是基于CMake的。 – drescherjm

回答

1

部署Qt应用程序是不安的问题。你应该明白你需要重新分配一个编译器的dll,以及Qt dll。对于msvc 2010编译器,您可以将msvcp100.dllmsvcr100.dll文件放在可执行文件附近。
对于Qt,Windows部署的最简单方法是使用windeployqt命令提示符util。

更新。这通常在实际应用中如何解决?
没有全自动工具,它可以确定所有的依赖项,因为应用程序的部署是一项复杂的任务。例如,你的应用程序可以依靠很多东西,如库DLL,编译器的DLL,注册表项,驱动程序,环境变量,计算机重新启动要求,ActiveX/COM组件,其他已安装的应用程序等...
但有些工具可以帮助你解决这个问题。 对于目标项目,他们可以配置一次,然后一直工作。这叫做Build Automation,另一个相似的概念是Continuous Integration
对于最终用户创建安装包,有很多的工具,如Nullsoft Scriptable Install SystemInno SetupQt Installer FrameworkWiX等...
List of installation software

+0

我在帖子中提到的dll只是一个例子。我正在考虑找一个工具来自动完成这项工作。我只是想知道其他人是如何做到的。我已经使用windeployqt,但它不会复制我提到的ms * dll。我是否错过了某些东西或util只关注Qt的dll? – Jack

+0

@Jack我已经更新了答案 –

0

安装程序脚本,提供一个命令来下载应用程序需要运行的dll,并在应用程序源代码中将它放在运行该文件夹的文件夹中仅用于dll 如果您使用的是NSI安装程序,使用这个example