【问题标题】:What makes deployment successful for some users and unsuccessful for others?是什么让一些用户的部署成功而​​另一些用户却不成功?
【发布时间】:2011-01-04 17:33:16
【问题描述】:

我正在尝试使用安装和部署项目部署 Visual C++ 应用程序(使用 Microsoft Visual Studio 2008 开发)。安装后,某些目标计算机上的用户在启动应用程序可执行文件后会收到以下错误消息:“此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决问题。”安装后的另一个用户可以正常运行该应用程序。尽管在 Visual Studio 帮助文件和在线论坛上花费了几个小时(大多数帖子可以追溯到 2006 年),但我还是找不到这个问题的根本原因。 Stack Overflow 的人有什么建议吗?提前致谢。更多详细信息如下所示。

应用程序使用 FLTK 1.1.9 作为 GUI 库,以及一些 Boost 1.39 库(regex、lexical_cast、date_time、math)。

我确定我正在尝试部署应用程序的发布版本(而不是调试版本)。代码生成设置中的运行时库是多线程 DLL (/MD)。

myapp.exe 的依赖遍历器列出了以下 DLL:wsock32.dll、comctl32.dll、kernel32.dll、user32.dll、gdi32.dll、shell32.dll、ole32.dll、mvcp90.dll、msvcr90.dll .

在安装和部署项目中,我将以下 DLL 添加到目标计算机上的文件系统:fltkdlld.dll,以及名为 Microsoft.VC90.CRT 的文件夹,其中包含 msvcm90.dll、msvcp90.dll、mcvcr90.dll 和 Microsoft .VC90.CRT.manifest.

在收到错误消息的目标计算机上的安装过程需要先安装 .Net Framework 3.5。

有什么建议吗?提前致谢!

【问题讨论】:

    标签: visual-c++ deployment boost fltk


    【解决方案1】:

    将 Visual C++ Redistributable 添加到您的部署项目,并确保在安装时运行 Setup.exe 而不是 MSI。这将调用 VCRedist 引导程序,以确保您的 PC 在安装您的应用程序之前拥有这些部分。

    Dependency Walker 仅显示静态(链接时间)依赖关系 - 它不可能知道动态依赖关系,例如 COM 对象。

    【讨论】:

    • 嗨 - 感谢您的回复。在我上面的帖子中,我详细说明了我是如何拥有一个名为 Microsoft.VC90.CRT 的文件夹(在安装和部署项目中,在目标机器上的文件系统中),其中包含 msvcm90.dll、msvcp90.dll、mcvcr90.dll 和 Microsoft。 VC90.CRT.manifest。这不是您在回答中提到的 Visual C++ 可再发行组件吗?
    • 不一样,不。我担心这些 MSVCRT DLL 可能不是您所有依赖项的正确版本...要检查,在工作机器上,使用 Process Explorer 确定正在使用的 DLL 的完整列表并与您的版本进行比较'重新发货。在一台正常工作的机器上,可能安装了一些(晦涩的)东西,它提供了另一个版本的 DLL。
    • 好的。我将文件 vcredist_x86.exe 添加到安装和部署项目中。这就是您所说的“将 Visual C++ Redistributable 添加到您的部署项目”的意思吗?然后我要求目标机器上的用户运行新的 setup.exe(使用新的 *.msi),但错误消息仍然出现。有什么见解吗?
    • 好吧,我还是被卡住了。我进入了设置和部署项目的属性,并在先决条件中检查了 Visual C++ 运行时库 (x86)。它们确实安装在某些目标计算机上(当它们丢失时),但错误消息仍然存在。
    【解决方案2】:

    去年 ATL 安全更新后我遇到了类似的问题。我的应用需要比部署项目包含的更高版本的 C++ 运行时库。

    安装后尝试在目标机器上运行 Windows 更新,或直接下载并安装最新的(2009 年 7 月 28 日)C++ 可再发行包。

    http://support.microsoft.com/?kbid=973551

    这为我解决了问题。不过我还没有修复部署项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2016-05-01
      • 2020-04-28
      相关资源
      最近更新 更多