【问题标题】:Where is "msvcR140.dll"? Does it exist?“msvcR140.dll”在哪里?它存在吗?
【发布时间】:2017-05-09 15:12:28
【问题描述】:

我最近毕业于 VS 2015。由于下面解释的原因,我想避免运行 VC++ Redistributables 安装程序。我在我的安装程序中包含了规定的 DLL,用于“应用本地”安装:

MFC140.DLL
concrt140.dll
msvcp140.dll
vccorlib140.dll
vcruntime140.dll
mfc140u.dll
mfcm140u.dll

这似乎有效。因此,我的应用程序在“处女”PC 上安装时运行。

我的问题是,我在哪里可以找到msvcr140.dll

这里提到:https://www.visualstudio.com/license-terms/mt228262/。在安装了 VC Redistributables 的 PC 上搜索所有目录时,我无法在任何地方找到它。它存在吗? Windows 隐藏了吗?


注意 1:为什么我需要避免使用 MS VC++ Redistributables 安装程序:

  • 它在我的 WiX 安装程序中显示为单独安装。这让我的市场人口(消费者)感到非常困惑。
  • 卸载我的软件时,还需要卸载 VC Redist.,这会导致并发症。
  • 在某些情况下,出现了某种故障导致 PC 无法运行。我怀疑重复安装 VC Redist。发生的情况是标准用户不再能够启动任何程序。
  • VC Redist。我的安装程序从 25MB 膨胀到 40MB,额外增加了 15MB。通过选择我需要的组件,我将其缩减了 10 MB。
  • 用于测试先前版本的 WiX 代码复杂、神秘且难以理解。
  • 是的,我了解自动更新 Windows DLL 的好处。但是,具有过期 DLL 的 PC 比无法使用的 PC 要好。

注意 2:我不能做静态链接,我的应用是 Win32 和 MFC DLL 的混合包,我得到链接器错误。

【问题讨论】:

  • 另一种选择是通过合并模块安装 c++ 运行时文件(来自 Program Files [(x86)]\Common Files\Merge Modules):msdn.microsoft.com/en-us/library/ms235299.aspx
  • Morten Frederiksen 感谢您的回复。什么是合并模块?我如何将它们与 WiX 一起使用?我不会冒同样的损坏系统的风险吗?
  • 这里是关于如何在您的 WiX 代码中包含合并模块的指南:wixtoolset.org/documentation/manual/v3/howtos/…
  • 合并模块不会比单独的 VC redist 安装程序为您带来任何好处。它仍然比只包含所需的 DLL 更臃肿,而且它会更新系统 DLL。
  • 感谢 Morten Frederiksen 的链接。 zett42:这是一个交易破坏者:o)

标签: visual-studio-2015 wix vcredist


【解决方案1】:

由于 Visual Studio 2015 中的 introduction of the Universal CRT,“msvcr140.dll”似乎“丢失”。

另请参阅 this answerthis one

查看位于Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x64.msm 的官方合并模块,Visual C++ 2015 CRT 包含以下文件:

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-file-l1-2-0.dll
api-ms-win-core-file-l2-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-l1-2-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-string-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-timezone-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-crt-conio-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-multibyte-l1-1-0.dll
api-ms-win-crt-private-l1-1-0.dll
api-ms-win-crt-process-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
concrt140.dll
msvcp140.dll
ucrtbase.dll
vccorlib140.dll
vcruntime140.dll

【讨论】:

  • 诚实 zett42 这就是我在“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT”中看到的所有内容:concrt140.dll msvcp140.dll vccorlib140.dll vcruntime140.dll。没有“msvcR140.dll”。 VS2010中曾经有,可惜没有了。
  • @Pierre 我实际上应该查看这个文件夹。但我找到了为什么这个 DLL 似乎丢失的解释,请参阅更新的答案。
  • 我在“C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86\”中找到了它们。我看到 Firefox 和 Tortoise/SVN 在其安装目录中包含整个 api-ms-win-*.dll 集。好吧,如果这对他们来说足够好......
猜你喜欢
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 2011-04-04
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多