InstallShield Tips and Techniques

April 18, 2012

Using InstallShield as a shell

Filed under: Reference Materials — shieldmaster @ 12:31 am

I recently completed a unique project that required a setup that did not behave like a normal InstallShield setup. In essence the customer had some specific behavior that they wanted the setup to demonstrate, which ran contrary to what you would expect for a normal setup.

For example, these are the condensed specifications:

  • On a clean machine, perform a normal installation of the application source
    • Oh, the source application files will be Zipped and extracted from the web – not carried within the setup
    • Configure various 3rd Party applications (MySQL, Tomcat, etc.)
    • Provide a shortcut on the desktop that will launch the setup again
  • When the setup is launched on a machine that has the application already installed, provide a dialog with three choices:
    • Remove the application
    • Update the application license
    • Update the application source files – this means downloading an updated set of application Zip files

    Normally when an application is rerun you are presented with the Maintenance Dialog, and you have the normal choices of Repair, Modify or Remove. In this case they wanted new source downloaded, or the ability to navigate to directory containing a license file – not normally available!


Talk about “thinking outside the box!” – this combined quite a few of the individual amenities that I have offered in the past for special situations. In my mind, I went over the possibilities:

  1. Remove the Standard Actions that register the application MSI – which I blogged about here: Disable MSI Registration
  2. During the initial installation, I would need to create a special registry entry that appears in the Add/Remove Control Panel that will display the Application and it’s version number – but it is not a true entry, the user can’t use it to uninstall the software
  3. Creating a shortcut on the Desktop to the MSI that when executed by the user would:
    1. Recognize that the application was installed (check for the Registry entry) – if not found would perform an initial installation, but if found it would display a special set of dialogs, such as:
      1. Welcome Screen
      2. Action Dialog with the three options noted above
    2. Intra-dialog scripting that recognized the dialog selection and either perform the action (removal, update source or additional dialogs to allow user to specify a license file
  4. Scripting that would connect to a Webpage, download and unzip source files – extract a version file and use to update the entry in the Add/Remove Control Panel
  5. Scripting that would download the license, plus a Dialog with Browse capability to allow the customer to navigate to the directory containing the license and select it for manipulation
  6. Scripting to log every action and results to enable the Tech Staff to diagnose installation issues (poor internet connections, etc.)
  7. Scripting that would need to handle the 3rd Party application:
    1. Evaluate system to ensure the required 3rd Party apps are present (and enable the customer to easily alter the minimum release level requirement). Customer did not want to attempt to install missing 3rd Party applications – just check and stop install if anything is missing, but report exactly the issue to the customer.
    2. Configure each of the required 3rd Party applications – from uploading MySQL Scripts to configuring Java and Apache Tomcat and starting/stopping it’s services


As it turned out, I delivered the application in stages to allow the customer to carefully review the application setup. With each deliverable, additional functionality was turned over until the overall objective was met.


Sometimes I wonder if I just should have taken up C# development – there turned out to not be very much left of the original InstallShield capability. BUT it was what the customer wanted, and overall I was very satisfied that I was able to accomplish this!


If you think over the solution – it’s basically an empty shell that should be able to be used by the customer for a long time, since there is no source embedded and the version number is included with the Zipped source on the website. Quite useful for a long time!



Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at

%d bloggers like this: