Let's say we want to install the very latest version of Hyper-V Hypervisor package. Practically speaking, there's not much sense in this since Component-Based Servicing (CBS) stack does a very good job choosing the right package to install in every particular situation. But it's a useful exercise to learn how the stuff works.

  1. Determine what Hotfix contains the latest version of the package. Assume you already know what files the Hypervisor consists of and what package they are contained in. (If you don't, that's a topic for another exercise).

    So you go directly to Microsoft-Hyper-V-Drivers-Hypervisor and see that the latest (for the time of writing) publicly available hotfix for “Microsoft-Hyper-V-Drivers-Hypervisor” package is 2517329.

  2. Now, just to make things interesting, we need to ensure we're not on the LDR branch... yet. After all, if we were there already—we'd always get LDR versions of the “Microsoft-Hyper-V-Drivers-Hypervisor” package from all the hotfixes and security updates (if any). Well, not exactly always. Only until next Service Pack is issued and installed.

    PS C:\Users\i0028l\Downloads> (Get-Item -Path "C:\Windows\System32\drivers\hvboot.sys").VersionInfo | Format-Table -Property "FileBuildPart", "FilePrivatePart" -AutoSize

    FileBuildPart FilePrivatePart

    ------------- ---------------

             7601           17514

    Fine! Currently the file revision number for the files in interest is 7601.17514 which means Windows Server 2008 R2 Service Pack 1 RTM (“win7sp1_rtm”). We'd consider our experiment successful after this changes to something like 7601.21xxx that would mean “win7sp1_ldr” branch.

  3. Let's start getting our hands dirty. Download the package and expand it twice. One extra step if you got is as a self-extracting zip archive (Executable).

    PS C:\Users\i0028l\Downloads> Rename-Item -Path "429677_intl_x64_zip.exe" -NewName "429677_intl_x64_zip.exe.zip"

    PS C:\Users\i0028l\Downloads> Extract-Zip -ZipFileName "C:\Users\i0028l\Downloads\429677_intl_x64_zip.exe.zip" -Destination "C:\Users\i0028l\Downloads"

    PS C:\Users\i0028l\Downloads> expand.exe -f:* "Windows6.1-KB2517329-v2-x64.msu" "."

    Microsoft (R) File Expansion Utility Version 6.1.7600.16385

    Copyright (c) Microsoft Corporation. All rights reserved.

    Adding .\WSUSSCAN.cab to Extraction Queue

    Adding .\Windows6.1-KB2517329-v2-x64.cab to Extraction Queue

    Adding .\Windows6.1-KB2517329-v2-x64-pkgProperties.txt to Extraction Queue

    Adding .\Windows6.1-KB2517329-v2-x64.xml to Extraction Queue

    Expanding Files ....

    Expanding Files Complete ...

    4 files total.

    PS C:\Users\i0028l\Downloads> expand.exe -f:* "."

    Microsoft (R) File Expansion Utility Version 6.1.7600.16385

    Copyright (c) Microsoft Corporation. All rights reserved.

    Adding .\update.mum to Extraction Queue

    Adding .\update.cat to Extraction Queue

    Adding .\update-bf.mum to Extraction Queue

    Adding .\update-bf.cat to Extraction Queue

    Adding .\package_for_kb2517329_sp1~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_for_kb2517329_sp1~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\package_for_kb2517329_sp1_bf~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_for_kb2517329_sp1_bf~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\package_for_kb2517329_rtm~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_for_kb2517329_rtm~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\package_for_kb2517329_rtm_bf~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_for_kb2517329_rtm_bf~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\package_2_for_kb2517329~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_2_for_kb2517329~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\package_2_for_kb2517329_bf~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_2_for_kb2517329_bf~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\package_1_for_kb2517329~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_1_for_kb2517329~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\package_1_for_kb2517329_bf~31bf3856ad364e35~amd64~~6.1.2.0.mum to Extraction Queue

    Adding .\package_1_for_kb2517329_bf~31bf3856ad364e35~amd64~~6.1.2.0.cat to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.16792_none_8c387bd67f4112e6\hvax64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.20941_none_8cf729d998370acb\hvax64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.21701_none_8f08c68f953d06f3\hvax64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.17592_none_8e1ed8dc7c677ed2\hvax64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.21701_none_8f08c68f953d06f3\hvix64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.17592_none_8e1ed8dc7c677ed2\hvix64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.16792_none_8c387bd67f4112e6\hvix64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.20941_none_8cf729d998370acb\hvix64.exe to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.20941_none_8cf729d998370acb\hvboot.sys to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.21701_none_8f08c68f953d06f3\hvboot.sys to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.17592_none_8e1ed8dc7c677ed2\hvboot.sys to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.16792_none_8c387bd67f4112e6\hvboot.sys to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.21701_none_8f08c68f953d06f3.manifest to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7601.17592_none_8e1ed8dc7c677ed2.manifest to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.20941_none_8cf729d998370acb.manifest to Extraction Queue

    Adding .\amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_6.1.7600.16792_none_8c387bd67f4112e6.manifest to Extraction Queue

    Adding .\amd64_d2ca5366b0c74046153c25be7091bc18_31bf3856ad364e35_6.1.7600.16792_none_fc40bac5b638e541.manifest to Extraction Queue

    Adding .\amd64_cb3eff84ee36faec73c2de3df99ba685_31bf3856ad364e35_6.1.7600.20941_none_cc421777b5a99a2d.manifest to Extraction Queue

    Adding .\amd64_8a985f70d154980c200f4714ce9a3670_31bf3856ad364e35_6.1.7601.21701_none_5cef43c038bc80a3.manifest to Extraction Queue

    Adding .\amd64_67bea49f4b337c102608760a878b0956_31bf3856ad364e35_6.1.7601.17592_none_37ff42790a6900fc.manifest to Extraction Queue

    Expanding Files ....

    Expanding Files Complete ...

    40 files total.

    Simple!

  4. Time for something more trembling. Now we actually install the package using DISM command.

    PS C:\Users\i0028l\Downloads> Dism.exe /Online /Add-Package /PackagePath:"C:\Users\i0028l\Downloads\update-bf.mum"

    Deployment Image Servicing and Management tool

    Version: 6.1.7600.16385

    Image Version: 6.1.7600.16385

    Processing 1 of 1 - Adding package Package_for_KB2517329_BF~31bf3856ad364e35~amd64~~6.1.2.0

    [==========================100.0%==========================]

    The operation completed successfully.

    Restart Windows to complete this operation.

    Do you want to restart the computer now (Y/N)? y

    It is actually the -bf in the manifest name what does the trick. Since we need to specify this file name explicitly, we could not install the package using more traditional methods like Windows Update Standalone Installer (WUSA) or simply pointing DISM to the cabinet file (Windows6.1-KB2517329-v2-x64.cab).

  5. After the system restarts we need to ensure that the file was actually patched.

    PS C:\Users\i0028l> (Get-Item -Path "C:\Windows\System32\drivers\hvboot.sys").VersionInfo | Format-Table -Property "FileBuildPart", "FilePrivatePart" -AutoSize

    FileBuildPart FilePrivatePart

    ------------- ---------------

             7601           21701

  6. And, what is even more remarkable, we can see that the hotfix was really installed—and is listed in the system as that.

    PS C:\Users\i0028l> Get-WmiObject -Class "Win32_QuickFixEngineering" -Filter "HotFixID like 'KB2517329%'" | Format-Table -AutoSize

    Source          Description HotFixID     InstalledBy InstalledOn

    ------          ----------- --------     ----------- -----------

    P-W-PRONICHKI06 Hotfix      KB2517329_BF INF\i0028l  5/29/2011 12:00:00 AM

    Note that you can observe the same using Control Panel applet as well.