在 Windows 10 上安装 JDK - 由于 WBEM 库/WMI 库损坏导致 MsiEnumProducts 错误 1610

在 Windows 10 上安装 JDK - 由于 WBEM 库/WMI 库损坏导致 MsiEnumProducts 错误 1610

我无法在 x64 Windows 10 安装上安装 JDK 8 或从任何旧版本更新到最新版本。

在 Java 更新失败且没有任何错误消息后,

  • 我决定进行全新安装,并使用卸载程序删除所有旧版本,并手动删除剩余的目录和变量JAVA_HOME

  • 然后我下载了 JDK 安装程序。运行安装程序时,我没有收到任何错误消息,它只是悄无声息地失败了。

  • 我尝试了安全模式、管理员权限和/或不使用防病毒软件,但无济于事。

  • 查看了事件日志。它是德文的,这就是为什么我现在不会复制/粘贴它,但它基本上说jdk-8u65-windows-x64.exe失败并出现错误0x40000015,只是“未知软件异常”。
  • 然后我查看了 %TEMP%。在那里,在每个实例上,都会在中维护一个日志。我总是收到错误 。jdk-8u65-windows-
    x64.exe
    jusched.logMsiEnumProducts(75) failed with error=[1610]
  • 然后我查看了 Windows 中旧安装的任何残留物;我运行了旧的 Your Installer 版本的 AutoFix 来检查这些问题,还运行了 CCleaner 会话,但未发现重大错误。

  • 我还检查了是否有任何手动安装 JDK 8 x64 的好可能性,但没有找到任何真正有用的链接。然后我尝试使用 7-zip 解压安装程序。我将文件夹树解压到C:\Program Files\Java\jdk1.8.0_66\,然后再次设置JAVA_HOME,但当我尝试将 IntelliJ IDEA 指向该目录作为我的 JDK 时,它一直告诉我它“不是有效的 JDK 目录”(也不是任何子目录),尽管 Java 文件存在于中\bin。所以接下来我重新安装 JDK 6(成功),然后更新到 7(成功);但仍然像以前一样,更新到 JDK 8 失败。

    然后我尝试安装 JRE 而不是 JDK,但 JRE 8 失败的方式与 JDK 8 一样,没有任何可见的错误。jusched.log现在的错误日志与安装任何 JDK 之前都不同。
    以下是现在尝试安装 JDK 8 时显示的内容(我将裁剪掉所有看似没有产生错误的配置内容):

[2015/10/22 18:29:09.178,jdk-8u65-windows-x64.exe (PID: 6068,TID: 1808),MsiUtils.cpp:308 (msi:: anonymous-namespace'::makeMessage)] ERROR: Exception with message 'Resources.cpp(66) at Resource::getPtr(): cannot find resource (name='#259', type='#6'). System error [1814](system error 1814 (Der angegebene Ressourcenname wurde nicht in der Image-Datei gefunden))' caught [2015/10/22 18:29:09.179, jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808), JavaEnvironment.cpp:89 (anonymous-namespace':: getMsiProperty)] 错误:异常,消息“MsiUtils.cpp(268) at msi::Database::getProperty(): MsiViewFetch(C:\WINDOWS\Installer\1c487c.msi,SELECT Value FROM Property WHERE Property = 'FullVersion') 失败。捕获到 MSI 错误 [259]' [2015/10/22 18:29:09.179,jdk-8u65-windows-x64.exe(PID:6068,TID:1808),JavaEnvironment.cpp:451(anonymous-namespace'::getInstalledJava)] TRACE: InstalledJava(1.6.0_45|1.6.0_45|JDK|64bit|C:\Program Files\Java\jdk1.6.0_45|{64A3A4F4-B792-11D6-A78A-00B0D0160450}|-10) [2015/10/22 18:29:09.180, jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808), JavaEnvironment.cpp:489 (JavaEnvironment::detect)] TRACE: Installed Java detected: version=1.7.0; arch=64; productCode={64A3A4F4-B792-11D6-A78A-00B0D0170800}; type=1 [2015/10/22 18:29:09.180, jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808), JavaEnvironment.cpp:139 (anonymous-namespace'::detectHomeDir)] TRACE:查找 {64A3A4F4-B792-11D6-A78A-00B0D0170800} Java 安装的主目录 [2015/10/22 18:29:09.180,jdk-8u65-windows-x64.exe(PID:6068,TID:1808),JavaEnvironment.cpp:303(anonymous-namespace'::detectFullVersion)] TRACE: Detect full version of {64A3A4F4-B792-11D6-A78A-00B0D0170800} Java installation [2015/10/22 18:29:09.181, jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808), JavaEnvironment.cpp:214 (anonymous-namespace'::detectFullVersionFromMsi)] TRACE: detectFullVersionFromMsi({64A3A4F4-B792-11D6-A78A-00B0D0170800}) [2015/10/22 18:29:09.187,jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808),MsiUtils.cpp:308 (msi:: anonymous-namespace'::makeMessage)] ERROR: Exception with message 'Resources.cpp(66) at Resource::getPtr(): cannot find resource (name='#259', type='#6'). System error [1814](system error 1814 (Der angegebene Ressourcenname wurde nicht in der Image-Datei gefunden))' caught [2015/10/22 18:29:09.187, jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808), JavaEnvironment.cpp:89 (anonymous-namespace':: getMsiProperty)] 错误:异常,消息“MsiUtils.cpp(268) at msi::Database::getProperty(): MsiViewFetch(C:\WINDOWS\Installer\1c4882.msi, SELECT Value FROM Property WHERE Property = 'FullVersion') 失败。 MSI 错误 [259]' 捕获 [2015/10/22 18:29:09.188,jdk-8u65-windows-x64.exe(PID:6068,TID:1808),JavaEnvironment.cpp:451(`anonymous-namespace'::getInstalledJava)] TRACE:InstalledJava(1.7.0_80|1.7.0_80|JDK|64bit|C:\Program Files\Java\jdk1.7.0_80|{64A3A4F4-B792-11D6-A78A-00B0D0170800}|-10)

