hi again, Thanks for your prompt reply; it was helpful. I went back and read the manual again a little more carefully (the changelog is part of this), but I still cannot figure out where/how one uses the global variables and functions. I don't see them in the sample config.js, and the manual (as previously stated) does not indicate where these are used. If you could give me some assistance in this, I would appreciate it. I gather from your response that the correct way to handle installing different sets of applications is to call the HTA separately once for the core applications, and once for the optional applications. The former having no user interface interaction (being invoked at first boot), and the latter presenting the user with a menu of choices (being invoked at first logon). I am assuming of course that WPI can be invoked from a command line inside a batch file, or a cmdlines.txt file (or even from within an MDT custom task sequence). I then went back to the manual to find out how to call the HTA from the command line with options, but I could only find one reference to this: that reference specified something like: "wpi.hta options= a bunch of file names" but no documentation as to what these file names refer to, what their contents might be, or how the files themselves are to be created. There was some info on folders used to find the files, but nothing else. Perhaps the manual should have several examples of wpi.hta command invocations with different options, and config files specified with listings of each file's contents, and what they mean. As with much of the manual the documentation here presupposes that one knows a fair bit about WPI already, which is fine if that presupposed knowledge is documented prominently elsewhere (preferably earlier) in the manual. There are quite a few threads in Msfn.org dealing with WPI CMD files. I am printing the most interesting of them out, will look them over, and see whether or not they give me any more insight into how WPI commandline invocations are used. As to VM detection, this is not particularly straightforward. No approach will work for all virtualization platform vendors nor will any approach be guaranteed to work from version to version within a virtualization vendor's platform. For Microsoft VM platforms the best approach appears to be to use WMI to query the motherboard manufacturer, if this string is "MICROSOFT", then you are running within a Microsoft virtualization platform, (and as long as Microsoft does not get into the motherboard manufacturing business ) this approach should work fairly well. (This approach was suggested in a blog by a Microsoft employee so it should be fairly reliable). There is nothing in the registry that will indicate that one is running in a virtual machine. If one thinks about this, that must be the case otherwise virtualization wouldn't work very well. There are many interesting blog postings on this subject -- many I fear having been written by those who have watched the movie "the Matrix" one too many times . This detection (or the results thereof) must be in-process in order for it to be of use to the HTA installation activity. One way to do this would be for someone to incorporate the detection capability within WPI; another would be to create a utility which runs before WPI is called and have the results of the detection stored somewhere. There is one detection program that come up on a Google search, but it is GUI only -- not much use here; there are also several vbscript fragments in several blogs that could be used. The two obvious places to store the results of the detection would be in the environment, or in the registry. Environment contents are only available in-process (so back to implementing in WPI unless one uses SETX -- -- but this ultimately ends up putting a result in the registry anyway, and that then requires that the entry be deleted when you are done with it -- for entries in the registry one also has to decide where in the registry would be most appropriate to put it. I gather that wpi does not use an installer and so there are no specific wpi entries in the registry??). Given how WPI is almost exclusively implemented in Jscript I'm not even sure that WMI queries are possible from within this environment (although I'm pretty sure vbscript/jscript can be intermixed on the same HTML page) -- as I am not an expert in webpage scripting. As to the slowness of WPI I checked and I do not have any CDs or DVDs in the drive; I am however permanently connected to the Internet. The slowness does not occur on initial page opening only on page transitions between tabs, and drop-down selections. My default browser is Firefox, and I wonder if this could be contributing to the slowness as you are using the MSHTA engine, and the switching back and forth between the IE and the Firefox engines may be contributing to the delays. As I am not using WPI in any kind of installed/configured environment, I propose to let this issue rest until such time as I am using WPI for real (this will not be for a couple of weeks as I am presently debugging several MDT 2010 problems). A couple of final thoughts: I would suggest separating all UI options, themes, etc. from HTA invocation options. This will let those interested in UI customizations to focus on them appropriately and those only interested in how WPI is executed to hone in on those options without having to worry about a lot of UI clutter. Lastly, I too hate documenting (I'm a crummy typist to boot -- the teacher said never to look at the keyboard, but of course I did/do :-)), and I can sympathize -- -- in fact most of this reply was dictated using Dragon NaturallySpeaking (I had used this package several years ago and it was marginally useful; the current version is much improved, and if I can just learn to think and dictate in the same fashion that I think and type, then all will be well). Regards, Ed