当你将两个或多个包提取到 Windows Vista 中的同一文件夹中时,程序包管理器只能安装第一个包

本文介绍一个问题,因为程序包管理器无法在同一沙盒中管理两个或多个包。

原始 KB 数: 932224

现象

在 Windows Vista 中,程序包管理器工具只能在将两个或多个包提取到同一文件夹中时安装第一个包。

例如,考虑以下情况:

  • 在运行 Windows Vista 的计算机上,创建 C:\Temp 文件夹。

  • 将以下修补程序包下载到此文件夹:

    • Windows6.0-KB929761-x86.msu

    • Windows6.0-KB932590-x86.msu

      这些修补程序包适用于修补程序929761修补程序和修补程序 932590。

  • 运行以下命令以展开修补程序包:

    c:\temp>expand c:\temp\Windows6.0-KB929761-x86.msu -F:Windows6.0-KB929761-x86.cab c:\temp
    
    c:\temp>expand c:\temp\Windows6.0-KB932590-x86.msu -F:Windows6.0-KB932590-x86.cab c:\temp
    
  • 运行以下命令来安装包:

    start /w Pkgmgr /ip /m:c:\temp\Windows6.0-KB929761-x86.cab
    
    start /w Pkgmgr /ip /m:c:\temp\Windows6.0-KB932590-x86.cab
    

在此方案中,程序包管理器仅安装修补程序929761的包。

出现此问题时,类似于以下内容的信息可能会显示在Cbs.log文件中:

在此示例中Cbs.log文件中,程序包管理器指示它将为修补程序 932590 安装.cab文件。 但是,它实际上安装 Package_1_for_KB929761~31bf3856ad364e35~x86~~6.0.1.1 包。 这是修补程序929761包。

注意

此问题也适用于 Windows Server 2008。

原因

出现此问题的原因是程序包管理器无法在同一沙盒中管理两个或多个包。

解决方法

若要解决此问题,请执行以下步骤之一。

方法 1:

使用 pkgmgr 安装每个包之前,请将其展开到不同的文件夹。 为此,请在命令提示符处键入以下命令:

Delete update*.*

Mkdir c:\temp\sandbox1

Mkdir c:\temp\sandbox2

Start /w pkgmgr /ip /m:c:\temp\ CabFile /s:c:\temp\sandbox1

Start /w pkgmgr /ip /m:c:\temp\ CabFile /s:c:\temp\sandbox2

在这些命令中, CabFile 表示修补程序包的.cab文件。

方法 2:

另一种解决方法是使用 DISM 为 Windows Vista SP1 和 Windows Server 2008 脱机映像提供服务。

将 DISM 与 Windows Server 2008/Vista SP1 映像配合使用的注意事项:

  • 要更新的 Windows 映像必须是具有 SP1 或 Windows Server 2008 或更高版本的 Windows Vista。
  • 如果要使用 SP1 或 Windows Server 2008 映像为 Windows Vista 提供服务,DISM 会将 DISM 命令转换为等效的 程序包管理器 命令,以便可以更新映像。 DISM 为程序包管理器提供功能奇偶校验。
  • 仅支持脱机方案
  • DISM 随 Windows 7 和 Windows Server 2008 R2 预安装,包含在适用于 Windows 7 的 Windows 自动安装工具包中。 Windows 自动安装工具包可以安装在 Windows Vista 和 Windows 2008 上。

编辑器说明:Win7 waik 的下载链接: 适用于 Windows 7 的 Windows 自动安装工具包 (AIK)

使用 DISM 将包添加到脱机映像

  1. 在提升的命令提示符下,导航到 OPK 服务文件夹,然后键入以下命令以检索要修改的图像的名称或索引号。

    Dism /Get-WIMInfo /WimFile:C:\test\images\install.wim
    

    注意

    对于指定 Windows 映像(WIM)文件的大多数操作,都需要索引或名称值。

  2. 键入以下命令来装载脱机 Windows 映像。

    Dism /Mount-WIM /WimFile:C:\test\images\install.wim /Name:"Windows 7 HomeBasic" /MountDir:C:\test\offline
    
  3. 在命令提示符处键入以下命令,将特定包添加到映像。 可在一个命令行上添加多个包。 这些包将按照命令行中列出的顺序进行安装。

    Dism /Image:C:\test\offline /Add-Package /PackagePath:C:\packages\package1.cab /PackagePath:C:\packages\package2.cab
    

    注意

    .cab是从 .msu 文件中提取的。

  4. 在命令提示符处键入以下命令,来提交更改并卸载映像。

    Dism /Unmount-WIM /MountDir:C:\test\offline /Commit
    

Status

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照使用 TSS 针对与部署相关的问题收集信息中所述的步骤收集信息。