Normally, I'm a silent deployment guy. That's not to say I'm quiet, it's more that in all our deployments I prefer zero interaction with the user. Sometimes though, this is not possible and interaction is required.
Over the last week I've been creating an generall GUI install wrapper to allow us to push out a standalone Inventory application to our 'unmanaged' computer population. The inventory packages provided by Altiris are functional, but lack the user experience and various prompts that we'd like.
So, I created a customisable wrapper. The final result looks as below,
This style is familiar to most of our users, as it's what we've been using for years for our Sophos anti-virus installation wrapper. In the above, most of what you see is customisable -the form dimensions, the form caption, the graphics and the labels. It's all driven through a text file that's incredibly not XML.
The wrapper can accept any number of executable entries like the following,
[EXE] cmd /c "del /f /q "%programfiles%\Altiris\express\Inventory\*.*""
[TXT] Cleaning existing inventory (if existing)...
# both 0 and 1 are success as we don't care that the result is
[SUCCESS_CODES] 0;1
Anything not declared as a success code is an error and will halt the progress of the wrapper. Environment variables are also expanded.
As well as having standard executable tags, I also have added a variant to allow a 'tcp' ping
[EXE] TCP_PING(myaltirisserver.acme.com,80)
[TXT] Testing Connectivity to Altiris Server
[SUCCESS_CODES] 0;
[CODES_TXT_2] Cannot contact the Inventory Upload Server. Please try again in 15 minutes. If problem persists, please email itsupport.
This might result therefore in a screen like below in the event of the tcp ping failure,
While the install EXE tags are in progress, the graphic can be animated through a sequence (all default graphics can be replaced simply by putting in replacement in a RESOURCES folder). If graphics are too much, a progress bar can be used instead. If the progress bar is too much, even that can be removed.
# ANIMATION_CLASS values are 0=NONE|1=GRAPHIC|2=PROGRESSBAR
[ANIMATION_CLASS] 2
# Set the animation interval in ms
[ANIMATION_INTERVAL] 200
All that's left now is to program a process wait tag,
[EXE] PROCESS_WAIT(myprocess.exe)
This is to allows the installation process to wait in cases where executables launch other exectuables and then exit themselves. Once that's done, all that's left then is to zip the whole lot into a self-extracting archive, get it signed, and then push it out to the unwashed masses.
And then write it up properly for Connect of course...