并尝试安装 JRE 8:

[2015/10/22 18:31:56.888, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:472 (JavaEnvironment::detect)]
    TRACE: Entering JavaEnvironment::detect
[2015/10/22 18:31:56.929, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:489 (JavaEnvironment::detect)]
    TRACE: Installed Java detected: version=1.7.0_80; arch=64; productCode={26A24AE4-039D-4CA4-87B4-2F06417080FF}; type=0
[2015/10/22 18:31:56.931, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:139 (`anonymous-namespace'::detectHomeDir)]
    TRACE: Find home dir of {26A24AE4-039D-4CA4-87B4-2F06417080FF} Java installation
[2015/10/22 18:31:56.940, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:303 (`anonymous-namespace'::detectFullVersion)]
    TRACE: Detect full version of {26A24AE4-039D-4CA4-87B4-2F06417080FF} Java installation
[2015/10/22 18:31:56.940, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:214 (`anonymous-namespace'::detectFullVersionFromMsi)]
    TRACE: detectFullVersionFromMsi({26A24AE4-039D-4CA4-87B4-2F06417080FF})
[2015/10/22 18:31:56.948, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:327 (`anonymous-namespace'::detectJreMode)]
    TRACE: Detect mode of {26A24AE4-039D-4CA4-87B4-2F06417080FF} Java installation
[2015/10/22 18:31:56.949, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:451 (`anonymous-namespace'::getInstalledJava)]
    TRACE: InstalledJava(1.7.0_80-b15|1.7.0_80-b15|JRE|64bit|C:\Program Files\Java\jre7|{26A24AE4-039D-4CA4-87B4-2F06417080FF}|10)
[2015/10/22 18:31:56.950, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:489 (JavaEnvironment::detect)]
    TRACE: Installed Java detected: version=1.6.0_45; arch=64; productCode={26A24AE4-039D-4CA4-87B4-2F86416045FF}; type=0
[2015/10/22 18:31:56.951, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:139 (`anonymous-namespace'::detectHomeDir)]
    TRACE: Find home dir of {26A24AE4-039D-4CA4-87B4-2F86416045FF} Java installation
[2015/10/22 18:31:56.956, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:303 (`anonymous-namespace'::detectFullVersion)]
    TRACE: Detect full version of {26A24AE4-039D-4CA4-87B4-2F86416045FF} Java installation
[2015/10/22 18:31:56.956, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:214 (`anonymous-namespace'::detectFullVersionFromMsi)]
    TRACE: detectFullVersionFromMsi({26A24AE4-039D-4CA4-87B4-2F86416045FF})
[2015/10/22 18:31:56.963, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:327 (`anonymous-namespace'::detectJreMode)]
    TRACE: Detect mode of {26A24AE4-039D-4CA4-87B4-2F86416045FF} Java installation
[2015/10/22 18:31:56.964, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:451 (`anonymous-namespace'::getInstalledJava)]
    TRACE: InstalledJava(1.6.0_45-b06|1.6.0_45-b06|JRE|64bit|C:\Program Files\Java\jre6|{26A24AE4-039D-4CA4-87B4-2F86416045FF}|10)
[2015/10/22 18:31:56.964, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:489 (JavaEnvironment::detect)]
    TRACE: Installed Java detected: version=1.6.0; arch=64; productCode={64A3A4F4-B792-11D6-A78A-00B0D0160450}; type=1
[2015/10/22 18:31:56.965, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:489 (JavaEnvironment::detect)]
    TRACE: Installed Java detected: version=1.7.0; arch=64; productCode={64A3A4F4-B792-11D6-A78A-00B0D0170800}; type=1
[2015/10/22 18:31:56.968, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), JavaEnvironment.cpp:0 (JavaEnvironment::detect)]
    TRACE: Exiting JavaEnvironment::detect (entered at JavaEnvironment.cpp:472)
[2015/10/22 18:31:56.969, jre-8u65-windows-au.exe (PID: 9704, TID: 6008), jinstall.cpp:1392 (WinMain)]
    ERROR: Exception with message 'KnownProductCodeInstalledJavaTracker.cpp(205) at KnownProductCodeInstalledJavaTracker::next(): MsiEnumProducts(78) failed with error=[1610]' caught

因此,总而言之,安装失败是因为 MsiEnumProducts 似乎列出了一些安装,可能是一些旧的 Java 安装,但找不到,或者找不到安装程序。但我如何才能找出缺少的内容?或者哪个注册表项是多余的?我查找了提及 JDK 的注册表项,C:\Program Files\Java发现一些看似多余的,并删除了它们,但这也没有改变任何东西。

在网上和 SE 上,我发现很多问题都指向同一个问题,但很少有问题能解决(可能的)问题核心,即 MsiEnumProducts 故障。具体来说这些 在这个网站上。

对于这种棘手的情况有什么提示吗?

如果我不知道的话,我会说错误起源的提示是:

[2015/10/22 18:29:09.181, jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808), JavaEnvironment.cpp:214 (`anonymous-namespace'::detectFullVersionFromMsi)]
    TRACE: detectFullVersionFromMsi({64A3A4F4-B792-11D6-A78A-00B0D0170800})
[2015/10/22 18:29:09.187, jdk-8u65-windows-x64.exe (PID: 6068, TID: 1808), MsiUtils.cpp:308 (msi::`anonymous-namespace'::makeMessage)]
    ERROR: Exception with message 'Resources.cpp(66) at Resource::getPtr(): cannot find resource (name='#259', type='#6'). System error [1814](system error 1814 (Der angegebene Ressourcenname wurde nicht in der Image-Datei gefunden))' caught

因此,基本上,我的问题首先是,我如何找出#259 类型#6 是什么资源以及它在哪里注册?

答案1

我遇到了同样的问题,发现我的产品列表 ( HKEY_CURRENT_USER\Software\Microsoft\Installer\Products) 已损坏。请务必检查它以及HKEY_CLASSES_ROOT\Installer\Products。如果有一些错误的 ID(例如带有下划线的 ID)可能会导致 Micorosoft Installer 报告ERROR_BAD_CONFIGURATION(1610)。

答案2

我无法及时找到问题的正确解决方案,而且在设备上运行 Java 8 的需求变得太迫切了,所以我不得不重新安装 Windows 10,之后一切都正常了。在此之前,我深入挖掘了一下:

  • 我发现在 Windows PowerShell 中它wmic product根本不起作用并且总是以“一般错误”退出,该错误在事件日志中记录为“一般错误”(我忘记了确切的错误号,但它并不具体)。

  • 我还尝试重建wbem子目录system32,它基本上是 Windows 的 WMI 存储库,借助本教程但这也没有解决问题

因此,总而言之,我可以说,JDK 安装期间的这种类型的失败是 WMI(Windows 管理规范)安装程序库损坏的症状,因此 JDK 使用的方法 MsiEnumProducts 会失败并出现一般错误。当您在 Windows wmic productPowershell 中输入以检查 WMI 产品库的状态时,即使没有安装 JDK,也可以重现此错误。因此,错误可能不是 JDK 安装所特有的,但此枚举的使用可能非常罕见,以至于错误通常很少对系统产生影响,因此很少报告。也许出于同样的原因,在我看来,到目前为止还没有真正的解决方案,所以我只能说,如果您在系统上遇到此错误,请节省您的时间并重新安装 Windows,这将比进一步评估此问题花费更少的时间。

至于这个问题的根源,恕我直言,很难说。我确实认为自己是一个高级用户,不时操纵注册表,在我认为需要的时候运行清理程序,等等,但这将是我使用 Windows 20 年来第一次真正破坏注册表,我甚至说不出是什么时候或用什么破坏的。在我看来,另一种可能是我从 Windows 8.1 升级到 Windows 10,没有进行干净的重新安装,而且我之前已经使用 Windows 8.1 很长一段时间了。我也遇到过如果在 Windows 10 升级期间存在 VPN 客户端,WiFi 会中断,并且如果由于一些深层次的不兼容性或不一致性而导致升级留下其他附带损害,我也不会感到惊讶。

[tl;dr] 如果您遇到上述错误,请重新安装 Windows 10,如果您确实需要使用 JDK 8 或者想要避免将来可能出现其他安装程序的问题,并且如果您不相信微软在不久的将来会针对损坏的 WMI 安装程序库提供神奇的修补程序。

相关内容