KB2465367 и сторонние библиотеки

#visual-c

#visual-c

Вопрос:

Я использую сторонние библиотеки, которые я приобрел задолго до выхода KB2465367. Мой компьютер для разработки был обновлен на KB2465367, поэтому все двоичные файлы, которые я генерирую, похоже, теперь зависят от 8.0.50727.5592 CRT (версия CRT 2465367).

Теперь, когда я хочу развернуть это приложение, я использую модуль слияния CRT 8.0 (также обновленный 2465367). Это устанавливает версии библиотек MSVC 8.0.50727.5592 (например msvcrt80.dll ).

Но, когда я запускаю свое приложение на компьютере, на котором никогда не была установлена среда выполнения VC, оно выдает сообщение о том, что «Этому приложению не удалось запуститься из-за неправильной конфигурации приложения. Переустановка приложения может устранить эту проблему «. Я проследил это до системной записи в журнале событий: «Не удалось сгенерировать контекст активации для C:Program FilesMyCompanyMyApp.exe . Справочное сообщение об ошибке: операция успешно завершена «. под исходным кодом «SideBySide».

Конечно, это обновление в основном означало, что я в тупике.

Как мне действовать дальше? Нужно ли моим клиентам устанавливать версию CRT 8.0.50608.0 после установки моего приложения, потому что сторонним библиотекам требуется 8.0.50608.0, а MSM, который я использовал, ее не включал?


В моих обстоятельствах я использую Как установить Visual C , распространяемый с помощью вашего установщика, который описывает только использование одного MSM. Рекомендуется также использовать политику MSM для перенаправления любых библиотек DLL, зависящих от более старых версий среды выполнения. Смотрите также http://lynk.at/jlqsKx

Ответ №1:

То же самое произошло, когда MS выпустила KB971090.
Простым решением является удаление KB2465367.

Вы можете получить дополнительную информацию о KB971090 и KB2465367 здесь.

Ответ №2:

В исправлении есть ошибка с неинициализированными данными, которая может привести к сбою загрузки DLL.

Комментарии:

1. Это побочная проблема, поскольку моя сторонняя библиотека DLL зависит от версии msvc, которая недоступна. Пока ничего не запускается; таким образом, он не может получить доступ к какому-либо коду с потенциальной ошибкой в нем.

Ответ №3:

Ваша программа установки должна использовать два модуля слияния:

  1. Библиотеки среды выполнения и
  2. Файл политики, который перенаправляет все старые версии среды выполнения на новую версию.

Распространяемый пакет vcredist_xxx.exe устанавливает как последнюю версию библиотек, так и файлы политики.


Нельзя предполагать, что библиотеки VC доступны на компьютерах пользователей, поэтому их всегда приходится устанавливать. В противном случае ваше приложение не будет запущено.