Support Tip: ConfigMgr 2007 SUP client installation on Windows 8 or Windows Server 2012 fails with 0x80246003 error

Support Tip: ConfigMgr 2007 SUP client installation on Windows 8 or Windows Server 2012 fails with 0x80246003 error

  • Comments 4
  • Likes

toolsignWe have discovered that when the System Center Configuration Manager 2007 SP2 client is published to WSUS via the ConfigMgr console, Windows 8 and Windows Server 2012 clients may be unable to install the client from WSUS via Windows Update. This can occur even after update KB2734608 is applied which allows WSUS to service Windows 8 and Windows Server 2012 clients. We have a solution for this problem that needs only to be applied to the SMS Site server that is publishing to WSUS.

Environment

Symptom

The client installation method of ‘Software Update Point Client Installation’ is enabled to allow computers to download and install the Configuration Manager 2007 (ConfigMgr 2007) client from a Software Update Point or WSUS. When a Windows 8 or Windows Server 2012 downloads the client and tries to verify it, it will fail. Below is an example of the messages logged in WindowsUPpate.log on the client:

 

*********** DnldMgr: New download job [UpdateId = {72EB686F-B396-4D62-B16F-5284FD2543EE}.1] ***********
DnldMgr WARNING: Update validation failed, error 80246003.
DnldMgr FATAL: DM:CAgentDownloadManager::DownloadUpdate: pDownloadJob->Init failed with 0x80246003.
DnldMgr WARNING: Got error (hr = 80246003) starting update 0 in call 2. Notifying call.
DnldMgr Error 0x80246003 occurred while downloading update; notifying dependent calls.
AU >>## RESUMED ## AU: Download update [UpdateId = {72EB686F-B396-4D62-B16F-5284FD2543EE}]
AU # WARNING: Download failed, error = 0x80246003

Cause

KB2734608 updates the WSUS API assembly (Microsoft.UpdateServices.Administration) but ConfigMgr 2007 SP2 is referencing and continues to use the pre-2734608 API assembly.

Solution

Assembly redirection can be used to force applications using one version of an assembly to use a different version of an assembly. There are two methods to do this but first we need to unpublish the ConfigMgr 2007 client from WSUS by completing the following steps:

1. Open the Configuration Manager console.

2. Navigate to Site Database –> Site Management –> <site code> –> Site Settings –> Client Installation Methods.

3. Right click ‘Software Update Point Client Installation’ and choose ‘Properties’.

4. Uncheck the option ‘Enable Software Update Point Client Installation’ and click OK.

5. Wait for 10-15 minutes to give the system time to remove the SCCM client from WSUS.

Method 1

This method will apply to all applications on the machine that use the Microsoft.UpdateServices.Administration assembly and requires a reboot of the site server.

1. Login to the ConfigMgr 2007 Site server that hosts the SUP and publishes to the WSUS server.

2. Find and open the file \%systemroot%\Microsoft.NET\Framework\v2.0.50727\config\machine.config in Notepad or another text editor.

3) Locate the <runtime> section in the XML. If the machine.config has never been modified this section will likely be only <runtime />

4) Edit the <runtime> section to read as follows:

<runtime>
     < assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          < dependentAssembly>
               < assemblyIdentityname="Microsoft.UpdateServices.Administration"
                    publicKeyToken="31bf3856ad364e35"
                         culture="neutral" />
              <!-- Assembly versions can be redirected in application, publisher policy, or machine configuration files. -->
               < bindingRedirect oldVersion="3.0.6000.273" newVersion="3.1.6001.1"/>
          </dependentAssembly>
     </assemblyBinding>
< /runtime>
        

5. Save the machine.config file and then reboot the server.

Method 2

This method will only apply to the SMS Executive and does not require a machine restart, but does require restarting the SMS Executive.

1) Create a file named smsexec.exe.config as shown below and place it into the installation location of the smsexec.exe executable. This is usually \Program Files (x86)\Microsoft Configuration Manager\bin\i386.

<?xml version="1.0" encoding="UTF-8"?>
< configuration>
     <runtime>
          < assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
               < dependentAssembly>
                    < assemblyIdentity name="Microsoft.UpdateServices.Administration"
                         publicKeyToken="31bf3856ad364e35"
                              culture="neutral" />
                    <!-- Assembly versions can be redirected in application, publisher policy, or machine configuration files. -->
                    < bindingRedirect oldVersion="3.0.6000.273" newVersion="3.1.6001.1"/>
               </dependentAssembly>
          </assemblyBinding>
     </runtime>
< /configuration>

NOTE If the file smsexec.exe.config already exists, merge the contents shown above with the existing smsexec.exe.config file.

2) Restart the SMS Executive service by running the following commands from a CMD prompt:

net stop sms_executive
net start sms_executive

After completing either Method 1 or Method 2, republish the Configuration Manager client to WSUS and verify that your Windows 8 or Windows Server 2012 clients can now download the client.

Larry Mosley | Escalation Engineer | Management and Security Division

Get the latest System Center news on Facebook and Twitter:

clip_image001 clip_image002

System Center All Up: http://blogs.technet.com/b/systemcenter/
System Center – Configuration Manager Support Team blog: http://blogs.technet.com/configurationmgr/
System Center – Data Protection Manager Team blog: http://blogs.technet.com/dpm/
System Center – Orchestrator Support Team blog: http://blogs.technet.com/b/orchestrator/
System Center – Operations Manager Team blog: http://blogs.technet.com/momteam/
System Center – Service Manager Team blog: http://blogs.technet.com/b/servicemanager
System Center – Virtual Machine Manager Team blog: http://blogs.technet.com/scvmm

