SCCM 2012 – Include CU in OSD

by

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

http://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/)!

Comments

13 responses to “SCCM 2012 – Include CU in OSD”

  1. Greg Avatar
    Greg

    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?

    1. Martin Wüthrich Avatar

      That’s true. Will create a blog post with this solution, when the first CU for R2 will be released 🙂

      1. Greg Avatar
        Greg

        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. Spidey Avatar
    Spidey

    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.

    1. Martin Wüthrich Avatar

      Well, that’s seems to be very easy. I will give it a triy on the next CU!
      Thank you very much for sharing.

  3. Spidey Avatar
    Spidey

    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. Arien Avatar

    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.

    1. Martin Wüthrich Avatar

      Do you copy the patches into the Windows Directory?

      1. Arien de Groot Avatar
        Arien de Groot

        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

        1. Martin Wüthrich Avatar

          I use the variable which is set in the partitioning and Format step. So you would be sure, that you copy the files on the drive, where you deploy the wim.

  5. Al Avatar
    Al

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

  6. […] to this Blog post, I decided to create a new one about including Hotfixes in OSD. Specially the new Release of SCCM […]

  7. Bogdan Avatar

    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 to Spidey Cancel reply

Your email address will not be published. Required fields are marked *