Jump to content

WPI v5.0.1

Recommended Posts


Windows Post-Install Wizard (WPI for short) is a hypertext application designed for giving users choice. While Windows XP offers many ways of customizing the setup process out of the box, its major drawback is the lack of being able to select which applications an end user may install. In the past, end users and administrators needed to either download the files manually, or create overly complex scripts that could only be used once. WPI allows you to create one image, which can then be custom configured, and optionally, automated, so that end users can install any applications that have been configured into WPI.

This is a gigantic release and a HUGE milestone for WPI! Mritter did most of the work on this one and it has been in development for over 3 months.


WPI now logs the installation proccess. (Default is saved at %systemdrive%\WPI_Log.txt)

Nearly all text is now translatable.

No WPI.cmd.

Reschanger and Fontinstaller are now integrated.

Custom installer window. (Even theme-able)

Options menu has been fully re-tooled.

Options wizard is now tabbed.

Config section is extremly fast now!

Execute before and Execute after sections.

WPI checks for WPI.hta, WIN51 or Driver.cab and uses any one of these for the dir identifier.

Newer audio player so Audio.exe and CloseAudio.exe are no longer needed. (No more false virus reports!)


Your old config file is still useable just copy it to your wpiscripts folder.

Your user options file is no longer useable you must resave all options.

Suggested disk folder layout:


With the above folder layout all your config entries should read like:


5.0.1 Changelog:

* Thanks to "almulder", the wizards now have background colors and images for
easier reading over the main background image. I made it fully themed, which,
changed the wpi.htm theme file some and added some new images to the themes
OptionsBg.jpg, OptionsTabDown.jpg, OptionsTabUp.jpg
Look in the wpi.css for style sheet editting.

* Nearly every item is now fully style sheet compliant. Added for:
<HR> for 3 types
all the wizards text and buttons
Look in the wpi.css for the new options at the bottom and near the top.

* Took out message after saving a config file. Mouse goes busy and all
buttons are disabled. Mostly for looks.

* If a grayed condition is true, the checkbox is now disabled so there is no
way it can be selected.

* Completely re-wrote the installer code with a lot of help from user Djé.
The handling of arguments was not working in all situations. RegEdit needed
a little tweaking, also.

* Added these new translations: German, Romanian, French, Polish, and Russian.
Thanks to all the translators.

* Now when the option to disable category checkboxes is checked the boxes wiil
not even be shown.

rc2 Changelog:

* Created built-in installer with progress bar and embedded MediaPlayer.
There are no known problems with MSI installers.

* Created new Config Wizard with only one set of gadgets. This greatly
reduces the time required to render the config because it used to duplicate
the 240 lines of code for each program. Hence, if you have 100 programs, it
would take 24,000 lines of code and a lot of time to display.

* Changed the base theme .htm and .css files to reflect the above changes.
It now checks for the minimum version required. This will require all
previous themes to be updated.

* All .htm files have been cleaned up and MANY coding errors fixed.

* All source files have been cleaned up and MANY MANY errors corrected.

* Most of the code has been touched and updated to reflect new changes.

* Re-arranged some of the control buttons.

* Re-arranged most of the gadgets in Options Wizard to group similar items

* Added: Disable category check boxes. So can't select entire catetgory with
one click. User request.

* Added new version of Tip Message. Removed old flevPersistentLayer() code.
Smaller and cleaner code. This also changed the Style[] flags a bit.

* In Tools folder is a demo of Tip Message to show the possibilities by
simply changing the Style[] tags.

* Added option to disable showing of tool tips.

* Moved Text Indent from Config Wizard to Options Wizard so it gets set
globally. Having the option for every program is redundant and wastes

* Config Wizard is now "smarter". Example: if picture not specified then
child gadgets are disabled and values not saved in config.js file.

* Using the built-in WPIPath() instead of the ".\\common\\xxxxxx.yyy"

* CD check now checks for the existance of 3 files. The absolute path check
looks for 2 files now.

* Added MAKEDIR command to go along with FILECOPY, DIRCOPY, and RENAME.

* Added an extra bug tracker. Still not perfect but better than what was

* Moved all the global variables from their respective .js file into
main.js to group them all together. Easier check for duplicate names and
for future enhancements.

* Moved all .js files into WPIScripts.

* Fixed bug in themes/wpi.htm in selecting the proper 'load_checks'. It
worked for defaults, but not a specified name.

* Updated bug with cat and config drop-down box selection.

* Removed Reload button from Options Wizard due to a snag in the way the
config lists drop down box needs to be updated.

* Options Wizard: config list and check on load gadgets now work together.

* Changed timer='yes'; and ReallyForce='yes'; to true/false statements. WPI
still checks for both for backwards compatibilty. More consistant with rest
of options.

* Took out smallbart.gif and smallbarb.gif in the themes.

* Removed appsPerInstallWindow. No longer needed since not using RunOnceExe.

