Friday, January 25, 2013

Deploying SCCM 2012 cumulative update client patch through task sequence

When you install a cumulative update for SCCM 2012 it'll automatically create update packages. You can see those packages on the picture below.




CU is installed and you think "how easy can it be" and try to deploy this patch in your task sequence to address known issues and get your clients to the current patch level. Unfortunately when you add the package containing client hotfix to the task sequence and try to run it it'll fail. The reason it is failing is simple - during installation of client hotfix the SCCM client is being reset and during TS it can't be correctly handled.
To install the client hotfix during Task Sequence men have to follow the same way as when installing client hotfixes for SCCM 2007. So you simply have to use PATH option in your "Setup Windows and ConfigMgr" step.


The PATH line will look like



PATCH="%_SMSTSMDataPath%\OSD\%PACKAGE_ID%\i386\hotfix\cu2.msp"
Where  %PACKAGE_ID% is SCCM Package ID of the "Configuration Manager Client Package"

There is one small thing that should be fixed before this is actually going to work ...
When installing a hotfix for SCCM 2007, the client patches were automatically written to
%SCCM INSTALL DIR%\client\%ARCH%\hotfix\KB_NR\... and the only thing men had to do was update client install package and specify necessary KB in the PATH.
In SCCM 2012 hotfixes are no longer written to that path, but to %SCCM INSTALL DIR%\hotfix\KB_NR\...
To make the above story work we need to create subfolder hotfix under %SCCM INSTALL DIR%\client\%ARCH%\ and copy the corresponding client MSP's to there... and this is it (DO NOT FORGET TO UPDATE CLIENT INSTALL PACKAGE)




11 comments:

  1. Great job!
    By far the best How-To blog on this topic, thanks for sharing!

    ReplyDelete
  2. This worked great for us. Nice write-up. thank you!

    ReplyDelete
  3. No idea why but I simply cannot get this to work. The content is there on the share, but %_SMSTSMDataPath% always changes values on me so it cannot find the hotfix.

    ReplyDelete
  4. Hi Dustin,

    I suspect you are trying to replace %_SMSTSMDataPath% variable with local path. please don't!
    the only thing you should replace in the PATCH option string is %PACKAGE_ID%, so it will look like example below:
    PATCH="%_SMSTSMDataPath%\OSD\TST00002\i386\hotfix\cu2.msp"
    where TST00002 is the SCCM client packageID at your site.

    P.S. to easily find package ID's just add "Package ID" column to the package view ;)

    ReplyDelete
  5. This worked, but I don't under stand the following step very well.

    To make the above story work we need to create subfolder hotfix under %SCCM INSTALL DIR%\client\%ARCH%\ and copy the corresponding client MSP's to there... and this is it.

    Do I do the copy of the msp files to C:\Program Files\Microsoft Configuration Manager

    or

    C:\Program Files (x86)\Microsoft Configuration Manager

    ReplyDelete
  6. C:\Program Files\Microsoft Configuration Manager

    unless you've installed your SCCM server somewhere else

    ReplyDelete
  7. Thank you for the reply I have another question. I have x64 and x86 clients, how would I apply the correct hotfix to the correct architecture?

    ReplyDelete
  8. replace %ARCH% with x64 or i386 for respective OS bits version...

    ReplyDelete
    Replies
    1. i mean in Task Sequences for eacht corresponding OS version.

      Delete
  9. so i would need 2 setup configuration manager steps, and query the os version and each step and then apply the corresponding hotfix patch?

    ReplyDelete
  10. i usually create one TS for each OS i want to deploy, but if you really want to use one TS to deploy different OS's, then you must indeed use 2 distinct steps

    ReplyDelete