Deployment Fundamentals – Volume 3 is crammed with a lot of useful information on how to deploy Windows 7 with System Center Configuration Manager 2007 R3. We (the authors) have all been fighting with OS deployment for many years, and we simply decided to fill the book with everything we know on how to make it effective and easy to manage OS deployment in ConfigMgr. You also will find many real-world examples, including ready-made scripts and solutions you can use directly in your environment. Although this is a ConfigMgr 2007 book, there are few changes in the way OS deployment works in ConfigMgr 2012. Therefore, all of the useful insights and practical knowledge shared in this book translate easily to ConfigMgr 2012.
Discover how to – Install ConfigMgr 2007 R3 for OS deployment in multiple sites – Migrate from Windows XP to Windows 7 – Create the perfect reference image – Integrate with MDT 2010 and why – Manage device drivers – Install applications and software updates – Configure your OS deployment with BitLocker and automate BIOS configuration – Extend and customize ConfigMgr 2007 OS deployment – Create custom scripts and frontends and extend the database – Install and configure User-Driven Installation (UDI) – Perform advanced troubleshooting
Great introduction to UDI V2 over on the TechNet Blogs by Chris Adams.
UDI Task Sequence generates "No valid Windows directory found, data and settings will not be captured" error
When running a User Driven Installation (UDI) Task Sequence on an x64 (64-bit or AMD64) Windows 7 machine, it shows the following warning under User Data and Settings:
No valid Windows directory found, data and settings will not be captured
This can occur when your 64-bit image is configured as a 32-bit image in the UDI Wizard Designer. When you add your image, the UDI Wizard Designer defaults to specifying a Windows 7 x86 (32-bit) image:
If using a 64-bit image you will need to change this to AMD64.
Once you remove the x86 reference and added it back as AMD64 in the wizard it allows the Task Sequence to work as expected.
The following is a list of known issues that relate to UDI deployments:
· If you receive error 404.3 when browsing to the UDI Designer web service, this error is typically the result of the Windows Communication Foundation (WCF) multipurpose Internet mail extensions (MIME) type not being registered correctly. To register the WCF MIME type on the web server, go to %Windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation. From an elevated command prompt, run ServiceModelReg.exe –I to register the MIME type for the .svc extension, which the web service requires.
· When you use an x64 boot image for operating system deployments, the status background bitmap will not be displayed in the Windows PE environment.
· To install language packs, you must configure the list of language packs in the UDI Wizard Designer. For each language pack, add the Install Language Pack task sequence step in the UDI task sequence and point to the Language Pack package.
· If you are using stand-alone media, the value displayed for Deployment Time by OSDResults at the end of the deployment is not guaranteed correct, because a network connection is not assumed to be available when using stand-alone media. Therefore, the machine’s basic input/output system (BIOS) clock cannot be synced to a correct time. In some cases, the deployment time may show a negative number, as occurs when the time available from Windows PE at the start is incorrectly set with a value that is actually later than the time at which the deployment finishes.
· Refreshing a computer using ZTI and UDI task sequences fails when local admin accounts are present on the computer. Task sequences also fail when the default Capture User State step has Capture all user profiles with standard options selected but the default Restore User State step has the Restore local computer user profiles check box cleared and System Center Configuration Manager 2007 cannot migrate the new accounts without assigning them passwords. To work around this issue, users must manually modify the task sequence, selecting the option to migrate local accounts, and must specify a password to be used with the local account. For details, see Capture User State at http://technet.microsoft.com/en-us/library/bb680924.aspx.
· In the case of UDI, the OSDDomainName task sequence variable is case sensitive. When setting the OSDDomainName value through a task sequence step or in CS.ini, it must be an exact match to the domain value set in the UDI configuration file.
· The Computer page in the UDI Wizard cannot be set to silent when the Workgroup option is selected. To work around this issue, disable the Computer page, and make sure that the OSDComputerName and OSDWorkgroupName variables are set.
By default the UDI based task sequence will use the UDIWizard_Config.xml contained in your MDT 2010 Update 1 toolkit package. What if you want to use the same toolkit package for multiple task sequences, but provided different versions of the UDI wizard? For example, if you have different domains you want to join, or possible different applications to be presented to the user, or even skip screens for some task sequences. Well that is possible, but it’s buried in the documentation!
Reading The Documentation
First, here are the steps outlined in the MDT documentation under the section “Configure the OSD Setup Wizard Behavior.”
1. In the Configuration Manager Console, go to Computer Management/Task Sequence.
2. Right-click task_sequence (where task_sequence is the name of the task sequence you want to edit), and then click Edit.
3. Beneath the State Capture phase, click the UDI Wizard task sequence step.
4. On the Properties tab for the UDI Wizard task sequence step in Command line, modify the text as follows (where path is the path to the configuration file which is relative to the Scripts folder and file_name is the name of the configuration file)
(If you put the xml files in the \scripts folder of your toolkit package, you don’t need to specify a path value, just as you will see I didn’t specify a path in my example below):
cscript.exe “%DeployRoot%\Scripts\UDIWizard.wsf” /definition:path\file_name.xml.
Note The above text appears on one line. The line wrap seen here is the result of document formatting constraints.
5. Repeat steps 3 and 4, substituting State Capture with Preinstall/New Computer Only.
6. Repeat steps 3 and 4 for any custom task sequence steps that run UDIWizard.wsf.
7. Click OK.
Performing The Steps
Now, lets show you how to actally do that.
First, in my toolkit package, you can see i have 2 definition xml’s:
Next, we will want to edit our task sequence:
First, we need to to go the first UDI Wizard step located under the State Capture phase:
Then we need to update our command line to add the /definition command and tell it what file to use, if you put the XML in the \scripts folder of the toolkit package then you won’t have to specify a path value here, you can just specify the file:
Perform the same actions for the UDI Wizard step under Preinstall/New Computer Only:
Perform this on any other custom step you might have added that calls the UDI Wizard, then click OK to save your changes:
Now, when we run the task sequence on our client, we’ll see the new welcome page i created to ensure that I’m using the new configuration instead of the default UDIWizard_Config.xml.
Using A Custom Variable To Define The XML
Now another interesting way to set a different XML is to take advantage of the MDT integration and use a custom variable. This would allow you have a single task sequence that could call any number of UDI config xml’s. You could take that a step further and use any number of MDT rules to define how that XML gets set, like based upon the location, or chassis type, or a plethora of other things, way cool! I think this is a fantastic idea and was proposed to me by Michael Niehaus in an email exchange we had. So lets show you how to do that.
First lets change our task sequence to use a custom variable we’ll call “UDIXMLFile”.
Next we will need to configure the customsettings.ini file for our settings package for this task sequence. So here is the package I am going to modify.
Here is a bone stock customsettings.ini file:
Here we’ve added a custom property of “UDIXMLFile”, and we’ve configured a value of UDIXMLFile=UDIWizard_Config_2.xml
Next, save your changes and make sure to update the distribution point for your settings package. Again we launch the task sequence on our client to verify it’s using the XML file we want.
So how about an example were we set different XML’s based upon the DefaultGateway. Here we’ll set a UDI config XML based upon whether you are in London or the United States. Maybe it’s something as simple as having a different welcome page message, or you’ve configured different OU’s to be selectable. Here is an example customsettings.ini where we’ve configured either a UDIWizard_Config_2 or UDIWizard_Config_3 file to be used depending on where you are located.
Just a quick example to show you some of the possibilities.
Hope this helps!
I was having trouble getting my web service to respond, or even browse to make sure it was working. If i tried to connect to the web service via the UDI Wizard Designer, then I would get the following:
If i tried to browse to the web service, then i would get the following:
I noticed after reading the release notes for Update 1, that there is a known issue with UDI and the 404.3 error. Basically stating the following:
“If you receive error 404.3 when browsing to the UDI Designer web service, this error is typically the result of the Windows Communication Foundation (WCF) multipurpose Internet mail extensions (MIME) type not being registered correctly. To register the WCF MIME type on the web server, go to %Windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation. From an elevated command prompt, run ServiceModelReg.exe –I to register the MIME type for the .svc extension, which the web service requires.”
Running this, showed a bunch of components getting installed:
Testing the web browser again, I was not able to browse to the web service:
Also, I was able to connect through the UDI Wizard Designer now as well:
Lesson learned, read the release notes 🙂
Be sure to check out my previous posts on the Beta for some overviews and guides:
Make sure your build is 5.1.1642.01
This post will cover setting up application dependencies and application mappings with UDI (User Driven Installation). In this example, we are going to configure a automatic package mapping for Adobe Reader 8.2 to Adobe Reader 9.0. We will also configure a prerequisite for Office 2010 of .Net Framework 3.5. An application mapping will automatically install an application based upon another application installed already in the client system. This is most commonly used for upgrading older versions of applications, like our example from Reader 8.2 to 9.0. Application dependencies can be used to ensure that application prerequisites are installed, for example making sure .Net Framework is installed for a .Net dependent application.
The first thing we need to do it open up the UDI Wizard Designer, open up the xml you want to edit (the default xml is udiwizard_config.xml) and then go to our Application/Package Selection screen.
Next, we need to add the packages we want to work with to the selected packages list.
Next, we will need to go to “OSD Applications” and then add the applications to our list.
Adding Adobe Reader 8.2.0 to both 32-bit and 64-bit.
Adding .Net Framework 3.5 SP1 to both 32-bit and 64-bit.
Now we have them added to our list and we can go ahead and create the dependencies and mapping.
First, lets create the mapping for Adobe Reader 8.2 –> 9.0.
We will need the Add/Remove Programs display name along with the application GUID. The easiest place to get the GUID is from the program properties in ConfigMgr if you have imported the MSI code. (Or you can do a quick import to get the code).
Once you have the GUID and display name, then we will want to click “Add” and then enter that information.
Now we can select “OK”.
Next, lets setup our dependency for Office 2010.
Next, we will want to select the dependency and then choose “Require” for our case.
Next, we can click “OK” since we’ve added our dependency.
If you click on Adobe Reader 9.0, you can see the mapping listed:
If you click on Office 2010, you can see the dependency listed:
Next, lets save our configuration and then update the distribution points.
Now it’s time to test! So we will run our UDI Task Sequence on a client machine and launch the wizard.
Because we’ve setup a mapping for Adobe 8.2 to automatically install Adobe 9.0, you will notice that Adobe Reader 9.0 is checked by default when the wizard is run, even though we didn’t configure it to be selected by default.
Also, we had configured Office 2010 to have a prerequisite of .Net Framework 3.5 SP1. So you will notice as soon as we check Office 2010, .Net Framework 3.5 SP1 will become automatically checked.
Now you’ve seen how to create basic application mappings and application dependencies. Hope it helps.
Lets take a look at how we can add some applications the UDI wizard to be presented to the user. This post will cover the basics of adding an application the be presented in the wizard and making it mandatory. There will be later posts on some of the more advanced functions you can do with applications, for example like “mapping.”
First lets configure our package selection screen. We want to configure our server name (1), then refresh the data (2), and then we want to select the application we want to add (3), and finally add it to the select packaged list (4):
Next we want to add the application the list:
Notice that we don’t see Office 2010 listed. This is because in order to show up on the list, the checkbox for allowing this program to be run from a TS needs to be selected.
Now, some interesting behavior with the UDI designer, is that even after checking this box, you still won’t be able to see the program listed. Let me show you below.
Lets refresh our data:
And now try to see the program again:
Still not listed. So what we need to do in order to get the program to show us is actually remove it from the list and re-add it again.
Now it’s listed again:
And now we can actually add it as an application to our wizard:
Now we have it selected and configure other properties if we would like to:
Most commonly, you would pick “Mark as Selected” and/or “Selection Locked”. For this purpose, we are going to leave these cleared and just present it in the wizard. You’ll now have an entry for OSD applications.
If we run the Task Sequence on a machine, we will now see that we have Office 2010 listed as a selectable application:
Now, lets go ahead and add another application, but make it mandatory this time. Here we’ve taken Adobe Reader 9 and marked it as selected and locked the selection.
And when the Task Sequence is ran again, it will show up like this in the wizard and we can see that Adobe Reader 9 is checked and grayed out and we are unable to clear the check box:
Here we can see Adobe Reader installing in the Task Sequence using the options we just showed above:
Now you’ve seen the basics of adding applications to the UDI wizard and presenting them to the user. Along with making a application mandatory to the user, this would be great for items like virus scanning software or other client agents you might want to force to be installed through UDI.
I started writing this blog a week ago and just couldn’t find the time to finish it, as it turns out my girlfriend would prefer I spend time with her instead of writing a blog post. Then I decided I would make use of my time on a return flight home and finish the post. So thanks to Hyper-V, Windows Live Writer and good battery life on my laptop, here is a post on a first look at UDI in MDT 2010 Update 1 (Beta).
This will show an XP to Windows 7 refresh of a Hyper-V virtual machine. I haven’t done any customizations to UDI other than providing the Domain to join and a list of a few Organization Units to pick from. I’ll show you how to customize the UDI interface in coming blog posts. First, let me show you the options I’ve configured in the UDI Wizard Designer to get the basic process to run.
We’ve configured the Domain of Deployment.com, we’ve added a few OU’s that can be chosen to place the computer into, we’ve disabled the Workgroup field and we’ve changed the default selection to be the Domain.
User Configuration Page
We’ve unchecked “Allow user to add additional accounts to the local Administrators group.
We’ve set the Timezone to Central Time.
After you make changes to the xml, make sure to save the file and then update your distribution points to reflect those changes.
Lets kick off an OSD advertisement in Windows XP and see what the process looks like as it actually runs.\
Here we have a few non-mandatory task sequences available to be executed, we are going to choose the Windows 7 x86 UDI task sequence.
Here we have our task sequence starting to execute:
Next we have the Welcome screen of the UDI wizard presented to the user:
Next we have our pre-flight checks being run and passed:
Next we have the Computer Details page which allows us to name the machine, join a domain or workgroup, along with provide credentials to join the domain:
Next we have the screen where we can set the local administrator password:
Next we can set the Time Zone and keyboard layouts:
Next we can chose the image, select the volume and the windows target directory, note that you can optionally select a format here:
Next we can select the applications to install, here is where you could also make applications mandatory by configuring the pane in the UDI wizard designer or just allowing users to choose from a list of applications, or even use package mapping to detect what was installed on the machine.
Here is our demo, we don’t have any applications configured as I wanted to show you the bare minimum to get UDI going.
Finally we have a summary screen showing the options that have been configured:
The process starts and it’s staging WinPE to the disk:
Here we are in WinPE, running an offline User State Capture (thank you USMT 4.0):
Next we apply the image to disk:
Next we Setup Windows and install the ConfigMgr client:
Install applications if applicable (none in our demo here, so this step went through very quickly):
Restore User State:
Here is the deployment finished and we are presented with a summary screen. (I really like this):
There you have it, that’s the basic overview of UDI running an XP to Win7 refresh and what it looks like. Looks like it’ll be very promising!