Не вдається встановити Windows SDK 7.1 на Windows 10


77

Я розробник програмного забезпечення на ПК з Windows 10. Я повинен підтримувати деяке старіше програмне забезпечення, написане у Visual Studio 2010 за допомогою Windows SDK 7.1

Намагаючись налаштувати середовище розробки, я успішно встановив VS2010 і прийшов встановити Windows SDK 7.1, однак інсталятор видає помилку:

Деякі компоненти неможливо встановити

Деякі компоненти Windows SDK потребують RTM .NET Framework 4. Налаштування виявило попередню версію .NET Framework 4. Якщо продовжити налаштування, ці компоненти не буде встановлено. Якщо ви хочете встановити ці компоненти, натисніть кнопку Скасувати, а потім встановіть .NET Framework 4 з http://go.microsoft.com/fwlink/?LinkID=187668, а потім повторно запустіть програму інсталяції.

Однак Windows 10 поставляється з .NET 4.5, тому, наскільки я можу зрозуміти, існує ще одна проблема перевірки версії.

Мене це не буде так турбувати, але при спробі встановити оновлення компілятора Visual Studio 2010 це не вдається, кажучи:

не вдається встановити, оскільки windows sdk 7.1 не знайдено

Спроба встановити .NET 4 не вдається, оскільки виявляє пізнішу версію .NET.


1
Зауважимо - Windows 10 поставляється з .NET 4.6, а не .NET 4.5 - див. Msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx
NextInLine

Відповіді:


27

Відповідь @ dougg3 сценарій:

Спочатку встановіть SubInAcl, можна завантажити з Microsoft тут . Можливо, вам доведеться додати його до свого PATH, наприклад:set PATH=%PATH%;C:\Program Files (x86)\Windows Resource Kits\Tools

Потім виконайте ці команди у підказці cmd із підвищеним рівнем:

for /f "tokens=2*" %%a in ('reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client" /v Version /reg:32') do set "CurrentNDPv4ClientVersion=%%~b"
for /f "tokens=2*" %%a in ('reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /reg:32') do set "CurrentNDPv4FullVersion=%%~b"
subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /setowner="%username%"
subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /grant="%username%"=f
reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /t REG_SZ /d 4.0.30319 /reg:32 /f
reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client" /v Version /t REG_SZ /d 4.0.30319 /reg:32 /f

echo start your installer now
pause

reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client" /v Version /t REG_SZ /d %CurrentNDPv4ClientVersion% /reg:32 /f
reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /t REG_SZ /d %CurrentNDPv4FullVersion% /reg:32 /f

subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /revoke="%username%"
subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /setowner="NT SERVICE\TrustedInstaller"

Приємно! Слід зазначити, що номер версії .NET у реєстрі змінився з моєї початкової відповіді, і моя версія в даний час також не відповідає версії в цій відповіді - тому для тих, хто планує запустити цей сценарій, було б, мабуть, найкращим спочатку перевірити реєстр і змінити сценарій на відповідність.
dougg3

Відредаговано для врахування зауваження @ dougg3, збереження версії у змінній та відновлення до того ж значення
janv8000

1
reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /t REG_SZ /d %CurrentNDPv4ClientVersion% /reg:32 /f- не повинно бути %CurrentNDPv4FullVersion%? На моїй машині він має таке саме значення ...
Лукас З.

Тут теж працював. Не забудьте спочатку видалити VS ++ 2010 Redistributables, як зазначено у відповіді Джеремі.
mklein9

На жаль, якщо ваше ім’я користувача містить пробіл, це не вдасться. Тож замініть% username% на "% username%". Також у моїй установці WIndows 10 subinacl.exe там не було, мені довелося завантажити його тут: microsoft.com/en-us/download/confirmation.aspx?id=23510
Arya S.

86

Я наткнувся на ще одне обхідне рішення, яке я також розмістив у потоці msdn :

  1. Спочатку видаліть усі розповсюджувані Visual C ++ 2010 з панелі керування.

  2. Завантажте відповідний офлайн-образ ISO із архіву Windows SDK. Тут перераховано, який ISO є.

  3. Після монтажу зображення відкрийте F: \ Setup \ SDKSetup.exe безпосередньо.


