I use Nliteos and the unattended MSFN forums together to get my windows installation how I want it... its easy to add in much of the automation code into nLite. nLite doesnt do everything but it does A LOT of customization, and it makes it easy. For automation you pretty much need to do it for yourself then add it in....
as an example here are a few of my run once commands:
start /wait %SOURCE%OEMINSTALL\Updates\dotnet11sp1.exe
start /wait %SOURCE%OEMINSTALL\Updates\MP10Setup\setup_wm.exe /Q:A /R:N /DisallowSystemRestore
start /wait msiexec /i %SOURCE%OEMINSTALL\IP55_32Eng\IP55.msi TRANSFORMS=%SOURCE%OEMINSTALL\IP55_32Eng\IP55.mst /q /norestart
start /wait msiexec /i %SOURCE%OEMINSTALL\Drivers\Display\ACE\ATICCC.msi /quiet /norestart
start /wait msiexec /i %SOURCE%OEMINSTALL\Applications\thunderbird-1.5.msi /quiet
start /wait msiexec /i %SOURCE%OEMINSTALL\Applications\Firefox-1.5.0.1.msi /quiet
start /wait %SOURCE%OEMINSTALL\Office2003\setup.exe TRANSFORMS=%SOURCE%OEMINSTALL\Office2003\MyTransforms.MST /qb-
start /wait msiexec /i "%SOURCE%OEMINSTALL\Applications\AdbeRdr707_en_US_distrib\Adobe Reader 7.0.7.msi" /quiet
start /wait %SOURCE%OEMINSTALL\Applications\jre-1_5_0_06-windows-i586-p.exe /s /v"/qn IEXPLORER=1 MOZILLA=1
I find that customizing the runonce stuff is easiest if you run through the program once and then open up the last_session.ini file and adding in all the commands you would like it to run. Then running it again and only modifing the silent install files and writing the image.