* Removed all the 'var' tags from the useroptions.js file. Redundant.

* Removed sorting option. It now always sorts the items in their category.
Now it checks if installByCategory=true, then it installs in the order the
items are listed in the windows (sortorder[]). Else, it will install by user's
specified order.

* Category checkbox is now checked at start if all sub-items are checked by

* Updated ExtractArgs() and installer to allow spaces in path name.

* Spread the Options out across 4 tabs: Interface, Installer, Tools, and
Miscellaneous, to un-crowd the window. This is especially usefull on screens
less than 1280x1024.

* The new Tools tab includes: Execute Before, Execute After, and Restart Computer.

* All the * Yes * No radio boxes have been replaced with single checkboxes.

* Added Exit buttons to all the config wizards. Still can click on the
button again to toggle back to main display.

* Fixed a bug with ReallyForce. When hit Exit, it would install everything
that was checked, not just what was set as forced.

* WPI now checks for a minimum version of useroptions.js. This is due to the
changing of several option's names. The old file will have to be deleted and
a new one saved.

* WPI now checks for a minimum version of audio.js. Updated how the file is
saved. The old file will have to be deleted and a new one saved.

* WPI.hta now internally sets and deletes the Registry keys it needs to run

* WPI now internally changes the screen resolution, depth, and refresh rates.
Added new gadgets to Options->Tools.

* WPI now internally installs fonts needed for themes and system use. Added
gadget to Options->Tools.

* With the above updates, WPI.cmd is no longer necessary. Run WPI.hta direct.

* Moved, and updated, the Audio Wizard from a stand-alone screen into the
Options tabbed screen. This removes the Audio Player button from the main
window. This also made saving the audio list much smaller so it fits inside
useroptions.js. audio.js, audiowizard.js, and audiowuizardtemplate.htm have
been deleted.

* Added file requesters to all options that could use it. Had to "trick" the
system into not showing the textbox associated with the button. The only
draw-back is that the file requester is read only, so can't set a default path
and if the user cancels a file selection, it uses the last known selection.
So it will throw in a previous selection if hit Cancel.

* Updated the config wizard a bit to line up the horizontal rule.

* Config wizard now handles pictures better: sets defaults sizes and text

* The config editor now automatically replaces drive letters with %CDROM% to
make it a bit easier for you.
ex: C:\Install\Adobe.zip -> %CDROM%\Install\Adobe.zip

* The install window now has a style sheet associated with it in the Themes
folder. Basic items like fonts and colors can be changed. WPI still controls
the font size of the programs listing text.

* By making the install window a normal window, the audio had to be removed
and the old external audio player is used.

* Added Extra Width and Extra Height gadgets to the Options -> Installer tab
to increase the size of the install window if needed for longer text or
larger fonts. The window does not resize automatically. Needed for

* Seperated all the Show Optional Buttons to their own option to show only
what you want to see.

* Added to Options -> Miscellaneous, Log Installation process. Useful for
error checking of path names and such.

* Re-arranged the Config wizard gadgets into a more logical order.

* Added DELETE to the list of built-in commands.

* If no install order specified then entries now start at 900,000 instead of
5,000 to allow for for category numbering.

* When go into the Options or Config wizards, the Begin Install button is
hidden so you are forced to save your work or toggle out before you can begin

* Fully themed the installer window via the style sheet installer.css.
Images are now in the Themes folder:
InstallBg.jpg, InstallProgBar.png,
InstallSuccess.gif, InstallFail.gif, InstallPartial.gif

* Added check boxes for Execute Before/After to disable them for testing

* Split part of main.js code into core.js to have the basic routines
available for installer.hta and wpi.hta in smaller chunks. Made each of
those files smaller; removed redundant code.

* Themed the count down timer. Uses InstallProgBar.png for the image.

* Every text is now localized, with the exception of a few error messages.

* If the useroptions.js file does not exists, a set of default settings will
be saved.

I have seperated the tools out from the main archive. You can download the tools here:

Tools archive.

Contents of the tools archive:


Universal Silent Switch Finder


WPI Config Lister




Here is a quick start package that will set your windows disk up to use WPI with runonceex all you need is to place this %oem% folder at the root of your windows disk. You MUST have the line "OemPreinstall=Yes" in your winnt.sif file

%OEM% Folder.

Contents of the %OEM% archive:

Media Center Style XP Theme (NO uxtheme.dll hack needed!)


regentry to set MCE theme for runonceex window.



Download Here.

How to make a winnt.sif file.


New Config Section


Options Section


New Installer Proccess Window


Now that all of that is over with here is the download link:

Download Here!

Here is a small tutorial on how to add an app to WPI!

Ok this is a sample (Very simple) configuration for Windows Defender Beta 2

This assumes you have all of the WPI files either in the WPI folder at the root of your Windows cd or all of the WPI folders (Common, Graphics, WPIScripts, Tools, Install and Themes) and the file WPI.hta at the root of your cd.

