The S.F.T. Setup Gizmo
S.F.T. Inc.

This project has been RESURRECTED as an open source project on github, the Setup Gizmo Project.
Information on this web page is a bit out of date, but I'm leaving it for the time being.

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 simple.

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 this one.
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.

Product Availability

The SFT Setup Gizmo is NOW an open source project, available for download on github, as the Setup Gizmo Project.


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

Additional Capabilities:
  • Simplified UI design makes creating a complex setup extremely easy by comparison to other SETUP products
  • 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 Setup Gizmo.
    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