Another SETUP Utility?
It seems that there are already 'enough' SETUP utilities out there, or so many might think.
Aside from the automatic SETUP utilities that Microsoft® uses for their own software
updates, there are at least 2 other companies out there that are already established and
are creating SETUP and UNINSTALL utilities for developers.
However, it was MY opinion that these utilities lacked a basic simplicity
that would make creating an application setup, especially for independent developers that
don't ship megabytes of "shared components" and subtle operating system upgrades
with every application that they write. Sure, having the ABILITY to ship shared components
is still important, especially for applications written in languages like Visual Basic, or
when 'third party tools' are being included with an application. But configuring the
SETUP utilities that have been made available up to this point has been painful, often as
difficult as writing the application itself, especially when the application is relatively
So, with the introduction a few years ago of Microsoft's "Cabinet SDK" and free
re-distribution, I wrote a front-end application, SETUP application, and UNINSTALL application
that work together with the "Cabinet SDK" to produce a professional-looking and
reliable SETUP system.
The SFT Setup Gizmo
The SFT Setup Gizmo is written as a 'Wizard' style application. The opening screen allows
you to specify basic information such as your company (or individual 'doing business as')
name, the (unique) name of the application, a starting message (with a 'test' button that
allows you to see what it will look like on the startup dialog box), the root path to the
source files (to be included in the setup image), the path to the output directory, and
the optional path to a text 'license' file. Advanced settings accessible from the
'Advanced Settings' button include the default destination path, 'common files' path,
start menu folder name, and a special list of application names that can be 'upgraded' to
By stepping through the wizard, you can quickly select the files that you want to include
in your setup, and specify where they will be stored, which ones are optional, the names
of the various options, what operating systems should install a particular component,
whether a file should have a shortcut created for it (and the name/icon for the shortcut),
whether an OLE Server DLL or ActiveX component should be registered, and whether an
executable file should be 'executed after copy', with optional 'delete after exec'
capability (this feature is very useful for embedded shared component self-extracting setup
utilities such as Microsoft's Database Access Components).
Each of these capabilities can be configured by a simple point and click interface involving
listboxes, drop down lists, buttons, checkboxes, and the occasional 'data entry' text box
or combo box.
Creating the SETUP Image
SFT Setup Gizmo makes it extremely easy to create a CD-ROM, diskette, or self-extracting
SETUP image from the specified files. The self-extracting image can be downloaded from
the internet (as it is with the Setup Gizmo 'Demo') and can be configured to automatically
install with the default options (useful for encapsulated components like ActiveX controls
and fonts that require special handling).
You can also optionally change the compression method (LZ compression is usually best,
but takes the longest), mark the application for 'quiet' setup (minimum user interaction),
and under what circumstances you want to prompt the user to reboot the machine.
The 'Save Configuration' button allows you to save your SETUP into a '.GIZ' file, which
greatly resembles a windows 'INI' file. The types of entries in this file are documented
in the help file, so that you can manually edit the '.GIZ' file if you need to.
The SFT Setup Gizmo also has 'BATCH' capability from the command line, so that you can
use a '.bat' or '.cmd' file to load a previously saved '.GIZ' file, specify the options
from the 'finish' page (such as image type and compression type), and automatically
create the SETUP image based on the settings in the '.GIZ' file. If the setup is successful,
the SFT Setup Gizmo application will return '0' to indicate success, or a non-zero error
code otherwise, so that the 'ERRORLEVEL' value in a '.bat' or '.cmd' file can be used to
test for success or failure automatically.
Of all of the features of the SFT Setup Gizmo, this last one is probably the most useful for
software developers that produce large software packages. In my own projects, I frequently
use a single '.bat' or '.cmd' file to build an application along with all of its associated
components, then copy the output files to a single directory tree, from which the SFT Setup
Gizmo builds the setup into one or more formats. In fact, the Setup Gizmo project does exactly
this from its 'build_it.bat' file. Often I might want to build multiple SETUPS (such as
'demo version' and 'retail version') from the same files, with slight differences that only
the SETUP needs to know about. So I will produce multiple '.giz' files, each one with its own
special settings or file sets, and build a separate setup image for each type of install.
Auto-Insert CD Capability
The 'Auto-Insert CD' option will create the appropriate files in the CD ROM image so that
an 'autorun' SETUP utility will load when the CD is inserted into the CD ROM drive. The
background bitmap for the 'AutoRun' application included with the SFT Setup Gizmo can be
user-configured by placing an appropriately named bitmap file into the same directory as
the 'autorun' application.
End-users can create their own 'AutoRun' application if they want to, but for simplicity
the supplied application can be used and a custom bitmap created for it.
By placing an appropriately named bitmap in the same directory as the supplied 'autorun.exe'
you can change the background displayed on the application's main window. The default uses
the SFT 'logo' bitmap, with the text 'Stewart~Frazier Tools Integrated Setup' being a part
of this bitmap. A sample bitmap of an appropriate size, that matches the default bitmap,
is provided as an example, and is copied to the destination path whenever an autorun CD
image is created. End-users need only substitute their OWN bitmap for the default to always
have their own company logo in the 'autorun' application. As an extra added bonus, a default
icon file, that matches the icon for the 'autorun' application, is also copied to the CD image,
and end-users can alter this as well to match their application or company logo.
In short, customizing the appearance of this screen, and the icon that represents the application,
is extremely easy.
The SFT Setup Gizmo is NOW an open source project, available for download on github, as the
Setup Gizmo Project.
GENERAL PRODUCT INFORMATION:
Supported Operating Systems:
Windows XP and later (for application setup/install; may still work on Windows 2000 or earlier)
Windowx XP and later (for developing install packages)
NOTE: the operating system must have the 'MAKECAB.EXE' utility installed. Windows&tm; 7 includes this utility.
Special support was added for 'Terminal Services' servers (under Windows 2000 and later)
Operating System Version Detection:
Windows '95, 98, ME; Windows NT 4, Windows 2000, Windows XP / Server 2003, and later
NOTE: newest open source version handles Windows versions through Windows 10 but may not run on versions prior to XP.
Application File Sizes (download overhead):
SETUP.EXE - 300,056 bytes
UNINST.EXE - 176,640 bytes (uncompressed, ~85k compressed)
Compression Methods (via the 'MAKECAB' application, part of Microsoft® Windows&tm; 7):
'MS-ZIP' compression (default), LZ compression
- Simplified UI design makes creating a complex setup extremely easy by comparison to other
- FAST FAST FAST - no 'piggy' configuration of 'the installer' or excessive re-booting (unlike
other SETUP utilities)
- Advanced settings extend the simplified UI for those who need additional capabilities
- SETUP command line options allow embedded self-extracting setups to run in 'ultra quiet'
mode (no user interaction) and to use pre-assigned path names from the command line
- Optional component selection is pre-assigned during upgrades, based on what was previously
installed. 'Ultra Quiet Mode' self-extracting setups invoked from a command line can have
an option list pre-assigned from the command line as well.
- Aggressive 'need to boot' detection delays 'exec after copy' and DLL registration until
reboot, and detects when an embedded SETUP has made any 'delayed file copy/rename'
operations or added SETUP elements to the 'RunOnce' registry key.
- Permissions check during SETUP, prompts for 'privileged' logon if user's privilege is not
sufficient to run SETUP (new feature for version 1.1.2 - see 'Order' page to download).
This is particularly useful for Windows XP 'home' edition
- 'Exec after Copy' and 'Delete after Exec' make embedded setups and 'Run Once' or
'setup helper' utilities extremely easy to include in the application's setup process.
Such utilities can perform ANY kind of custom action that is not already a part of the
Rather than having to support every imaginable capability that anyone MIGHT
want, the better approach is to make it easy to include a simple 'helper app' within the
SETUP, then automatically execute (and optionally delete) it.
- An optional 'uninstall command line' for 'exec after copy' entries invokes these applications
(the ones that weren't deleted by 'delete after exec') during uninstall as well, allowing
the more difficult or complex cleanup operations to be performed by the application itself.
By encapsulating the app's registration and uninstall cleanup within the application itself,
then marking the application 'exec after copy', with arguments for both setup and uninstall
(such as '/SETUP' and '/UNINST') such an application can be more easily modified in future
revisions without affecting the remaining system or the setup process.
- NO SHARED COMPONENTS! SMALL EXECUTABLES ANYWAY! The Setup Gizmo front-end, and the supporting applications
SETUP.EXE, UNINST.EXE, and AutoRun.EXE are all 'self-contained', and as stated above,
'self-reliant', and require NO special DLL's or shared components (specifically, those
annoying run-time language support DLL's) to be installed on the user's operating system
before they can load or execute the SETUP you created.
HOWEVER, SETUP.EXE and UNINST.EXE will gladly (and correctly) handle any shared
components that YOUR application might need during SETUP, including
any embedded self-extracting SETUP applications for things like ODBC drivers, Speech API,
WININET, ActiveX controls, and so on, even the '.Net' run-time.
The SETUP application itself about 300k in size, and the uninstaller less than 200k
in size. Typically the uninstaller will compress to a significantly smaller size,
approximately 85k using LZ Compression. So the total overhead for the SETUP application for
a self-extracting SETUP could be as little as 390k bytes, while retaining the benefits of
a full-featured self-extracting installer.
- Whenever possible, temporary files that cannot be deleted during SETUP or UNINSTALL are
stored in the 'temp' directory, and cleaned up on the next reboot.
- Compatible with "code signing" (certificates), and uses standard '.CAB' files and the
Microsoft Cabinet SDK
Return to S.F.T. Inc. Main Page
©2001-2016 by Stewart~Frazier Tools, Inc. - all rights reserved
Last Update: 5/1/2016