How branching works for installing updates

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.

--Joseph