I've pretty much come to the end of my initial learning curve on how to automate Vista installations using the AIK.  There is some great documentation out there on how to execute the specific tasks necessary to add drivers and packages to the image.  However, there are some gaps on how to tie it all together.  It's the subtlties that really hurt my learning curve (and installing the OS over and over and over... to test the effect of each change) that don't seem to be well documented anywhere.  I'm hoping to share at least the trickiest items that I encountered in order to save someone else many hours of learning.  As a note, I have not tried to use what used to be called "Business Desktop Deployment" (BDD) and is now "Microsoft Deployment Toolkit" (MDT) and some of the challenges I have below may be addressed in that.

I'm doing my deployments via Windows Deployment Server (WDS), the replacement for Remote Installation Server (RIS).  In RIS, I never really used the RIPREP functionality because I found the administrative burden of creating a new RIPREP image for each hardware platform and every time I needed to deploy new software excessive.  Though RIPREP could push the complete OS and applications much faster than going through the install process, I just found it easier to deal with one scripted install I could add drivers for all the hardware to, and deploy applications via SMS. 

First off, for anyone who has used RIS and the "unattend.txt" methods of installs in the past, there are a couple of features I really miss or have not yet figured out how to do in WDS:

  • What I miss most from RIS: If it did not find a computer object with the netbootGuid attribute populated with the machine's UUID, it would prompt for a computer name during the initial startup screens. This meant I did not have to pre-stage the system before the user or SA installed it, but if it ever had to be re-installed it would keep the same name and OU location in the hierarchy (very useful in DR scenarios) since RIS would populate the netbootGUID with the UUID upon creation (WDS has an approval process scenario that requires manual intervention, but doesn't have a "auto approval" mode). Additionally, since computer name is really the only unique piece of information needed for each and every system I really liked the fact that I could deliver a 4 step install process to users and administrators and leave them with a fully provisioned system:
    1. Press F12 on boot
    2. Log in
    3. Enter computer name
    4. Go do something else for several hours
  • In RIS, if the security on the images was managed in such that a user was only allowed to see one image, RIS automatically selected that image and installed it.  Regardless as whether or not only one image is available, WDS prompts the end user to select an image.
  • In the "unattend.txt" install automation method, the disk configuration options were tied to the image being deployed.  I really liked this feature since I could have both a server OS image and a client OS image on the deployment server and allow the server operator to create the partitions they wanted according to their needs while automating the partitioning of the client system disks.  Now I think I need two WDS servers to provide the same level of functionality.  I don't think this is WDS limitation, but more a limitation related to the 2 stage install process Vista uses.  I still miss this functionality, regardless of where it falls.
  • The ability to have one OS build/WIM and multiple configuration files if the only difference, for example, is that one department doesn't want their users to have certain windows features installed by default (think the default Windows games).
  • The RIS UI loaded very fast, this cut down the time an administrator was sitting idle on a system rebuild, cutting operational costs.

What I really like about the new tools:

  • Multi-cast - large deployments = nuff said.
  • The administrative tools are much better.
  • The tools and documentation for generating the scripted installs made life a lot easier than the initial learning curve I recall going through with unattend.txt.
  • Driver management.  Run a couple of command lines and the image is updated. There is no longer a need to have to manually update a text file (typos... grrr) and build out a folder structure for every image/driver set managed.  Adding in new drivers to the boot image is much easier than in RIS and uses the same methodology as the install images, which is a very nice win.  And no more drivers all using oemsetup.inf tripping over each other in the boot image and fighting with that.
  • Drive partitioning tools are much better.  Even if the UI can't provide the functionality needed, the ability to drop to a command line and use diskpart for the fine grained configuration desired is awesome.