Установщик .NET 4.0 оставляет мою машину в полуразрушенном состоянии - PullRequest
0 голосов
/ 25 августа 2010

Я столкнулся с действительно интересной проблемой установщика .NET 4.0. У меня есть небольшая программа, предназначенная для .NET 2.0. Я использую Win7 x64 с предустановленной .NET 3.5. После установки .NET 4.0 программа перестает работать. Он пытается использовать функцию, которая устарела в .NET 4.0, но согласно различным статьям , которые я прочитал, технология параллельного выполнения .NET 4.0 должен позволить моей программе продолжить работу на .NET 2.0 CLR.

Похоже, что .NET 4 установщик оставляет мой компьютер в несколько неисправном состоянии, даже если установщик успешно завершает работу. Версия mscoree.dll (основная DLL-библиотека времени выполнения .NET), установленная в c: \ windows \ system32 и c: \ windows \ syswow64, была версией 2.x после установки .NET 4.0. Я попытался просто скопировать правильно установленные 4.0 mscoree.dll с другого компьютера, на котором был запущен точно такой же установщик, и после этого моя программа работала как надо.

Я не могу точно определить, почему это происходит, и почему я могу воспроизвести его только на одной машине. К счастью, я могу воспроизвести проблему очень надежно. Удаление .NET 4 также решает проблему, но я хотел бы иметь возможность успешно выполнять мой код, не предлагая пользователям не устанавливать .NET 4.0.

Есть мысли о том, почему это может происходить? Спасибо!

1 Ответ

0 голосов
/ 29 августа 2010

Я связался с несколькими сотрудниками Microsoft и получил очень интересную информацию.

Моя ОС: v6.1.7600.16384 RTM-сборка для Win7: 6.1.7600.16385

Я запускаю сборку Win7 до RTM.В Windows 7 файл mscoree.dll обновляется с помощью обновления ОС, цепочка которого устанавливается установщиком .NET 4.По словам людей, с которыми я разговаривал: «Обновление ОС на самом деле явно предназначено для RTM-версии Windows 7 и будет встроено во все будущие SP. Оно возвращает« не применимо »возвращаемое значение нашему установщику, которое предназначено дляозначает, что обновление уже установлено или встроено в операционную систему. Вот почему установщик .NET успешно завершился. "

Таким образом, похоже, что обновление до сборки RTM решит эту проблему.

...