Hyper-V: How to Forcibly Install the LDR Branch from a Particular Hotfix Package
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.
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.
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.
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!
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).
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
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.