Video Screencast Help

Showing Build Status in Deployment Solution 6.9

Created: 11 May 2011 • Updated: 20 Jun 2011 | 10 comments
Language Translations
Rhys Paterson's picture
+15 15 Votes
Login to vote

There are a million different ways to build and deploy an image.

In our environment, we use a thick Windows XP image that is preloaded with a fairly large amount of corporate software such as email, office, standard applications etc.

However, for various reasons, and unlike our new Windows 7 dev image, we don't just push down and apply an already built ghost file or WIM to the machine. We actually run an unattended install of XP and then install all the SOE applications on each machine using DS 6.9 SP4 

To help the support teams ensure the image was still building after XP was installed (and to make sure end users didn't start using it), we have a series of automatic admin logins on the machine that display an HTA with progress details about the build. It looks like such:

Ian Atkin thought it may be a good idea to post this up for other people to look at. So here you go! I've attached a sample file to this post. All you need are the two files: DeploymentSolutionBuildSplash.hta and DeploymentSolutionBuildSplash.jpg. You don't even really need the JPG, you could just use HTML to give some colour to the background, or even just leave it white.

The script basically does this:

Launches an HTA that the user can't close (without going to taskmgr and killing mshta.exe)
Displays a warning about the currently building machine
Queries the DS database and shows the following information via HTML:

  • Build version (that's a custom thing we do that is detailed in the script)
  • Machine name
  • Machine IP address
  • Machine asset tag
  • Machine serial number
  • The DS current job (event) that the machine is processing

It's all pretty simple and you shouldn't have any issues reading the attached script and figuring out what is happening.

We have a few reboots in our build after the XP source is installed, so we just increase the AutoLogonCount in the UNATTEND.TXT for the source when a reboot is needed in DS. Then we just make the banner the next job before we do anything else.

The banner sits locally on the machine, too. It's part of the source that is copied down to the machine initially. The DS job that calls the banner is just running a simple VBScript:

 'Display Install Banner


Set WS = Createobject ("WScript.Shell")

WS.Run "mshta c:\setup\DeploymentSolutionBuildSplash.hta",0,False


There's probably quite a few ways this could be improved/modified, but someone posted a thread asking about something similar, so I wanted to get it up.

Fred is just what I called the image by the way. I've also provided a .PSD file so you can edit the above image.

Let me know if you need any clarification with this.

Have fun!

Comments 10 CommentsJump to latest comment

ianatkin's picture

Good  man Rhys -well done!

Ian Atkin, IT Services, Oxford University, UK

Connect Etiquette: "Mark as Solution" those posts which assist you most in resolving your problem, and give a thumbs up to useful articles and downloads

Login to vote
mortenleth's picture

Hey Rhys

Great post you uploadet here, definently something worth doing, at some point we looked into changing the msgina.dll to a custom modified one, but really it's not a good solution, this is definently better.
I don't know if you have done anything so that the user can't do nothing but there are some modification which can be done, fx. you could initiate this script via. the shell in the users registry (the user you logon to show this page):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

then change it to call your custom vbscript that initiates the hta, that way this is the only thing beeing showed on the machine, and you have no start menu or anything (okay granted, it does make troubleshooting a bit harder, but you can still do a ctrl+shit+esc. to get the taskmanager up and start task from there i.e. cmd.exe, or explorer.exe).

You could also lock the keyboard and mouse, we have done this earlier so that the user can't do nothing on the client, but really this is more irritating for the administrator than it is helpfull (but i can find the registry settings to do this if you want it).

Use it if you want :)

Kind Regards
Morten Leth

Login to vote
wmheid's picture


How are you locking the keyboard?


Login to vote
Darren Collins's picture

Very nice idea, very nicely executed: thumbs up!

Darren Collins
Applications Packaging and Deployment for IT Services,
Oxford University, UK.

Login to vote
Kel's picture

Hi Rhys, nice job.

We have a "Build in Progress" background with a similar message that changes back to the standard corporate background when the build is complete.

I have also played around in our DEV environment with sending messages to session 0 using msg.exe.  Messages can be initiated as part of a DS task and can have timeout set to close the dialog box after xx seconds.  This can be helpful to see what stage the build is at when looking at the logon screen.



Login to vote
Ian_C.'s picture

Very neat. Thx

Please mark the post that best solves your problem as the answer to this thread.
Login to vote
Phydeaux's picture

Do you/anyone have a solution that can appear over the CTRL+ALT+Delete screen so we don't have to mess with any logins?  I'd also prefer if the same solution would appear on top of any screens if a user was logged in and using the machine but allow them to minimize it.

Login to vote
Darren Collins's picture


I recommend you look at PSExec from SysInternals (Microsoft):

The following command, run from a DS batch script job on a computer not logged in, will show the Calculator over the CTRL-ALT-DEL window (it's the -x switch that does it):

"C:\path\to\PSexec.exe" -s -x -i 0 "Calc.exe"

... but the DS job will run until you close the program (in this case calculator).  Therefore if you want to start something but not have it wait use:

Start "" "C:\path\to\PSexec.exe" -s -x -i 0 "Calc.exe"

Hope this helps,


Darren Collins
Applications Packaging and Deployment for IT Services,
Oxford University, UK.

Login to vote
Gibson99's picture

have you tested the psexec method with win7? 

also, any reason we can't call the hta from the RUN key rather than from the DS?  seems like it'd be simpler, and guarantees that the hta opens up right away rather than whenever aclient/dagent decides to check in with the DS.... and when your build job is done, simply delete that line from the RUN key just before your final reboot.  As it is, I change the desktop wallpaper from a STOP DON"T LOGIN one to the company standard wallpaper just before the last reboot, so a regedit at the same time would be trivial. 

i also find it simpler to just enable the autoadminlogon in the registry rather than trying to keep track of how many reboots i need and then modifying the autologon count in the sysprep file. then at the end of the build job, simply delete the autoadminlogon reg keys before the final reboot.

great work, though - i'll be adding it to our win7 build job for at least the autologon part of my job, since it's MUCH nicer and more informative than the simple html i threw together and am showing in IE in kiosk mode (iexplore.exe -k c:\temp\dontlogon.html) , and might try the psexec method for the second half of the build where it doesn't autologon.... though if the boss likes this, we may actually extend the autologon part up till the last reboot, just for consistency's sake.

If a Connect post helped you out, be sure to click "Mark As Solution" or the "Thumbs Up" button to let other users know about it.

Login to vote
Gibson99's picture

I've got this working in win7 during the autologon section; thanks Rhys! still haven't tried doing it at the CAD screen in win7, but it does work in xp, and it's great - the users seem to be a lot less likely to break things when there's this obvious status message of what's going on.  

now i'd like to change what data is being shown.  I deleted some other data i'm not using, and only want one more piece to be shown, but i don't know how to get there with my basically nonexistant sql knowledge.  

I'd like it to show the current status of the current job, such as "script execution complete" or "executing script..." or something i send using Wlogevent.  i've found the info i want in table dbo.status_log just by poking around in sql mgmt studio and doing a select top 1000 on various tables.  

my question is how to incorporate that into the query.  i know nothing about joins but i suspect that's what i'll need to correlate the computer id to the job id and its status.  

any suggestions (besides  i'm hoping someone will have done something similar and already has an answer.  

If a Connect post helped you out, be sure to click "Mark As Solution" or the "Thumbs Up" button to let other users know about it.

Login to vote