Sunday, May 4, 2014

Problems installing WSUS for Server 2012

When you install WSUS for Server 2012 you are prompted to do a "post Install" proceedure.

If this fails you are left scratching your head.  Many times the temp file isn't much help

I could look like the following:

Postinstall started
Detected role services: Api, Database, UI, Services2014-04-15 14:47:05  Start: LoadSettingsFromXml 2014-04-15 14:47:05  Start: GetConfigValue with filename=UpdateServices-Services.xml item=ContentLocal
Value is true
End: GetConfigValue
Start: GetConfigValue with filename=UpdateServices-Services.xml item=ContentDirectory
Config file did not contain a value "ContentDirectory"
Microsoft.UpdateServices.Administration.CommandException: A required configuration value was not found in the system. This is usually caused by installing WSUS through PowerShell and not specifying a configuration file. Review the article Managing WSUS Using PowerShell at TechNet Library (http://go.microsoft.com/fwlink/?LinkId=235499) for more information on the recommended steps to perform WSUS installation using PowerShell.   at Microsoft.UpdateServices.Administration.PostInstall.GetConfigValue(String filename, String item) at Microsoft.UpdateServices.Administration.PostInstall.LoadSettingsFromXml()  at Microsoft.UpdateServices.Administration.PostInstall.Initalize(Parameters parameters)  at Microsoft.UpdateServices.Administration.PostInstall.Execute(String[] arguments)
Fatal Error: A required configuration value was not found in the system. This is usually caused by installing WSUS through PowerShell and not specifying a configuration file. Review the article Managing WSUS Using PowerShell at TechNet Library (http://go.microsoft.com/fwlink/?LinkId=235499) for more information on the recommended steps to perform WSUS installation using PowerShell.

Start by looking at the UpdateServices-Services.xml located:
C:\Windows\System32\ServerManager\ComponentConfiguration
This file controls where the content for WSUS is located
I might look like this:

<?xml version="1.0" encoding="utf-16"?><INSTANCE CLASSNAME="ServerComponent_UpdateServices_Services"><PROPERTY NAME="ContentDirectory" TYPE="string"></PROPERTY><PROPERTY NAME="ContentLocal" TYPE="boolean"><VALUE>true</VALUE></PROPERTY></INSTANCE>

The problem is that when you activeated the post install phase, this file was not properly updated by the WSUS installer. 

<?xml version="1.0" encoding="utf-16"?><INSTANCE CLASSNAME="ServerComponent_UpdateServices_Services">
<PROPERTY NAME="ContentDirectory" TYPE="string"><VALUE>D:\WSUS</VALUE></PROPERTY>
<PROPERTY NAME="ContentLocal" TYPE="boolean"><VALUE>true</VALUE>
</PROPERTY></INSTANCE>


Once we fix it we run the post install again but we see a different error

Still it didn’t have an instance, oops..
Postinstall started
Detected role services: Api, Database, UI, Services
Start: LoadSettingsFromXml
Start: GetConfigValue with filename=UpdateServices-Services.xml item=ContentLocal
Value is true
End: GetConfigValue
Start: GetConfigValue with filename=UpdateServices-Services.xml item=ContentDirectory
Value is D:\WSUS
End: GetConfigValue
Content directory is D:\WSUS
Start: GetConfigValue with filename=UpdateServices-DB.xml item=InstanceName
Config file did not contain a value "InstanceName"
Microsoft.UpdateServices.Administration.CommandException: A required configuration value was not found in the system. This is usually caused by installing WSUS through PowerShell and not specifying a configuration file. Review the article Managing WSUS Using PowerShell at TechNet Library (http://go.microsoft.com/fwlink/?LinkId=235499) for more information on the recommended steps to perform WSUS installation using PowerShell.
   at Microsoft.UpdateServices.Administration.PostInstall.GetConfigValue(String filename, String item)
   at Microsoft.UpdateServices.Administration.PostInstall.LoadSettingsFromXml()
   at Microsoft.UpdateServices.Administration.PostInstall.Initalize(Parameters parameters)
   at Microsoft.UpdateServices.Administration.PostInstall.Execute(String[] arguments)
Fatal Error: A required configuration value was not found in the system. This is usually caused by installing WSUS through PowerShell and not specifying a configuration file. Review the article Managing WSUS Using PowerShell at TechNet Library (http://go.microsoft.com/fwlink/?LinkId=235499) for more information on the recommended steps to perform WSUS installation using PowerShell.

We can see that from the log it can't find the instance for WSUS.  In this example we are using SQL express and not the Internal Database so back we go to addd the instance in.

C:\Windows\System32\ServerManager\ComponentConfiguration
Open the updateServices-DB.xml


<?xml version="1.0" encoding="utf-16"?><INSTANCE CLASSNAME="ServerComponent_UpdateServices_Database"><PROPERTY NAME="InstanceName" TYPE="string"></PROPERTY></INSTANCE>
Add the instance to the file.  Here we will use the default instance for SCCM, ConfigMrgSec

<?xml version="1.0" encoding="utf-16"?><INSTANCE CLASSNAME="ServerComponent_UpdateServices_Database"><PROPERTY NAME="InstanceName" TYPE="string"><VALUE>ServerName\CONFIGMGRSEC</VALUE>
</PROPERTY></INSTANCE>

FINALLY IT IS ALL DONE!

This will stay in the file for future use. 

You can also try to do the command manually from the command prompt.  The only problem is that the .XML files aren't updated.

C:\Program Files\Update Services\Tools

wsusutil.exe postinstall SQL_INSTANCE_NAME="SERVERName\ConfigMgrSec" CONTENT_DIR=D:\WSUS
Now you should be up and running.

Note:After you perform an inplace upgrade to a 2012 Server to R2 you must perform this procedure again or you SUPs will not Sync

Tuesday, October 1, 2013

What’s Next for MMS

Excerpts from Brad Anderson's comments on the future of MMS:

http://blogs.technet.com/b/in_the_cloud/archive/2013/10/01/what-s-next-for-mms.aspx


Starting this year we are merging MMS with TechEd.

objective is simple: Provide attendees a better opportunity for knowledge gathering and technical growth. By drawing together a larger community to this combined event, every attendee will have a dramatically wider range of experts and luminaries (both from the industry and within Microsoft) to learn from and engage.

TechEd 2014 will be your single best source for the latest news, trends, resources and deep technical education. Also, the System Center team is already preparing to teach the deep 300- and 400-level content you’ve come to expect at MMS. There will also be expanded Early Bird pricing options, dedicated Management Meet & Geek opportunities, dedicated Management Instructor-Led Labs and Hands-on Labs, structured and unstructured networking opportunities tuned to the Management community and broader communities, and other unique MMS experiences.

The next step is to mark your calendars for May 12-15, 2014 for TechEd 2014 in Houston, Texas. Registration opens on November 5, 2013, and if you register by December 31, 2013, you’ll get the aforementioned early bird pricing.
If you haven’t already, take a minute to sign up for the TechEd Insiders newsletter to get the latest TechEd information.
I’m looking forward to seeing everyone in Houston.

Friday, September 27, 2013

Local cached package 'C:\WINDOWS\Installer\xxxxxx.msi' is missing.

Evern seen the error the in the client.msi.log file that a local package is missing when trying to install the client.  This could be because a dependence has been removed or badly corrupted, but what file is missing?

Looking in the client.msi.log you might see this line:

MSI (s) (D0:F4) [17:45:28:546]: Warning: Local cached package 'C:\WINDOWS\Installer\6363739.msi' is missing.

Ccmsetup.log:

An MP does not exist on this machine.
Failed with error code 0x8007064c.
Installing version 4.00.6487.2700 of the client with product code {CAE5379F-5C3D-4D0D-AA57-DC1134125BA5}
MSI PROPERTIES are  .....................
IsFileMicrosoftTrusted Verified file 'C:\Windows\ccmsetup\{18173E5E-0E79-4447-A4DC-2CEEAA239871}\client.msi' is MS signed.
Installation failed with error code 1612

Client.msi.log

MSI (s) (84:78) [14:53:58:896]: ******* RunEngine:
           ******* Product: C:\Windows\ccmsetup\{18173E5E-0E79-4447-A4DC-2CEEAA239871}\client.msi
           ******* Action:
           ******* CommandLine: **********

MSI (s) (84:78) [14:53:58:927]: Warning: Local cached package 'C:\Windows\Installer\723298.msi' is missing.
MSI (s) (84:78) [14:53:58:927]: SOURCEMGMT: Looking for sourcelist for product {CAE5379F-5C3D-4D0D-AA57-DC1134125BA5}
MSI (s) (84:78) [14:53:58:942]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (s) (84:78) [14:53:58:942]: SOURCEMGMT: Failed to resolve source



Solution:
these all point to a possible missing file.  Indeed if you look in the installer folder you will be missing a file.  The problem is that these files are random and you can't just look up the file on another machine. 

So how do you find what you need?

for ConfigMgr 2007 you can look here
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\F9735EACD3C5D0D4AA75CD114321B55A

But the best thing is to stop at the Products node

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\

and search the entire node to look up the XXXx.msi you are missing to see which product is missing.  From there you can then go to another machine and copy the XXXX.msi to the broken machine.

You must look at the InstalledProperties\LocalPackage to see the file name
C:\Windows\Installer\129227f.msi

From here you can either rename the msi file or modify the key to match the file name.

Next restart your install, is this a supported method.  No but it should work.  With all unsupported process, please use at your own risk and test in a lab enviroment first.