Помилка 0x80092004 при установке.NET Framework в Windows Server 2012 R2

Зіткнувся з помилкою 0x80092004 - Can not find object or property (Об'єкт або властивість не знайдено) при установці .NET Framework 4.7.2 за допомогою онлайн і оффлайн установників в Windows Server 2012 R2. При цьому в журналі подій фіксується помилка "Could not find the hash of component: NetFx4-PenIMC". Досить довго шукав рішення цієї проблеми. Як виявилася, проблема пов'язана з наявністю помилки в уже встановленому на сервері компоненті .Net Framework 3.5 (або в його оновлення), через яку в свою чергу вже не встановлюється .NET 4.7.2. Знайшлося зовсім неочевидне рішення, яке допомогло мені, залишу його тут.

Для виправлення помилки 0x80092004 (CRYPT_E_NOT_FOUND) необхідно вручну завантажити пакети оновлень для .NET Framework з каталогу оновлень Microsoft.

  1. Перейдіть в https://www.catalog.update.microsoft.com і знайдіть поновлення KB4340558;
  2. скачайте оновлення 2018-07 Security and Quality Rollup for .NET Framework 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 for Windows 8.1 and Server 2012 R2 for x64 (KB4340558);
  3. Вам буде запропоновано завантажити 3 MSU файлу. Скачайте їх все і помістіть в папку c: \ Distr \ update:
    windows8.1-kb4338415-x64_cc34d1c48e0cc2a92f3c340ad9a0c927eb3ec2d1.msu
    windows8.1-kb4338419-x64_4d257a38e38b6b8e3d9e4763dba2ae7506b2754d.msu
    windows8.1-kb4338424-x64_e3d28f90c6b9dd7e80217b6fb0869e7b6dfe6738.msu

  4. Тепер потрібно розпакувати MSU файли за допомогою команди:
    expand -f: * c: \ Distr \ update \ *. msu c: \ Distr \ update \ extract
  5. У каталозі C: ​​\ Distr \ update \ extract з'явиться кілька файлів. Нам потрібні тільки CAB файли. Інтегруйте CAB поновлення в онлайн образ вашого Windows Server 2012 R2 за допомогою DISM (якщо комп'ютер запросить перезавантаження, виконайте її):
    dism / online / add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338415-x64.cab "
    dism / online / add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338419-x64.cab "
    dism / online / add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338424-x64.cab "
    dism / online / add-package /packagepath:"C:\Distr\update\extract\WSUSSCAN.cab "
  6. Якщо при установці будь-якого CAB пакета через DISM з'являється помилка 0x80092004, виконайте видалення цього поновлення командою (наприклад, помилка з'явилася при видаленні KB4338419):dism / online / remove-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338419-x64.cab "

    А потім ще раз встановіть цей же CAB пакет командою:

    dism / online / add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338419-x64.cab "

    У моєму випадку оновлення KB4338419 довелося ставити і видаляти 2 рази поспіль, поки помилка 0x80092004 не зникла.

  7. Перезавантажте сервер і спробуйте встановити .Net 4.7.2 - він повинен встановитися без помилок. Вам залишилося видалити файли з каталогу C: \ Distr \ update \.

Очевидно, що на Windows 8.1 ця проблема вирішується аналогічно.