I need a nice ConfigMgr installation HTA, a front-end doing data collection over several “pages”, configuration files built from the answers, package installations started, and a nice uniform look\feel about it.
I could write a one-off HTA for this, but thought maybe there was an engine I could use already out there, something that takes input files to produce a wizard an engineer can navigate through. I had a look on the webby, but couldn’t decide or settle on the stuff I saw. Perhaps I missed a really great tool, but I was left thinking that I’d have to write my own.
Lots of hard work, so I’m thinking what presents a wizard I can subvert to my needs, ahem, repurpose?
Then I remembered the editable wizard in MDT 2010, allowing engineers to produce a custom wizard that comes up during OS deployment.
MDT2010 indeed has a wizard, and it has some good entry points too, an established XML file structure that can be edited, and a way to invoke VBScript, as well as a pane-based interface that you can navigate backwards and forwards with. It provides a framework you can hang stuff off of to build out a custom wizard. You can also perform prerequisite checking as well as data entry and form validation, and its all driven by an engine located in MDT’s Templates\Distribution\Scripts folder called Wizard.HTA.
Ok so I know the MDT Wizard can offer me a way to present GUI elements as a its running as a HTA application, and that it can run my VBScript code, so all I need to know now is whether its portable, can I move the wizard and its supporting files out of the MDT folders and separate it? Yes, just a small bunch of files, so it won’t take much effort to include in any kits I create.
Now the chore of editing the XML, the actual MDT Wizard engine documentation is limited, but you do have samples as well as working XML+Script that comes with the MDT 2010 installation. You can take it all apart to get an idea of what can be done here.
The idea of hand-crafting XML doesn’t have a warming appeal, but being able to repurpose the engine did, and if I could get the engine to read in a tailored XML file and allow me to control the GUI, perform a bit of prerequisite checking and form entry and validation, all leading to unattended file generation, then it’d meet my needs to a tee.
Shortly after touching down on the MDT 2010 Wizard as the weapon of choice, I found Michael Niehaus has written a MDT Wizard Editor tool that makes the Wizard even more accessible:

The MDT Wizard Editor, downloadable at http://mdtwizardeditor.codeplex.com/
The MDT Wizard Editor makes life so much simpler! Now I have a better way to view the XML and interact with it, to build out a project. Nice tool Michael.
Along with the tool, there are four articles so far, worth pouring over all of them, he explains how the engine works, and goes further, how to make modifications to build a custom wizard. Great stuff to get a handle on the wizard engine and the editor.
MDT 2010 Wizard Editor Part 1
http://myitforum.com/cs2/blogs/hemsell/archive/2009/03/20/microsoft-deployment-toolkit-wizard-editor-part-1-introduction.aspx
MDT 2010 Wizard Editor Part 2
http://myitforum.com/cs2/blogs/hemsell/archive/2009/03/20/microsoft-deployment-toolkit-wizard-editor-part-2-global-settings-and-custom-initialization-and-validation-scripts.aspx
MDT 2010 Wizard Editor Part 3
http://myitforum.com/cs2/blogs/hemsell/archive/2009/03/20/microsoft-deployment-toolkit-wizard-editor-part-3-panes-can-be-a-pain-or-how-to-bring-external-data-into-your-wizard.aspx
MDT 2010 Wizard Editor Part 4
http://myitforum.com/cs2/blogs/hemsell/archive/2009/03/20/microsoft-deployment-toolkit-wizard-editor-part-1-what-my-face-looked-like-when-i-first-tried-to-decipher-the-html-in-the-html-tab.aspx
After taking all that lot in, you’ll be tooled up to separate out the wizard from the MDT files, and start turning out custom wizards. And after going through the existing MDT XML files you’ll know the engine pretty well, and use it to front-end whatever task you’re performing. That’s pretty impressive considering this engine was written with OS deployment in mind.
I created my first XML file for messing around in the editor with, by cloning the Credentials.xml file as the starting point, I strip out a lot of the code, modified a few entries and left just enough to get started:
Here’s the code:
<?xml version="1.0" encoding="utf-8" ?>
<!--
' // ***************************************************************************
' //
' // Copyright (c) Microsoft Corporation. All rights reserved.
' //
' // Microsoft Deployment Toolkit Solution Accelerator
' //
' // File: YOUR FILENAME.xml
' //
' // Version:
' //
' // Purpose:
' //
' // ***************************************************************************
-->
<Wizard>
<Global>
<CustomStatement><![CDATA[ document.title = "YOUR TITLE" ]]> </CustomStatement>
<CustomStatement><![CDATA[ ButtonNext.outerHTML = "<button accesskey=O id=buttonNext language=vbscript onclick=ButtonNextClick><U>O</U>K</button>" ]]> </CustomStatement>
<CustomStatement><![CDATA[ window.resizeTo 525,325 ]]> </CustomStatement>
<CustomStatement><![CDATA[ window.moveTo Window.screen.width/2 - 525/2, Window.screen.height/2 - 325/2 ]]> </CustomStatement>
</Global>
<Pane id="PANE NAME">
<Body>
<![CDATA[
<H1>SOME TEXT</H1>
<table>
<tr>
<td width="100px"><u >U</u>ser Name:</td>
<td>
</td>
</tr>
<tr>
<td><u>P</u>assword:</td>
<td>
</td>
</tr>
<tr>
<td><u>D</u>omain:</td>
<td>
</td>
</tr>
<tr>
<td colspan=2>
</td>
</tr>
</table>
]]>
</Body>
<ButtonNext>
<Label><![CDATA[<button accesskey=O id=buttonNext language=vbscript onclick=ButtonNextClick><U>O</U>K</button> ]]> </Label>
</ButtonNext>
</Pane>
</Wizard>
Check out DeployWiz_Definition_ENU.xml in the MDT folders, it’s loaded with example material to get you into the engine.
Here's a screenshot of something I created quickly after I’d figured out what goes where:

To sum up, I’ve got exactly what I want without having to write any engine code!
Nestled within the deployment toolkit is a mature wizard system that can be repurposed for all kinds of activities. It can be lifted and placed alongside other bits and bobs, to help build up a solution.
Thanks to Michael Niehaus for the wizard editor, and to the MDT 2010 team for MDT.
Further reading:
MDT 2010 Wizard Editor
Michael Niehaus' blog
Mikael Nystrom blog
Chris Knackers blog
Microsoft Deployment Toolkit 2010