Ответ 1
Развертывание - это самостоятельная работа. И я ненавижу это, я ненавижу то, как вы должны писать установки в Windows.... Так что теперь чувствую себя лучше...
Вам нужен только один vcredist. Тот, на который линкер решил связать вашу программу. Если у вас установлен "Windows SDK", вы найдете фактический повторный набор в:
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86
Если вы установите все обновления, включая не важные, Microsoft обновит ваш список в этой папке!
Возможно, у вас есть исполняемый файл, который не хочет запускаться, вам нужен зависимый ходок. Инструмент, настолько полезный, что Microsoft пришлось удалить его из Visual Studio. Скачайте программу и откройте свой exe. Вам не нужно понимать, что на самом деле происходит. Пока во время открытия не появляется диалоговое окно, все в порядке, даже если в нижнем окне есть восклицательные знаки. Если в диалоговом окне появляется что-то вроде "Не удалось решить", чем смотреть в нижнем окне. Обычно в нижнем окне есть что-то вроде msscr.dll или msvcr100.dll или msvcr110.dll. Если он содержит "d" перед расширением типа "msvcr100d.dll", исполняемый файл был скомпилирован в режиме отладки, и ваше путешествие заканчивается в системе без установленного компилятора. Если нет, имя сообщает вам, какой vcredist вам нужен:
msvcr100 = VS 2010 redist (32bit) (64 бит)
msvcr110 = VS 2012 redist (32/64bit?)
иногда это не msvcr, но всегда начинается с ms. Конечно, программа сообщит вам, что каждая dll отсутствует, а не только микрософт и какая команда в dll используется. Это иногда чрезвычайно полезно.
Вы должны сделать это с каждой dll в папке вашего исполняемого файла, так как они также могут иметь неразрешимые зависимости.
Вернемся к первому вопросу. Ваша программа может подключаться только к msvcr100 или msvcr110, а не к обоим, поэтому вам нужен только один vcredist для каждого исполняемого файла.
Как уже упоминалось в комментарии, сторонняя DLL может быть виновна в использовании другой версии msvcp. Так что да, вам нужно искать всю DLL, которую вы используете, и вам нужно установить оба vcredist несколько раз.
PS: всегда есть как минимум два из них: msvcr и msvcp.