Remember this is just the most basic and required entries for a program!

#1 Place the desired app in the install folder. (In this case WindowsDefender.msi)

#2 Run WPI.hta and choose “Config”

#3 Choose at the very top above the config section “Add”

#4 Enter in the name section “Windows Defender” ßNo quotes! Then click on any other section of the config area to activate the rest of the wizard.

#5 You will notice the Unique ID section gets automatically configured for you.

#6 All apps are selected to be installed by default right from the start so if you don’t want it selected by default you must uncheck this box.

#7 Choose a category for your app to be displayed in. If you want the app to be displayed in a category you don’t see simply chose other and a box will appear that will allow the entry of you choice.

#8 In the Command 1 section browse to the installation package you want to have installed. You will get (%CDROM%\WPI\Install\WindowsDefender.msi) to make this work from either a stand-alone CD or form a windows CD You should change this to “%wpipath%\Install\WindowsDefender.msi” Once again NO quotes!

#9 Add the necessary switches for the program to run silently i.e. %wpipath%\Install\WindowsDefender.msi /qn

#10 Select the Save and then the Exit buttons and you have now configured your first app!

Edited by Kelsenellenelvian
Link to comment
Share on other sites

Oh my god. This is AWESOME. The new WPI just Rulez!!!

Thank you mritter and Kelsenellenelvian, I will start writing the german translation in a few hours, so it will be up in the next time. I'll post it in the translations thread.

One question: There is no "LaunchfromCD" var. Does WPI check for WPI.hta, WIN51 and Driver.cab? Because this is, what I can see in the generate.js. I hope so, because if it finds the WIN51, it uses the correct drive for me. :D

BTW: Very cool, that the options and config wizard can be translated much easier than before. :thumbup

Edited by Dynaletik
Link to comment
Share on other sites

WPI checks for WPI.hta, WIN51 or Driver.cab and uses any one of these for the dir identifier.

Can we specify this? Rather than having just those three options, I'd rather pick a file. I've always modified the directory structure of my disc. I keep applications in .\applications and WPI is .\WPI. Finding WIN51 would be great for now, but what if I start using WPI on non-Windows discs? It just seems like it would be easier if we could specify the file name.


I was thinking about not using WPI v5 because I didn't want to customize it all again, but then I took note of that new installer progress window. That's sweet. I'll revamp this whole shindig to better suit my needs, but even if I only use that progress window, you deserve praise. :)

Link to comment
Share on other sites

Not sure if you want suggestions here ... but I, personally, use the following modification in WPI:

In boxes.js...


txt += ('<input type="checkbox" id="Cat' + cat[i] + '" ');
txt += ('name="' + cat[i] + '" ');
txt += ('onclick="checkCategory(\'' + cat[i] + '\');" ');
if (DisableCatCheckBoxes)
txt += ('disabled ');

replace with:

if (!DisableCatCheckBoxes) {
txt += ('<input type="checkbox" id="Cat' + cat[i] + '" ');
txt += ('name="' + cat[i] + '" ');
txt += ('onclick="checkCategory(\'' + cat[i] + '\');" ');
else {
txt += ('<br ');

This causes the check boxes next to the categories to not be displayed when category selection is disabled.


For those of you that wish to have hands (like when you put your mouse over a link) when they hover a button, put this in wpi.css (for the glossy theme):

#installbutton, #divMultiDefault, #divSelectButtons, #optButton, #optConfig, #optSource, #ManButton { cursor: hand; }

(this is pretty basic, and if you can figure out what I mean, then go ahead and use it. You will want to know how to undo it if you decide you don't like it.)


And another.. If you want to have a black outline around the text of your categories (works great if you have a background that contains a gradient and makes your categories difficult to read), you can add this to the category section of wpi.css:

height: 12px;
width: 100%;
filter: glow(color=#000000, strength=1);

(obviously, replace the color with whatever you want)

It should be noted that this little tidbit will not work on some resolutions (anything less than 1280x1024 didn't work for me). You can fix this by putting in a pixel value for the width as well as the height. It will also cause your options pages to look funny (which can be fixed by editing optionswizardtemplate.htm and replacing "category" in the second line with a new class. Define that class accordingly. You can also remove that line all together, and delete the closing tag for it in the footer). I'd really only recommend using it if you know what you're doing (i.e., you should have a basic understanding of how to code before attempting to do it).


For those that want to use some traditional looking tooltips, here's the scheme I use:


Change "500" to whatever you want. It's the width of the tooltip. I like it that big because I have little screenshots.

final note for kels:

For what it's worth, height is not a valid attribute on a TD (should be style="height...), and href; is frivolous. Obviously, these don't affect the layout of WPI so I'd just ignore 'em. But if you're feeling bored ... meh.

Edited by Dumpy Dooby
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...