Microsoft ACME Setup is the name of the software installation tool that was used with some of the first versions of Microsoft software, including Microsoft Office (until Office 2000, which uses Windows Installer), Microsoft Visual Studio 6.0, and other similar products. It has been superseded by the Windows Installer platform.
It uses a text-based file format ending in .STF (examples include acmsetup.stf, setup.stf) to store setup commands. It also requires the files "SETUP.TDF" and "SETUP.INF" (help: purpose unknown?) in order to run.
Alongside the ACME setup program, there is usually also a bootstrapper program included. While the ACME setup executable is usually named ACMSETUP.EXE, the bootstrapper program is usually called SETUP.EXE and is featured alongside a plain-text SETUP.LST file which tells the bootstrapper which files to copy to a temporary directory before launching the installation.
Setup table file (STF) formatEdit
The basic file format is simply a series of tab-delimited data; importing it into a spreadsheet program like LibreOffice Calc and specifying the tab character as the delimiter should make the content more readable.
Like the Windows INI format, the STF format can be thought of as having properties (but not groups). Observed properties are described below. If you observe a property not listed here, please add it to the list even if you don't know what it does; someone might see it and figure it out.
A series of properties and their respective values comes first.
|App Name||The name of the application that is being installed.|
|App Version||The version number of the application that is being installed.|
|Setup Version||The version of ACMSETUP.EXE needed to read this file.|
"filename, x, y" where filename is the name of a DLL that contains a bitmap resource, x and y are the bitmap's distance from the top and left corner of the screen, respectively. These values are in pixels.
|Frame Caption||The text displayed in the title bar of the background window, as well as in some messages in dialog boxes.|
|Suppress Copy Disincentive Dialogs||Presumably commands the installation program to suppress dialogs related to copy protection/antipiracy. Had no affect on the sample apps tested.|
|Suppress Serial Number Dialog||Presumably commands the installation program to skip prompting for a license number when installing. Has no affect on the sample apps tested.|
|Dialog Caption Base||The text displayed in the title bar of the foreground window, as well as in most messages in dialog boxes.|
|Usage String||The text to print on the command-line when someone attempts to execute the program in an unsupported way.|
|About Box String||The text displayed in the About dialog (right-click the background window's title bar and click About)|
|Launch Registration Wizard|
|Check Modules||A comma-separated list of window class names. If a window with one of the given class names is running, the software might not install or might run into problems installing.|
|MSAPPS Mode||Usually "local"|
|MSAPPS Connect||Usually "server"|
Optional. Allows you to specify a custom action DLL that is used to parse your INF file. Only observed in the Office 97 installation disc. It takes a quoted string:
"[DLL file name],[function name],""[app title]"""
|Inf File Name||The file name of the INF file that is associated with this Setup application.|
|Help File Name||The file name of the HLP file that provides more details on installation.|
|NoShared||Determines what action to take on shared files. Observed "Reinstall".|
|Maximum Object ID||The last object ID that is present in the objects table (see below).|
|Admin Mode Root Object ID||The ID of the first command to run when in admin mode.|
|Floppy Mode Root Object ID||The ID of the first command to run when in floppy mode.|
|Network Mode Root Object ID||The ID of the first command to run when in network mode.|
|Maintenance Mode Root Object ID||The ID of the first command to run when in maintenance mode.|
|Batch Mode Root Object ID||The ID of the first command to run when in batch installation mode.|
|Network Maintenance Mode Root Object ID||The ID of the first command to run when in network maintenance mode.|
The date this application was last installed on the user's computer.
The object list is actually a rather large text-based list of commands. It starts with a tab-delimited line describing each of the values, and then treats each following line as a command. The list of commands are defined below.
|ObjID||Integer. The numerical value of this object. Usually assigned in the order they are defined in the file.|
|Install During Batch Mode||Boolean. Yes/no value that indicates whether this particular command is executed during batch installation.|
|Title||String. The title of this action.|
|Descr||String. Description of this action.|
|Data||Action-dependent data associated with this command|
|Installed By Us|
An example object list in a SETUP.STF file might look like this:
ObjID Install During Batch Mode Title Descr Type Data BMP Id Vital Shared Dir Chang Dest Dir Check Dir Installed By Us 1 Microsoft Office Professional Microsoft Office Professional AppSearch """%p\MSOffice""<%p\Microsoft Office>, , ,176,,yes,4 5" 2 AppSearch "c:\MSOffice, , ,176,,yes,4 5" 3 Microsoft Office Professional CustomAction "setupres.dll, AddAppSrch, ""Not Required, c:\MSOffice, MSOFFICE.EXE, 95.02.03.2, 4"" " 4 SearchReg "CLASSES, MSToolbar\MSOffice"
Setup bootstrapper (LST) formatEdit
The file format is based off of the Windows INI format, so that will not be re-documented here. Instead, the groups and properties specific to the LST format will be listed. There are two main groups: the Params group and the Files group.
This group has been observed as "Windows 95 Params" and "NT3.51 Intel Params", although more variations likely exist. The properties in this group are the same no matter what the group name is, as long as it ends in "Params".
|WndTitle||The title of the "please wait" dialog that displays while the program prepares installation. This is usually the name of the application being installed.|
|WndMess||The message displayed in the dialog. This is usually something like "Starting [app name] Setup, please wait..."|
|TmpDirSize||The amount of memory, in bytes, to allocate for the temporary directory.|
|TmpDirName||The name of the temporary directory where the files will be placed.|
|CmdLine||The command line to execute. This is usually "acmsetup"; in cases where the STF file name isn't the same as the setup EXE file name use "acmsetup /T [STF file name]"|
|DrvModName||Should be "ACMSETUP"|
|DrvWinClass||Should be "Stuff-Shell"|
|CabinetFile||Presumably the name of the cabinet file from which the installation files are unpacked, but this property has also been observed on a CD-ROM in which the installation files were placed directly on the disc.|
|Require31||The message to display when the operating system is not supported. Usually something like "This program requires Windows 95 or higher."|
|InsertCDMsg||The message to display when an additional CD-ROM is needed to complete the installation. Usually "Please insert your [app name] CD 1".|
|InsertDiskMsg||The message to display when an additional floppy disk is needed to complete the installation. Usually "Please insert your [app name] Disk 1".|
This group has been observed as "Windows 95 Files" and "NT3.51 Intel Files", although more variations likely exist. The properties in this group aren't really properties; they are mappings between the source file name and the destination file name. For example, if your source media has a folder called SOURCE and one of the files that would be copied is called COPYME, your SETUP.LST file might look somewhat like this:
[Windows 95 Files] SOURCE\COPYME = COPYME