在删除 .NET Framework 1.1 或 .NET Framework 1.0 的某些安全更新时,文件版本回滚到上一个 Service Pack 所安装的版本

症状
假设存在以下情况。您的计算机上安装了 Microsoft .NET Framework 1.1 或 Microsoft .NET Framework 1.0。然后,您删除了下面的 Microsoft 知识库文章中介绍的安全更新之一:
  • 928366 2007 年 7 月 10 日版用于 Windows XP 和 Windows 2000 的 .NET Framework 1.1 安全更新2007 年 7 月 10 日
  • 929729 2007 年 7 月 10 日版用于 Windows Vista 的 .NET Framework 1.1 安全更新2007 年 7 月 10 日
  • 928367 2007 年 7 月 10 日版用于 Windows Vista、Windows Server 2003、Windows XP 和 Windows 2000 的 .NET Framework 1.0 安全更新2007 年 7 月 10 日
在这种情况下,.NET Framework 的文件版本会回滚到上一个 Service Pack 所安装的文件版本。此外,您只能重新安装之前已安装或较新的更新,您无法安装早期的更新。
原因
出现此行为的原因是,.NET Framework 1.1 和 .NET Framework 1.0 的更新最初被设计为与 Windows Installer 2.0 一起运行,而没有被设计为与 Windows Installer 3.0 一起运行。

注意:较旧的平台(如 Microsoft Windows Millennium Edition、Microsoft Windows 98 和 Microsoft Windows 95)不支持 Windows Installer 3.0。

Windows Installer 2.0 存在局限性。Windows Installer 2.0 本身并不支持删除更新的功能。要变通解决此局限性,应在 .NET Framework 1.0 和 .NET Framework 1.1 的更新中内置自定义删除功能。

自定义删除功能的运行方式如下。除了 .msp 负载文件外,该更新还包含一个所谓的 Anti-Patch。如果向更新包装可执行文件提供相应的删除命令,则该包装将安装该 Anti-Patch。Anti-Patch 实际上是另外一个更新。该更新包含 MSP 负载文件中各个文件的上一个已知良好版本。此版本是上一个基线版本,通常来自最新的 Service Pack(如果存在)。因此,在删除 .NET Framework 1.1 或 .NET Framework 1.0 的更新时,该文件版本并不总是回滚到较早文件版本,而是可能回滚到上一个 Service Pack 所安装的文件版本。

假设存在以下情况。您具有 .NET Framework 1.0 Service Pack 3 的两个更新。第一个更新是 KB886906。此更新的文件版本为 1.0.3705.6021。第二个更新是 KB928367。此更新的文件版本为 1.0.3705.6060。

下表介绍当您在此情形下安装并删除这些更新时会发生的情况。
步骤操作以前的文件版本新文件版本
1安装 .NET Framework 1.0 Service Pack 3不适用1.0.3705.6018
2安装更新 KB886906。这是第一个(较旧)更新。1.0.3705.60181.0.3705.6021
3安装更新 KB928367。这是第二个(较新)更新。1.0.3705.60211.0.3705.6060
4删除更新 KB928367。这是第二个(较新)更新。1.0.3705.60601.0.3705.6018
此情形演示了在删除第二个更新后,.NET Framework 1.0 并非像预期的那样回滚到第一个更新的文件版本。相反,.NET Framework 1.0 回滚到基线版本。(基线版本是 .NET Framework 1.0 Service Pack 3 包含的文件版本。)
解决方案
Microsoft 已发布了用于纠正此行为的卸载清理工具。您应该使用此工具删除“症状”部分中所列的任一安全更新。

若要获取卸载清理工具,请访问以下 Microsoft 下载中心网站:运行卸载清理工具之后,计算机将回滚到已知的良好状态。此时,您可以重新安装较早的更新。

下表介绍了在安装并删除更新时将会出现的情况。此表还介绍了卸载清理工具纠正此行为的方式。
步骤操作以前的文件版本新文件版本
1安装 .NET Framework 1.0 Service Pack 3不适用1.0.3705.6018
2安装更新 KB886906。这是第一个(较旧)更新。1.0.3705.60181.0.3705.6021
3安装更新 KB928367。这是第二个(较新)更新。1.0.3705.60211.0.3705.6060
4删除更新 KB928367。这是第二个(较新)更新。1.0.3705.60601.0.3705.6018
5下载并运行清理工具1.0.3705.60601.0.3705.6018
6重新安装更新 KB886906。这是第一个(较旧)更新。1.0.3705.60181.0.3705.6021
下表介绍了在删除“症状”部分中所列的其中一个安全更新时,您必须重新安装的更新。
.NET Framework 版本已经删除的更新必须重新安装的更新
.NET Framework 1.1 Service Pack 1
928366 Windows XP 和 Windows 2000 的 .NET Framework 1.1 安全更新说明:2007 年 7 月 10 日
886903 Microsoft .NET Framework 1.1 Service Pack 1 中的 ASP.NET 路径验证漏洞
.NET Framework 1.1 Service Pack 1
929729 Windows Vista 的 .NET Framework 1.1 安全更新说明:2007 年 7 月 10 日
886903 Microsoft .NET Framework 1.1 Service Pack 1 中的 ASP.NET 路径验证漏洞
.NET Framework 1.0 Service Pack 3
928367 Windows Vista、Windows Server 2003、Windows XP 和 Windows 2000 的 .NET Framework 1.0 安全更新说明:2007 年 7 月 10 日
886906 Microsoft .NET Framework 1.0 Service Pack 3 中的 ASP.NET 路径验证漏洞
在删除任何新的更新之后、安装较早的更新之前,您必须运行此处提到的清理工具。每次删除安全更新时,您都必须重复此过程。也就是说,在每次删除安全更新时,都必须要运行此卸载清理工具,然后再安装较早的更新。

注意:在运行卸载清理工具时,该工具不会安装到计算机上。此工具对计算机执行必要的清理,然后退出。
更多信息
有关在安装多个更新后删除更新时可能发生的问题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
938244在删除 .NET Framework 1.0 或 .NET Framework 1.1 的更新时,文件版本回滚到上一个 Service Pack 所安装的版本
security update uninstall remove .NET Framework 1.0 1.1 rollback uninstall MSI Windows Installer 2.0 2.x limitation anti-patch file version Service Pack SP baseline
注意:本篇“快速发布”文章是从 Microsoft 支持组织直接创建的。 文中包含的信息按原样提供,用于响应紧急问题。 由于发布仓促,材料可能包含印刷错误,并且可能随时修订,恕不另行通知。 有关其他注意事项,请参阅使用条款
属性

文章 ID:939160 - 上次审阅时间:10/15/2011 12:52:00 - 修订版本: 1.1

Microsoft .NET Framework 1.1 Service Pack 1, Microsoft .NET Framework 1.0 Service Pack 3

  • kbupdateissue kbuninstall kbinstallation kbupdate kbhowto kbtshoot kbexpertisebeginner kbprb KB939160
反馈