Windows Intune: http://blogs.technet.com/b/windowsintune/
WSUS Support Team blog: http://blogs.technet.com/sus/
The AD RMS blog: http://blogs.technet.com/b/rmssupp/

App-V Team blog: http://blogs.technet.com/appv/
MED-V Team blog: http://blogs.technet.com/medv/
Server App-V Team blog: http://blogs.technet.com/b/serverappv

The Forefront Endpoint Protection blog : http://blogs.technet.com/b/clientsecurity/
The Forefront Identity Manager blog : http://blogs.msdn.com/b/ms-identity-support/
The Forefront TMG blog: http://blogs.technet.com/b/isablog/
The Forefront UAG blog: http://blogs.technet.com/b/edgeaccessblog/

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Been observing this problem for a while and hoping for a solution. Both methods caused problems. Turns out the XML was a little flakey for copying/pasting the above code. The extra [SPACE] at the beginning of some of the tags caused problems. Removing the space as in < configuration> to <configuration> solved the problem.

  • This gets worse and worse.  Now that the .Net config file is corrected, server restarted and SCCM and WSUS are communicating again, i get a different error when trying to publish the SCCM client to the SUP:

    PublishApplication(72eb686f-b396-4d62-b16f-5284fd2543ee - 0) failed with error System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.~~File name: 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'~~   at Microsoft.UpdateServices.Internal.BaseApi.FileSystemHelper.GetSHA256HashForFile(String filePath)~~   at Microsoft.UpdateServices.Internal.BaseApi.Publisher.ComputeSHA256CRCHashAsBase64String(String fileName)~~   at Microsoft.UpdateServices.Internal.BaseApi.Publisher.VerifyAndPublishPackage()~~   at Microsoft.UpdateServices.Internal.BaseApi.Publisher.PublishSignedPackage(String sourceCabFile, String packageDirectoryName)~~   at Microsoft.SystemsManagementServer.WSUS.WSUSServer.PublishApplication(String sPackageId, Int32 nRevision, String sSDPFile, String sCabFile)~~~~WRN: Assembly binding logging is turned OFF.~~To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.~~Note: There is some performance penalty associated with assembly bind failure logging.~~To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

    Please advise.

  • OK, here is a summary.

    So after editing the server .Net config file, i correct the numerous errors, but missed one - You have not put in assemblyIdentityname which should read assemblyIdentity name.

    So that screwed up the connection between SCCM and WSUS which i eventually fixed after a couple of reboots.

    But then that prevented publishing the client to the SUP as shows in the error above.  So I completely reverted to the backed up .Net config file, and decided to use METHOD 2.

    This seems to have worked, i can see the files in the WSUS content folder HOWEVER, in the WCM.log file i can see every time i ADD the client to the SUP, I receive the error "WARNING: Failed to unpublish previously published client , error = 0x80131537"

    Can i just delete the files from the \WSUS\UpdateServicesPackages folder, or will that not suffice?  Is it registered/recorded elsewhere?

    Note that there was NO client published before I attempted the fix you have documented, therefore I assume that the client could not be unpublished since installing KB2734608.

    Can you please:

    1) Correct the mistakes in the XML above, to save other users the problems I have encountered.

    2) Swap Method 1 for method 2.  The latter is more likely to be reliable i feel, therefore it should be attempted first.

    3) Tell me how I can unpublish my old client - Can i just delete the files?  Note that they reside in \WSUS\UpdateServicesPackages\Configuration Manager Client Installation_72eb686f-b396-4d62-b16f-5284fd2543ee and folder and files are mod dated Feb 12 i.e. old client.

    Many thanks!

    Mike

  • Prerequisites for all iterations of SCCM 2007 does not mention of .NET 3.5 as a prerequisite. You must have .NET 3.5 installed for this method to work.

    SCCM was failing to publish the client to the System Update Server due to “System.Core 3.5” not found after installing update: KB2828185 and implementing Method 1 or 2

    SCCM WCM.Log Prior to installing .NET 3.5:

    PublishApplication(72eb686f-b396-4d62-b16f-5284fd2543ee - 0) failed with error System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.~~File name: 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'~~   at Microsoft.UpdateServices.Internal.BaseApi.FileSystemHelper.GetSHA256HashForFile(String filePath)~~   at Microsoft.UpdateServices.Internal.BaseApi.Publisher.ComputeSHA256CRCHashAsBase64String(String fileName)~~   at Microsoft.UpdateServices.Internal.BaseApi.Publisher.VerifyAndPublishPackage()~~   at Microsoft.UpdateServices.Internal.BaseApi.Publisher.PublishSignedPackage(String sourceCabFile, String packageDirectoryName)~~   at Microsoft.SystemsManagementServer.WSUS.WSUSServer.PublishApplication(String sPackageId, Int32 nRevision, String sSDPFile, String sCabFile)~~~~WRN: Assembly binding logging is turned OFF.~~To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.~~Note: There is some performance penalty associated with assembly bind failure logging.~~To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

    After installing .NET 3.5 and implementing Method 1 with proper XML syntax I was able to get client installed on Windows 8/Server 2012

    <runtime>

        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

             <dependentAssembly>

                  <assemblyIdentity name="Microsoft.UpdateServices.Administration" publicKeyToken="31bf3856ad364e35" culture="neutral"/>

                 <!-- Assembly versions can be redirected in application, publisher policy, or machine configuration files. -->

                  <bindingRedirect oldVersion="3.0.6000.273" newVersion="3.1.6001.1"/>

             </dependentAssembly>

        </assemblyBinding>

      </runtime>