I've spent a great deal of time modifying existing products to do exactly what you are talking about. I'm a VAR and I've installed thousands of completelly different PC's (depending on the customers order) using my setup (any OS I want.) I'll try to break down what I do, but I have to warn, I've modified some of these programs so heavilly that there barelly recognizable from the original versions. In many cases, requiring assembly or disassembly. How it works (Programs I use are listed below): First boots up using a bootp server and launches DOS IN DOS: - Detects NIC and loads appropriate DOS NIC driver - Creates a new PC installation request on the server via Network. Administrator see's this on the server and tells it what OS, and Computername we want for this PC. Then it's automated from here... - System creates a 5GB FAT32 Partition and formats it (and a status partition just to hold a variable for me in the MBR) - Detects the type of motherboard and flashes the latest BIOS and then Programs BIOS settings using iToolkit.exe It even programs the system serial number and Chassis version into the BIOS for me for that particular system (Intel boards only for that last part) - Detects all peripherals and copies drivers to C:\TEMP\xxxx folders for that OS. This is why I start in DOS. It's pretty easy to detect hardware here. - Runs BootPrep to give us a bootsector - Unzip's a 41MB zip file containing everything you need for a mini WinPE OS. - Launches a Diagnostic utility who's results are recorded for later (Quicktech Pro) - Reboots to HDD now and launches WinPE - WinPE connects to server and launches Winnt32.exe over network for appropriate OS - WinPE reboots then system boots into File Copy Mode Phaze of Windows Install - After another Reboot Windows Install converts Filesystem from FAT32 to NTFS and expands it to full size of HDD. - Windows install now finishes up, using unattend.txt of coarse. - First boot starts installing some small apps and windows updates that could not be slipstreamed for whatever reason. - Second reboot the system starts installing software over the network. The software packages to install are determined by variables, which in this case are parsed out of the "Computername" we specified originally, using a small simple program I wrote in ASM. - Third reboot the system executes a diagnostic (Stresstest) which runs indefinatelly until I stop it. The results are again logged for our records. - Also a selectable program installer is launched, so if you missed any software, you can simply check off the checkboxes of software you want and 1 click to install it. At this point windows is installed w/ all appropriate drivers and software and I've only made 6 clicks of the mouse. (OK I know it's lame I counted) Here is a culmination of the base programs I use to accomplish this (Hope I'm not forgetting anything): - BOOTP Server - I use Win2K for BootP - TFTP Program - I use Kiwi Cat Tools. Simple and free. (If anyone know's how to get Win2K to do this, I'de like to know) - Bootmanage Administrator - http://www.bootix.com . I've spent a rediculous amount of time modifying the default version of this to get where I'm at now, but it was worth it. I can do anything fully automated for thousands of different hardware configurations of PC's and OS's and software. Absolutelly no images here. This is what takes care of detecting the peripherals in DOS and copying the appropriate drivers. - UMBPCI.SYS for a high memory driver - FDISK.COM and FORMAT.EXE - from http://www.freedos.org The switches available in these 2 versions of the classics are great for 100% unattended creation of partitions. - BOOTPREP.EXE - To give us a windows boot sector - WINPE - a Striped down version of WinPE. As small as you can get it. I am around 41MB Compressed - INSTALLS.EXE - Search around for this. It's a pretty decent selectable program installation utility. Simple to use and configure. - SYSPREP - Obviouse I think. Before my machines are syspreped, I use WMIC and sysinfo to gather as much information about the system as possible which I record in a log file for our records. Chad