1

I have recently graduated to VS 2015. For reasons explained below, I want to avoid running the VC++ Redistributables installer. I am including the prescribed DLLs in my installer, for an "app local" installation:

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

This seems to work. My app runs when installed thus on a "virgin" PC.

My question is, where do I find msvcr140.dll?

It is mentioned here: https://www.visualstudio.com/license-terms/mt228262/. I cannot find it anywhere when searching all directories on a PC where VC Redistributables has been installed. Does it exist? Is Windows concealing it?


Note 1: Why I need to avoid the MS VC++ Redistributables installer:

  • It shows up as a separate install in my WiX installer. It is very confusing for my market demographic (consumers).
  • When my software is uninstalled, it is also necessary to uninstall VC Redist., which can lead to complications.
  • In a couple of instances, there has been some sort of screw-up that has rendered the PC inoperable. I suspect repeated VC Redist installs. What happens is that a Standard User is no longer able to start any programs.
  • VC Redist. has bloated my installer from 25MB to 40MB, an extra 15MB. By picking which components I need, I trimmed it by 10 MB.
  • WiX code to test for prior versions is complex, arcane and inscrutable.
  • Yes, I understand about the benefits of automatic updating of Windows DLLs. However, a PC with out-of-date DLLs is better than a PC that is unusable.

Note 2: I can't do a static link, my app is a mixed bag of Win32 and MFC DLLs, I get linker errors.

Pierre
  • 4,114
  • 2
  • 34
  • 39
  • Another option is to install the c++ runtime files via a mergemodule (from Program Files [(x86)]\Common Files\Merge Modules): https://msdn.microsoft.com/en-us/library/ms235299.aspx – Morten Frederiksen May 09 '17 at 17:11
  • Morten Frederiksen Thanks for the reply. What are Merge Modules? How do I use them with WiX? Wouldn't I be running the same risk of corrupting the system? – Pierre May 09 '17 at 17:36
  • 1
    Here's a guide on how to include a mergemodule in your WiX code: http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/install_vcredist.html – Morten Frederiksen May 09 '17 at 17:39
  • 1
    Merge module won't gain you anything over the separate VC redist installer. It's still more bloat than including only needed DLLs and it updates system DLLs. – zett42 May 09 '17 at 17:44
  • Thanks for the link Morten Frederiksen. zett42: That's a deal breaker :o) – Pierre May 09 '17 at 18:37

1 Answers1

3

It appears that the "msvcr140.dll" is "missing" because of the introduction of the Universal CRT in Visual Studio 2015.

See also this answer and this one.

Looking inside the official merge module located at Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x64.msm, the Visual C++ 2015 CRT consists of these files:

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
Community
  • 1
  • 1
zett42
  • 25,437
  • 3
  • 35
  • 72
  • Honest zett42 this is all I see in "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT": concrt140.dll msvcp140.dll vccorlib140.dll vcruntime140.dll. There is no "msvcR140.dll". There used to be in VS2010, but alas no more. – Pierre May 09 '17 at 18:34
  • @Pierre I should have actually looked into this folder. But I found the explanation why this DLL appears to be missing, see updated answer. – zett42 May 09 '17 at 19:13
  • I found them in "C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86\". I see that Firefox and Tortoise/SVN include the whole api-ms-win-*.dll set in their installation directory. Well, if it's good enough for them ... – Pierre May 09 '17 at 20:34