3
Для мене це нічого не змінює: не вдається встановити компілятори C ++ :( Допис від @ dougg3 зробив трюк.
CedX,

@ CédricBelin та сама проблема, чи є у вас якесь рішення цієї проблеми?
xavierzhao

2
@xavierzhao Нарешті скористався інструкціями зі сховища Nodegyp та встановив Visual C ++ Build Tools .
CedX

1
Це спрацювало і для мене, але спочатку мені довелося видалити .Net 4.6.2 та встановити 4.0 знову.
Mattia72

10
Дякую, працював у мене. Однак слід зауважити одне: подбайте про те, щоб завантажити відповідний ISO для вашої системи. Сторінка завантаження містить 3 файли, без пояснення щодо них. GRMSDK_EN_DVD.isoце для x86, GRMSDKX_EN_DVD.isoце для x64, і я припускаю, що GRMSDKIAI_EN_DVD.isoце для Itanium.
Thomas Levesque

77

Я просто зіткнувся з цією ж проблемою. Поняття не маю, наскільки це насправді безпечно робити, але я зміг обійти це, тимчасово обдуривши програму встановлення, думаючи, що у мене інша версія .NET 4.0. Я відкрив Process Monitor і використовував його для моніторингу всього, що робив setup.exe, щоб з'ясувати, як визначає, що у мене є "попередня версія" .NET 4.0.

Виявляється, він розглядає ці два рядки в реєстрі:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client\Version
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full\Version

На моїй машині з Windows 10 це наразі обидва 4.6.00079. Схоже, це значення не подобається програмі встановлення. Я тимчасово замінив їх обох на рядок 4.0.30319у regedit, щоб відповідати значенню з InstallPath, і це, здавалося, вдало. І звичайно, коли я закінчив, я повернув їх такими, якими вони були спочатку.

Однак я не мав дозволу змінювати ці значення, тому це було трохи хитро. Я клацнув правою кнопкою миші на Clientклавіші, вибрав Дозволи та натиснув Додатково. Потім я змінив власника на свій обліковий запис користувача замість TrustedInstaller. Це дозволило мені додати дозволи на Повний контроль для себе, щоб я міг змінити Versionзначення. Я повторив той самий процес на Fullключі. Після успішного завершення програми установки я повернув початкові значення версії назад у ( 4.6.00079), видалив дозволи, які додав для себе, і відновив власника до TrustedInstaller (для цього введіть NT SERVICE\TrustedInstallerяк ім’я користувача).

Можливо, існує більш безпечний / простий спосіб перехоплення читань реєстру, ніж насправді модифікація реєстру, але це було для мене досить просто!


Я не біля машини win10 до наступного тижня, але це для мене добре звучить.
Грег

Я змінив обидва значення і все одно отримую однакову помилку при спробі встановити dotNetFx40_Full_setup.exe. Це виправлення реєстру не вирішує проблему для мене.
Арво Боуен

2
@ArvoBowen Злом реєстру не допомагає встановити .NET 4.0; це дозволяє встановити Windows SDK 7.1. Вам не потрібно запускати dotNetFx40_Full_setup.exe, оскільки в Windows 10 уже встановлено .NET 4.
dougg3

@ dougg3 Я нарешті щойно встановив SDK безпосередньо, не змінюючи жодних ключів реєстру. Але в повідомленні сказано ...require the RTM .NET Framework 4. Setup detected a pre-release version of the .NET Framework 4. Тож я думав, якщо він виявить "попередній випуск", я хотів би встановити "стандартний" випуск .Net 4. Але мені вдалося його встановити, пройшовши цей шлях stackoverflow.com/a/32534158/1039753 дякую !
Арво Боуен,

5

Чудова відповідь від Dougg3 вище. Щоб це допомогло іншим, я пройшов процес і зробив кілька знімків екрану на випадок, якщо це комусь допоможе. У мене є 64-розрядна Windows 10.

Це шлях редагування файлу reg, на який посилався Дагг. Ths Тут натисніть кнопку Додатково

введіть тут опис зображення

Там, де вгорі вказано Власник, натисніть посилання Змінити введіть тут опис зображення

Наступне зображення має два кроки - спочатку клацніть на Додатково з "Вибрати користувача або групу", а потім натисніть кнопку Знайти зараз на наступному діалозі, який має той самий заголовок. введіть тут опис зображення

Знайдіть користувача, якому потрібно змінити власника, і натисніть кнопку ОК введіть тут опис зображення

Натисніть ОК на наступній сторінці

введіть тут опис зображення

Перейдіть до свого користувача, якого ви щойно вибрали в попередніх діалогах, потім виберіть Дозволити повний контроль, а потім натисніть кнопку ОК введіть тут опис зображення

Тепер ви можете редагувати версію. введіть тут опис зображення

Після того, як ви закінчите з цим, поверніть номер версії до попереднього і скасуйте надання повного контролю для цього реєстру.


Я знаю, що цій оригінальній публікації було пару років, але на цьому тижні я зіткнувся з цією ж проблемою і знайшов його публікацію, яка допоможе правильно встановити Windows SDK, що дозволило мені створити Kit в QT.
CAM_344

1
NT SERVICE\TrustedInstallerце ім’я первісного власника. Я повертаю це до того, коли я закінчив. Вам потрібно ввести повне ім’я (не тільки TrustedInstaller), щоб Windows знала, про що ви говорите. Вам також не потрібно застосовувати дозволи / право власності рекурсивно, щоб обдурити інсталятор на роботу.
Мерлін Морган-Грем

2

Встановіть SDK 7.1 на свій комп’ютер, він здебільшого зазнає збоїв у додатках компілятора, але спочатку це потрібно.

Тепер встановіть цей компілятор від Microsoft:

http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4422

Потім він встановить компілятор і зробить можливим використання компілятора.


Зверніть увагу, що на першому кроці (встановіть SDK 7.1) діалогове вікно все ще відображається, а компілятор C ++ все ще неактивний. Також: компілятор C ++ є в C:\Program Files\Microsoft Visual Studio 10.0\VC\bin.
user202729

0

завантажити exe - -. змінити розширення з "exe" на "zip". витягніть файл зараз. запустіть SDKSetup.exe з каталогу / Setup



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.