I was asked this question the other day and I thought it would make a good quick entry in the blog. A customer was having difficulty installing a particular update but they werent getting any kind of error message when they attempted the install. The customer could tell that the update wasnt applying because the version of the file in the update was not changing to the version number specified in the KB article. (BTW, this is exactly how you should determine if something is installed or not, many customers use the date of the file but that's never accurate). When the engineer working on the case asked me about it, they asked it in a way that I wasnt expecting. The question I was asked was:
"How do I force GDR/LDR branching on an update in Windows?"
This is a great question. First, in case you havent heard the terms before, GDR is General Distribution Release and LDR is Limited Distribution Release. In general terms, GDR versions of files are generally the version that files are after you do a clean install of Windows and then after installing a Service Pack for Windows. LDR versions of files are those shipped in between GDR releases and are usually shipped in the form of Windows Updates, QFE's (Quick Fix Engineered files) and private fixes built for instrumentation. Why would you want to enforce a particular branch of a file? Typically because a particular branch of a file might contain a slice of code that addresses an issue where another branch of the same file does not.
On Windows 2003 systems and earlier, you can force the branching of a file by using the switch /B:RTMGDR for GDR branched files or /B:RTMQFE for LDR branched files.
On Windows Vista/2008 systems and greater, branching has been deprecated and no longer takes place.
So, back to our customer. The customer was running Windows 2008 SP2. When we looked over the version of the file in the update they were trying to install and the version that was on their system, the version on their system was greater than that of the one in the fix. So in this case, we wont install that update. If the customer wanted to install that version of the fix, and their might be a good reason to do so, then they would need to remove whatever update on the system updated the file and then reinstall the update that previously wasnt installing.
nice to see more blog posts of you :)
You can force the LDR installation by extracting the MSU and the CAB file and installing the update-bf.mum with pkgmgr/DISM.
Here you see what I suggested years ago on connect, give better error messages why an update can't be installed. "the update doesn't apply to your PC' is not useful. Maybe we get this in Windows 8.
Hey Andre, long time no see :)
Yes, you can technically force the package in that way but we no longer have a quick and easy way to do this, the servicing stack takes care of the branching for us now.
Its really interesting to get this information, however, Thanks Joesph.
WIll WIndows 8 do anything to tremendously speed up installation of updates and to conserve disk space by not backing up older versions of components? The Windows 7 servicing mechanism is an unmitigated disaster.
Oh, *deprecated* you say.
Is *that* why you make it so incredibly convoluted and inconvenient to do:
"pkgmgr /ip /m:update-bf.mum /log:xxxxx"
I apologize for the sarcasm, but really now. Nearly every hotfix seems to include both GDR and LDR service branches for the *same* SR level. If I *really* wanted to play it safe, I wouldn't be applying hotfixes in the first place.
@someone: We'll talk about Win8 at the appropriate time
@dj: Yes, you can use pkgmgr if you really, really wanted to. Should you? Depends on what you think you're going to accomplish by applying a specific update in a specific way. The whole point is that servicing now works in a way that you dont have to do this like you had to before.
So are you saying that the "General Distribution Release and Limited Distribution Release" stuff is gone now ? There is only ONE version of any file ?
no, Dual-branch Servicing will always be used in Windows. Only Office still uses 1 branch and with security updates you get hotfixes, too. But in Windows there are still 2 files. 7601.17xxx for GDR and 6.1.7601.2xxxx for LDR on Windows 7 Sp1.
only the option in the installer to force LDR installation was removed. But you can use pkgmgr to install the bf.mum if you want to force the LDR installation. 1 Note here. You must install the normal version (GDRs, too) otherwise WindowsUpdate detects missing updates. It looks like WU checks the GDR files. I forgot to add this ...
@Dean; As Andre stated,no, what I am saying is that we now take care of branching for you so you dont have to force branches as might have been the case in the past. Even in the pre-2008 days, it was rare, but it happened. That's why I wrote this blog, in case anyone wanted to know what happened the the /B switch when working with updates.
You didn't exactly say HOW 'we now take care of branching for you'.
It's taken care of by the servicing stack during the operation by checking the branch of the file and the supersedence of that file against what is already installed on the operating system. If you supersede, you're installed. If you do not, you'll get an error message or the update will simply fail to install in a graceful fashion.
the installation is the same like always. The installer, in NT6.x the servicing stack, looks which branch the file is ( in Nt 6.x which component becasue >= Vista are component based operation systems based on packages) and if you already have a LDR fix installed for that component you get the LDR version if the update has both version included (like security fixes). Only the parameter to force the installation of LDR files was removed. In this case extract the update and use pkgmgr.
But I suggested several years on connect, that users should get better error messages why an update "doesn't apply to your computer'. I think this is why you ask Joseph this.
I'm not understanding how whether the VERSION of the file ( if it's newer or older ) has to do with if it's GDR or LDR. Can't you have FOUR versions ? An old and new ( GDR ) and an old and new ( LDR ) ?
Branching and supersedence are different concepts here. What I was getting at was that update applicability is determined by supersedence within the branching for the file, unless that update is a Service Pack, in which case you move to GDR for those files.