Где находится msvcR140.dll? Он существует?

Недавно я перешел на VS 2015. По причинам, описанным ниже, я хочу избежать запуска установщика распространяемых пакетов VC++. Я включаю предписанные библиотеки DLL в свой установщик для «локальной» установки приложения:

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

Кажется, это работает. Мое приложение запускается, когда оно установлено таким образом на «девственном» ПК.

Мой вопрос: где мне найти msvcr140.dll?

Это упоминается здесь: https://www.visualstudio.com/license-terms/mt228262/ . Я не могу найти его нигде при поиске во всех каталогах на ПК, где установлен VC Redistributables. Он существует? Windows скрывает это?


Примечание 1. Почему мне нужно избегать установщика MS VC++ Redistributables:

  • Он отображается как отдельная установка в моем установщике WiX. Это очень сбивает с толку мою рыночную демографию (потребителей).
  • Когда мое программное обеспечение удаляется, также необходимо удалить VC Redist., что может привести к осложнениям.
  • В нескольких случаях произошел какой-то сбой, из-за которого ПК вышел из строя. Я подозреваю повторные установки VC Redist. Что происходит, так это то, что стандартный пользователь больше не может запускать какие-либо программы.
  • Редист ВК. раздул мой установщик с 25 МБ до 40 МБ, дополнительные 15 МБ. Выбрав нужные мне компоненты, я урезал его на 10 МБ.
  • Код WiX для тестирования предыдущих версий сложен, загадочен и непостижим.
  • Да, я понимаю преимущества автоматического обновления Windows DLL. Однако ПК с устаревшими DLL лучше ПК, который непригоден для использования.

Примечание 2: я не могу сделать статическую ссылку, мое приложение представляет собой смесь Win32 и MFC DLL, я получаю ошибки компоновщика.


person Pierre    schedule 09.05.2017    source источник
comment
Другой вариант — установить файлы среды выполнения C++ через модуль слияния (из Program Files [(x86)]\Common Files\Merge Modules): msdn.microsoft.com/en-us/library/ms235299.aspx   -  person Morten Frederiksen    schedule 09.05.2017
comment
Мортен Фредериксен Спасибо за ответ. Что такое модули слияния? Как мне использовать их с WiX? Разве я не подвергаюсь такому же риску повреждения системы?   -  person Pierre    schedule 09.05.2017
comment
Вот руководство о том, как включить модуль слияния в код WiX: wixtoolset. org/documentation/manual/v3/howtos/   -  person Morten Frederiksen    schedule 09.05.2017
comment
Модуль слияния не даст вам ничего по сравнению с отдельным установщиком редистинга VC. Это все еще больше, чем включение только необходимых DLL, и оно обновляет системные DLL.   -  person zett42    schedule 09.05.2017
comment
Спасибо за ссылку Мортен Фредериксен. zett42: Это нарушение условий сделки :о)   -  person Pierre    schedule 09.05.2017


Ответы (1)


Похоже, что «msvcr140.dll» «отсутствует» из-за введение универсальной CRT в Visual Studio 2015.

См. также этот ответ и это один.

Если заглянуть внутрь официального модуля слияния, расположенного по адресу Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x64.msm, CRT Visual C++ 2015 состоит из следующих файлов:

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
person zett42    schedule 09.05.2017
comment
Честное слово 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, но увы больше нет. - person Pierre; 09.05.2017
comment
@Pierre Я должен был заглянуть в эту папку. Но я нашел объяснение, почему эта DLL отсутствует, см. обновленный ответ. - person zett42; 09.05.2017
comment
Я нашел их в C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86\. Я вижу, что Firefox и Tortoise/SVN включают весь набор api-ms-win-*.dll в свой установочный каталог. Ну, если им это достаточно... - person Pierre; 09.05.2017