SCCM 2012 – Include CU in OSD

Please refer to our new Blog Post about including Cumulative Updates:

https://blog.hosebei.ch/2014/03/14/sccm-2012-r2-include-client-hotfix-or-cumulative-update-while-on-osd/

Hey, here’s Martin again.

This is an often discussed Topic, but now, I found a nice solution to get rid of the Problems when you want to include a cumulative update to your Task Sequence. Also since we got a 32-bit and 64-bit Client for System Center 2012 Configuration Manager, the issues are getting bigger.

Now, this is how I include a cumulative update in OSD, described on the example of CU3 of SCCM 2012 SP1, which is already installed on the Site. First, I create a new SCCM Client Package:
Copy the Content of “$SCCMInstallationClient” to your Package Source Share, it should then look like this:

Create new SCCM Client Package

When this is done you can create a Folder named Patch on the same Level as the Folders I386 and x64 already exist, inside this newly created Folder, create two Folders named AMD64 and X86:
Create Folders for PatchNow you have to copy the patches from  “$SCCMInstallationhotfixKB2882125Client” (replace the KB-Number when using this blog for something else than CU3) into the correct subfolder from the previous step.

-> Important: Rename the files, that means remove the System Architecture from the file:

Rename Patch Fileseverything is done for the new SCCM Client Package, which will be used in our Task Sequence. Now it is time to create the package, well, it’s that easy with this powershell command:

New-CMPackage -Name "SCCM Client 2012 SP1 CU3" -Language "MUI" -Manufacturer "Microsoft" -Path "$PATH_TO_YOUR_PACKAGE" -Version "2012 SP1 CU3"

And we don’t need to create a program, because we only use this package within our Task Sequence. Distribute the Package to your Distribution Points, and we are ready to start for the magic inside our TS (For this, thanks to Dustin / http://deploymentramblings.wordpress.com/2013/08/22/installing-configmgr-2012-sp1-cu2-during-osd/).

Make sure, that you set a Variable when formatting your System Drive, on BIOS an UEFI:
Set Disk VariableThen use this variable also to deploy Windows on the correct Drive: Apply Operating System
Now create a simple “Run Command Line” step in your Task Sequence, right before the step “Setup Windows and Configuration Manager” where you copy the file to a Folder on the System Drive. This Folder and the Content will remain after the Installation, so you have to delete them with another step.
Run command line step
As you might recognize, the Variable %Processor_Architecture% is used. The command for my Situation:
cmd.exe /c xcopy Patch%PROCESSOR_ARCHITECTURE%*.* %OSD_System%tempCU3Hotfix /E /H /C /I /Q /Y

Now, the last step, add the Patch to the SCCM Agent Installation:
Patch property

This is the Installation property that I use:
SMSCACHEFLAGS=PERCENTDISKSPACE;NTFSONLY SMSCACHESIZE=10 SMSMP=$MP-FQDN FSP=$FSP-FQDN PATCH="C:tempCU3Hotfixconfigmgr2012ac-sp1-kb2882125.msp"

If it is not working, you forgot to rename the MSP-Files 🙂
Hope this helps, and again thanks to Dustin (http://deploymentramblings.wordpress.com/)!

13 thoughts on “SCCM 2012 – Include CU in OSD

  1. Question – is it really necessary to create a whole new ConfigMgr Client package? Why not just have a package that has the two patches, and nothing else? I know the out-of-box client package from Microsoft can’t be modified, but it is not relevant here, no? Do you delete the canned package?

      • I did some more testing and I’m just using the built-in x64 client patch package that the CU creates. I don’t need multi-platform support because the Task Sequence is already for a single platform anyways – if I want an x86 patch it will be in an x86 task sequence. I guess if you wanted to put every OS in a single task sequence, you’d have to do some of the magic you have, that or have a second step with a %PROCESSOR_ARCHITECTURE% condition, and have an x64 step and an x86 step.

        That way, I’m not creating any packages – I’m just using a modified command line bit from what you have:

        cmd.exe /c *.* %OSD_System%tempCU3Hotfix /E /H /C /I /Q /Y

        And I simply leave the hotfix name alone with the x64.msp at the end since we aren’t renaming it.

  2. Mate, I appreciate the effort, but there is a much easier way. Use the clientpatch method as described here – http://www.m4ttmcg.com/2013/05/sccm-2012-client-push-including.html

    Simply create a “clientpatch” directory under each architecture directory of the client install folder and copy the appropriate hotfix.
    So your paths will look like this:
    C:Program FilesMicrosoft Configuration ManagerClientx64ClientPatch
    C:Program FilesMicrosoft Configuration ManagerClienti386ClientPatch

    At any point that the client will be installed, SCCM will perform the base client install and then upgrade using the appropriate hotfix immediately after. Works in the task sequence too. No need to create any additional packages or add extra variables. Nice and simple. May not be 100% supported though, but I can tell you on deployments this is what we use with no failures.

    All the best.

  3. Yep, just remember to update your DP’s after the additions for your base “Configuration Manager Client Package” or whatever it’s called in your environment – I always seem to forget that step. Otherwise your TS will hang on the Setup Windows and Configuration Manager step with a “can’t find”(8004005) error as the package has changed.

  4. In our situation this method is not working because of a reboot.
    Task Sequence is beginning action and then gives message: The action (Setup Windows and ConfigMgr) requested a retry, Reboot to local harddisk.
    After this the copied contents of de package are not availble for the PATCH parameter.
    ConfigMgr Client is installed in TS after installing drivers and booting to local system.

    Too bad the _SMSTSMDataPath variable is not being updated during TS.

      • Multiple options are available. At the moment it is working calling patch=c:_smstasksequenceosdpackageidhotfixkbarchitecturex.msp We could also use the windows directory. Is Using systemroot variable will not work when in WinPE right? What variable an we use to make this neat?

        Ariën de Groot

  5. Thank you Martin for this brilliant post! I like the %PROCESSOR_ARCHITECTURE% variable.
    Al 🙂

  6. Hi Martin,

    Thank you for the great tutorial, I’ve just tested it and it works great !

    My scenario is ConfigMgr 2012 R2 CU1 along with MDT 2013 U1 for the Task Sequences.

    Best Regards.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s