当 Chrome 为默认浏览器时,Java 7 更新 6 在 Windows 7 上安装失败

当 Chrome 为默认浏览器时,Java 7 更新 6 在 Windows 7 上安装失败

我正在为用户配置一个全新的联想 U410 系统,该系统搭载 Windows 7 Home Premium。我直接从商店收到该系统。作为配置的一部分,我使用在线安装程序安装了 Java。这工作正常。

后来,由于我的一个错误,我需要将系统恢复为出厂默认设置。出厂默认设置将格式化 C:\ 并恢复(据说)准确的出厂配置。但是,执行此操作后,我再也无法使用以前使用的方法成功安装 Java。

现在,每当我尝试使用在线 Java 安装程序时,都会发生以下情况。首先,总是会出现一个窗口“欢迎使用 Java”、“正在下载 Java 安装程序...”。不久之后,此窗口消失,然后发生以下三件事之一:

  1. 恢复出厂设置后第一次执行此操作时,我收到 Windows 错误报告,其中包含以下信息:

    应用程序名称:JavaSetup7u5.exe
    应用程序版本:7.0.50.6
    应用程序时间戳:4feacd84
    故障模块名称:JavaIC.dll
    故障模块版本:9.9.9.9
    故障模块时间戳:4f2343d6
    异常偏移量:000052cb
    异常代码:c0000417
    异常数据:00000000
    操作系统版本:6.1.7600.2.0.0.768.3
    区域设置 ID:1033
    附加信息 1:773c
    附加信息 2:773cd78cf06816f8246f359fa270f3bb
    附加信息 3:f51a
    附加信息 4:f51aaea7d22f36fa9e3a626b5a5cd1c3

    2. 后续运行将产生以下错误消息:

    “错误:Java(TM) 安装程序 - 下载的文件 C:\Users\\AppData\Local\Temp\fx-runtime.exe 已损坏。”

    或者

  2. 什么都没发生。我相信这是个转移注意力的借口。再次运行安装程序会导致另一个错误,因为文件已下载,安装程序在清理之前就崩溃了。这不是真正的问题,因为当发生这种情况时,安装程​​序会删除下载的文件,然后当您第三次运行它时,它会再次下载所有内容并导致 javaic.dll 崩溃。我怀疑下载器正在附加到现有文件或其他东西,从而导致损坏。

我以管理员和普通用户的身份尝试了上述所有操作。我尝试过多次将系统重置为出厂默认设置。我尝试过使用 Chrome 和 Internet Explorer 9 下载。我尝试过卸载所有防病毒软件并完全禁用 Windows 防火墙。唯一有用的是在 Windows XP 兼容模式下运行安装程序,这样安装才能完成。

我知道我可以通过使用离线安装程序来解决此错误,所以请不要将其作为答案发布。我正在寻找根本原因的解释。此外,如果我使用离线安装程序,更新程序将不起作用。如果我在 XP 模式下安装,更新程序也无法工作。更新程序失败,因为它只需下载最新的在线安装程序并运行即可工作。

还要记住的是,安装程序已进行数字签名。签名验证正确,因此这不可能是由下载损坏引起的。

我有一些理论:

  • java.com 上的 Java 安装文件实际上在第一次成功安装和我后来的尝试之间发生了变化。这似乎不太可能,因为版本号都没有改变。但是,在过去 24 小时内,我看到了几份关于此错误的报告。 目前看来这是最有可能的解释http://www.oracle.com/us/corporate/press/1735645- Oracle 两天前发布了 7 update 6。仔细检查安装程序后发现,它们实际上试图下载 .6,而不是下载页面声称的 .5。实际上并不正确。只有更新工具会尝试安装 7u6。在线安装程序仍会尝试安装 7u5。然而,7u6 两天前才发布,这实在是太巧合了,不容忽视。更新:7u6 在线安装程序可从 Oracle technetwork 获得。它以完全相同的方式崩溃。

  • 恢复出厂设置软件使用 GMT-8,而我使用的是 GMT-1。因此,在恢复出厂设置后,任何关心检查的软件都会认为系统是在 7 小时后恢复的,这是由于 Windows 糟糕的系统时钟存储本地时间政策造成的。这可能会混淆证书检查或类似检查。更新:我发现这确实会导致 Windows 更新失败。解决方法是在开始恢复出厂设置之前将时钟调回,但这无法使 Java 正确安装。

  • 出厂重置映像与购买系统时安装在主分区中的映像实际上并不相同。顽皮的联想。

  • 安装程序似乎在安装或显示与 Ask.com 工具栏相关的内容时崩溃。这似乎是 javaic.dll 所导致的。

  • 微软星期二是 14 号。其中的一些更新可能会导致此问题。但是,我每次都会将机器恢复出厂设置,因此除非补丁被集成到恢复映像中,或者存在某种机制,即使更新被禁用,它们也会被默默安装,否则我看不出这可能是原因。

重大突破:

联想系统的默认浏览器是 Google Chrome。我注意到 JavaIC.dll“赞助商检查”实际上会检查您的默认浏览器,以决定显示哪个赞助商广告。通常,这会在 IE9 上显示 Ask 工具栏。但该工具栏在 Chrome 上不起作用,因此安装程序会尝试显示不同的广告。不同的广告是导致崩溃的原因。将默认浏览器更改为 IE9 可使安装程序正常运行。因此,这看起来像是安装程序中赞助商广告代码中的一个真正的错误,是由 Google Chrome 默认浏览器和不在美国境内共同造成的。(安装程序还会使用 IP 地理位置服务检查您的位置,并根据该位置显示不同的广告。)

答案1

我现在已经找到了解决此问题的方法。恢复出厂设置后,安装 Java 之前,请执行以下步骤:

  1. 打开 Google Chrome 并接受条款和条件,然后退出。
  2. 打开 Internet Explorer 9。它会询问您是否要将其用作默认浏览器。单击“是”,然后退出。
  3. 打开 Google Chrome。它会询问您是否要将其用作默认浏览器。选择“是”。

您现在可以使用任一浏览器中的在线更新程序下载并安装 Java,并且它应该可以正常工作。

至于原因,联想工厂镜像似乎使用非标准方法将 Google Chrome 设置为默认浏览器。JavaIC.dll 肯定读取了不存在的注册表值或类似内容,导致其因缓冲区溢出(更可能是零长度缓冲区)而崩溃。

答案2

您没有提到一些更严厉的措施:

  • 禁用数据执行保护
  • 以 XP 兼容模式运行

尝试在错误报告中谷歌搜索 4f2343d6,还有其他人遇到过同样的问题。据了解这是由 DEP 引起的。

要禁用 DEP,请单击我的电脑->属性->高级->性能->设置->性能选项->数据执行保护。重新启动。

相关内容