Implementing the "Windows XP Tablet PC Edition 2005 Single-Image Deployment Supplemental Guide" Process in MDT 2008
03 August 2008 - Important Update
The content in this post is obsolete. Please see my new August 3rd post for a complete update. I will leave this post up for a while for people who are still using the old scripts. However, I will be deleting the post content at some point.
For just about as long as there has been Windows XP Tablet PC Edition, there has been a guide on the Microsoft web site for the process of taking a image of Windows XP Professional and "transforming" it at deploy time into Tablet PC Edition. This guide can currently be found here. A few years ago, I scripted this process for one customer's home-grown deployment framework. Last summer I ported this process over to BDD 2007 Lite Touch. Finally, about a month ago, I moved this process over to MDT 2008 for both Lite Touch and Zero Touch (SCCM) deployment. In this post, I will review what needs to be done to prepare your Windows XP SP2 or SP3 image to use this process and how to use the scripts (included in the Attachments link below) to implement this process with MDT LTI or MDT ZTI with SCCM. (Note: This will likely work with BDD 2007 and/or SMS 2003 OSD, but I haven't tested this. Let me know what happens if you try it by adding a comment to this post.)
To create an image with MDT that will support this process, you need to include the CMPNENTS folder (of the same Service Pack version) from CD 2 of the Tablet PC Edition 2005 media in your Windows XP SP2/SP3 installation media. I will describe here how to do this with MDT Lite Touch. After adding the Window XP SP2 or SP3 installation media as an Operating System in the Deployment Workbench, use Windows Explorer to open the Distribution folder. Copy the CMPNENTS folder from CD 2 of the Tablet PC Edition 2005 media (must be from the matching Service Pack version) into the Windows XP installation media folder at the same level as the i386 folder as shown in the figure below.
Then use MDT Lite Touch to build and capture your image. If you want to use an MDT Task Sequence in SCCM to build and capture your reference image, add the matching CMPNENTS folder to the Window XP SP2 or SP3 installation media before importing it into SCCM as an Operating System Install Package. This will ensure that the MDT scripts will place the CMPNENTS folder in the \Windows\Source folder in the image. This is where the scripts expect to find it at deploy time. (I don't usually recommend doing the following since it can lead to bad image version management habits but if you have an existing Windows XP Professional SP2/SP3 WIM image, you can use ImageX to mount the WIM, copy the matching CMPNENTS folder into the \Windows\Source folder, and commit the changes. This WIM will then be useable with this process. Since this is really a new "version" of your image, update any image version tattoo (Registry, file, etc.) in the image as well. However, if you have already automated the image build with MDT, I recommend that you just rerun the image build and capture instead.)
After your image has been updated in this manner, you must then update MDT. There are two parts to this process. The first part is determining whether the target computer is a Tablet PC and the second is executing the scripted changes to convert the OS to Tablet PC Edition if the target computer is a Tablet PC. There are a numbers of ways to determine whether the target computer is a Tablet PC. You could add a custom property to Make/Model detection called IsTablet (must have a value of True or False). If you are using CustomSettings.ini to store your Make/Model information, you would put a direct entry in the CustomSettings.ini Make/Models sections. If you are using the MDT database, you could add an IsTablet field to the Settings table, populate the IsTalbet field of the Make/Model rows with True or False, and add a database query to CustomSettings.ini to retrieve the IsTalbet field.
However, I took another approach that I find simpler to maintain. It involves detecting whether the target computer has Tablet digitizer hardware. I add a custom property to CustomSettings.ini called TabletPnpIds. In this property I place a comma separated list of the Plug & Play Device ID's of the digitizer devices on all supported Tablet PC model. Then a user exit script uses this list to determine if the target computer is a Tablet PC and set the IsTablet property accordingly.
To update MDT to use my entire process, use the following steps (respecting any change management process or change windows you have, of course). If you want to use your own method of setting IsTablet, then you can skip the Edit CustomSettings.ini for detecting Tablet PC hardware steps and implement you own method.
Add the Custom Scripts to the MDT Scripts: First, extract the two scripts from the attached ZIP file and add them to either your LTI Scripts folder or your SCCM MDT File package. Be sure to update your MDT Files package and Distribution points in SCCM after doing this.
Edit CustomSettings.ini for Detecting Tablet PC Hardware: You will need to add the following to CustomSetting.ini to use my method of determining whether the target computer is a Tablet PC (additions in blue).
Properties=MyCustomProperty, TabletPnpIds, IsTablet
You will need to populate TabletPnpIds property with the digitizer Device ID's for your Tablet PC models. To determine the Plug & Play Device ID's of the digitizer devices, you will need one of each supported Tablet PC model with Windows XP SP2 or higher or Windows Vista already installed and the digitizer driver installed. On each PC, open Device Manager and find the entry for the digitizer device. This will likely be under the Human Interface Devices category and will likely have the word "Pen" or "Digitizer" in its name. Right click on the device and select Properties. On the Details tab, select Device Instance Id (or Device Instance Path on Vista) from the drop down list.
In the case of the "Wacom Penabled MiniDriver" shown above, the Device Instance Id is ACPI\WACF004\4&2F7DB942&0. The portion of this ID up to the last backslash, ACPI\WACF004, is the Device ID. The portion after the last backslash, 4&2F7DB942&0, is the Instance ID for this device. The Device ID is one of several hardware ID's embedded in the device by the manufacturer to be used for Plug & Play detection. The Instance ID is a unique identifier assigned to a particular device by Windows when it is detected. The Instance ID allows Windows to uniquely identify a device when there is more than one of the same device present in the system (for example, two of the same model network card). The part we are interested in is the Device ID. Put the Device IDs, including a trailing backslash, in the TabletPnpIds entry separated by commas.
The last two entries in the IsTabletCheck section tell the MDT Gather task to run ZTI-DectectTabletExit.vbs and set the IsTablet custom property to the result of the DectectTabletPC function in the script.
Edit CustomSettings.ini for Setting the Tablet PC Edition Volume License Key: The next changes to CustomSetting.ini set a custom property called XPTabletProductKey to your Tablet PC Edition Volume License Key. If you do not have one and you are a Select License, Enterprise Agreement, and Enterprise Subscription Agreement customer, then see the Notes section in the Single Image Deployment Guide to obtain one.
Add the following changes to CustomSetting.ini so that XPTabletProductKey will have a value when IsTablet is true. Replace AAAAA-BBBBB-CCCCC-DDDDD-EEEEE with your Tablet PC Edition Volume License Key. (Additions for this part in green):
Priority=IsTabletCheck, ByTabletType, Default
Properties=MyCustomProperty, TabletPnpIds, IsTablet, XPTabletProductKey
If you are using SCCM, remember to update your Settings Package with the updated CustomSetting.ini.
Edit the Task Sequence to Add a Step to Run ZTI-XPTabletSingleImage.wsf: The next step is to edit the Lite Touch or SCCM MDT Task Sequence to run ZTI-XPTabletSingleImage.wsf during the middle of the PostInstall phase. The picture below shows this for an SCCM MDT Task Sequence.
For an SCCM MDT Task Sequence, be sure to check the Package box and select your MDT Files package.
Import Digitizer Drivers: This should go without saying but you must import digitizer drivers into the Deployment Workbench for LTI or into the Drivers library and add them to Driver Package(s) for SCCM. The Single Image Deployment Guide shows how to extract the "in the box" digitizer drivers. But if you don't have any devices that need them, use the PC manufacturer's drivers instead. You do not need to place any drivers in the C:\Sysprep\i386\Digitizer folder as shown in the Guide. Use the Deployment Workbench Out-of-Box Drivers or SCCM Driver Packages to handle drivers instead.
That completes the setup. When you deploy this XP Task Sequence to a Tablet PC, your Windows XP Professional Image should magically transform into Windows XP Tablet PC Edition 2005. If you want to test this process and don't have any Tablet PC's handy or you want to test using Virtual Machines (Virtual PC, Virtual Server, Hyper-V, VMWare, etc.) then use the following trick. Pick a device on your target computer (it's not really important which one it is) and place it's Device ID in the TabletPnpIds list. This will cause the IsTablet property to evaluate to True for this machine and it will result in Tablet PC Edition being installed on this non-Tablet computer.
12 June 2008 - Important Update
In this post, I described using this process with MDT 2008. Since that time, another Microsoft Consultant (Barry Hartmann of MCS Federal, thanks Barry!) encountered an issue with this process if you have the .NET Framework installed in your Windows XP Professional image. The XP Pro to Tablet PC Edition conversion uses a rather unintelligent, brute force installation process to install .NET Framework 1.0 (which is required by some Tablet PC Edition components). If a newer version of the .NET Framework is installed in your image, this process will downgrade shared files and registry values. This essentially breaks the newer version of the .NET Framework.
Barry encountered this problem when he tried to install Project 2003 on a machine deployed with the "single image" process that had the .NET Framework 3.5 installed in the original XP Pro image. The Project installation fails with the .NET Framework in this state.
The one obvious solution (the one my customer has chosen) is to not include the .NET Framework in the XP Pro image. My customer will be installing .NET Framework 3.5 as an operating system specific post deployment item in the SCCM Task Sequence. The other thing that seems to correct this if the .NET Framework is in the image, according to Barry's testing, is to initiate a repair on the highest version of the core Framework installed (1.1 or 2.0) after the deployment/conversion process.
These blog posts referenced below contain the command lines you should be able to use to repair the .NET Framework 2.0 RTM and 2.0 SP1:
- For 2.0 RTM - http://blogs.msdn.com/astebner/archive/2006/02/07/527219.aspx (the commands there are for uninstall, but if you leave off /u it will do a repair instead)
- For 2.0 SP1 - http://blogs.msdn.com/astebner/archive/2008/02/19/7805444.aspx
Finally, a few fixes were made to one of the scripts. Barry discovered incorrect paths were written to files in certain SCCM deployment scenarios. The attachment has been updated with the newer version.
Please post comments with any feedback, suggestions, or issues.
This post was contributed by Michael Murgolo, a Senior Consultant with Microsoft Services - U.S. East Region.