How to Modify the Intel Setup program Intel provides the Indeo(TM) video drivers with a Setup utility that automatically installs the drivers along with Microsoft's Video for Windows(TM)* runtime files. The Intel Setup utility can be freely distributed with any application that uses Indeo video and the VfW runtimes. The Setup utility may be distributed as is. It is also possible to modify the Setup before it is distributed. This article first gives an overview of how the Setup utility works and then shows how to modify it. The Intel Setup utility is already a modified version of the Setup utility provided by Microsoft. The Microsoft Setup utility installs the Video for Windows (VfW) runtime files. The Intel Setup utility also installs the VfW runtime files, but includes all of the latest Indeo video drivers. With these additional drivers, the Intel Setup files do not all fit on one 3.5" diskette. It is possible to delete one or more files from Setup in order to bring the total size down to one diskette again. It is also possible to add more files to be installed by Setup. Background on Microsoft's Setup: -------------------------------- By studying the contents of some of the text files used by Setup, it is possible to figure out how most of Setup works. There are only a couple files that ever need to be modified. Here is a list of the more important files: setup.exe - This file bootstraps the installation process. setup.lst - A text file containing startup parameters. It is usually not modified. setup.mst - A text file containing Basic language script that is executed during installation. This file can be modified. setup.inf - A text file containing the list of files to be installed. This file is the one that is most often modified. mscuistf.dll - A binary file that contains Setup dialog boxes. It is possible to modify this file to create a Setup with custom dialog boxes. The setup.exe file starts up execution. A temporary directory is created right away on the hard disk. Files that Setup uses during the installation process are copied into the temporary directory. Setup gets the name of the temporary directory (~msstfqf.t) and the names of the temporary files from the text file setup.lst. Most of the temporary files are compressed. The compressed files usually have a filename that ends with an underscore (_). Setup uncompresses these files while copying them into the temporary directory. The following is an example of what Microsoft's setup.lst looks like: ********************** Microsoft setup.lst ************************ [Params] WndTitle = Video for Windows 1.1 Runtime WndMess = Initializing Setup... TmpDirSize = 500 TmpDirName = ~msstfqf.t CmdLine = _mstest setup.mst /C "/S %s %s" DrvModName = DSHELL [Files] setup.mst = setup.mst setup.in_ = setup.inf setupapi.in_ = setupapi.inc msdetect.in_ = msdetect.inc mscpydis.in_ = mscpydis.inc mscpydis.dl_ = mscpydis.dll mscomstf.dl_ = mscomstf.dll msinsstf.dl_ = msinsstf.dll msuilstf.dl_ = msuilstf.dll msshlstf.dl_ = msshlstf.dll mscuistf.dl_ = mscuistf.dll msdetstf.dl_ = msdetstf.dll iniupd.dl_ = iniupd.dll _mstest.ex_ = _mstest.exe _mssetup.ex_ = _mssetup.exe profdisp.ex_ = profdisp.exe The [Files] section lists all of the files Setup copies into the temporary directory. The source filenames are on the left and the destination names are on the right. If the source file is compressed, Setup automatically decompresses it while it is being copied into the temporary directory. One file to note in this list is setup.inf. Setup.inf is a text file containing a list of all the files that are permanently installed by Setup. This is a file that often needs to be edited for a new installation. Microsoft typically provides this file in compressed format as setup.in_. As a result, the uncompressed setup.inf file only exists for a short time in the temporary directory while the Setup program is running. To save a permanent copy of setup.inf (or any of the temporary files), task switch over to Windows' File Manager just after Setup displays its Welcome dialog box. Under File Manager, find the temporary directory and copy setup.inf to a permanent directory for later use. Since setup.inf is an important file, and not very big, Intel Setup does not compress the setup.in_ file. Setup.inf always exists in uncompressed format. This makes the Intel Setup program easier to modify. The Intel setup.lst file uses this line instead in setup.inf: setup.inf = setup.inf Once the temporary directory is ready, the Basic script in setup.mst is executed. Looking inside setup.mst shows the following steps are taken: 1. Verify Setup is running on the correct version of Windows. 2. Put up the Welcome dialog box. 3. Get the filenames listed in setup.inf. 4. Install the files listed in setup.inf. 5. Put text entries in system.ini, win.ini, and control.ini files. 6. Put Media Player icon in Accessories group. 7. Profile the display. 8. Restart Windows. The temporary directory is automatically deleted when Setup is done. Setup.inf: ---------- Setup.inf contains the names of the files to be installed. The line for the current Indeo video R3.2 driver looks as follows: 1, ir32.dll,,,, 1994-10-26,,, OLDER, !READONLY,,,,, SHARED, 151056,, ,, 3.22.1.44, This line has entries separated by commas for such things as diskette number, filename, date, size, and version number. In this case, Setup gets the file from diskette #1 (1), gets the name of the file to be copied and expanded (ir32.dll), assigns it a date (1994-10-26), only copies it over files with the same name that are older (OLDER), and does not make it a read-only file (!READONLY). It is treated as a shared file (SHARED) meaning it may already be in use by the system. Finally, it verifies the file size (151056) and version number (3.22.1.44). Any of these entries can be modified or deleted as part of a new installation routine. The commas used in each line are critical, spaces are not. Setup.mst: ---------- Setup.mst contains the Basic language script that is executed by Setup during installation. Most of this code never changes except for a subroutine called "Install" near the end of the file. Here are four lines of code taken from the Install subroutine: CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg")) CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite Run ("profdisp.exe") CreateIniKeyValue is a call to a routine that places text entries in the system.ini and control.ini files. This particular call looks in the Windows directory (Windir$) for the system.ini file and puts this entry in the [Drivers] section: VIDC.IV32=ir32.dll This call overwrites any previous VIDC.IV32 entries. The second line taken from Setup.mst runs the Windows Regedit utility using data stored in a file called mplayer.reg. The third line puts the Media Player icon in the Windows Accessories group. The last line runs a program called profdisp.exe. Profdisp profiles the display and places the results in the [drawdib] section of the win.ini file. Profdisp is one of the temporary files copied by Setup into the temporary directory. Profdisp is deleted when Setup is done. Even if you are not familiar with Basic programming, it is still possible to figure out what most of setup.mst does. The code that usually needs modification is that which calls the CreateIniKeyValue function. If an installation fails for unknown reasons, lines of code in Setup.mst can be commented out by placing two apostrophes ('') at the beginning of a line. Mscuistf.dll: ------------- Mscuistf.dll contains the dialog boxes, such as the Welcome box, that are used by Setup during installation. Mscuistf.dll is expanded and copied into the temporary directory during startup. It is possible to modify these dialog boxes directly within the .dll file using utilities such as App Studio to customized the Setup routine. App Studio comes with Microsoft Visual C++. Modifying Intel Setup: ---------------------- The current Intel Setup routine installs these codecs: Filename Description System.ini entries -------- ----------- ------------------ ir32.dll Indeo(TM) video R3.2 VIDC.IV31=ir32.dll VIDC.IV32=ir32.dll ir21.dll Indeo(TM) video R2.1 VIDC.RT21=ir21.dll iyvu9.dll Indeo(TM) video Raw VIDC.YVU9=iyvu9.dll iccvid.drv Cinepak VIDC.CVID=iccvid.drv msvidc.drv MS Video 1 VIDC.MSVC=msvidc.drv msrle.drv MS RLE VIDC.MRLE=MSRLE.drv Any one of these files can be removed, if they are not needed, to reduce the size of the Setup routine. However, Video for Windows users typically assume a certain level of functionality after installing the VfW runtimes. Delete files at your own risk. The following steps show how to change Intel Setup so it no longer installs the RT21 Indeo video driver. 1. Delete the following line from the [AVICodecs] section of setup.inf: 1, ir21.dll,,,, 1993-11-19,,, OLDER, !READONLY,,,,, SHARED, 77664,, ,, 2.17.0.3, 2. Delete the following line from the Install subroutine of setup.mst: CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite 3. Delete the compressed ir21.dl_ file. 4. The setup routine is ready to go. Microsoft Setup SDK: -------------------- It is more difficult adding a file to be installed by Setup than deleting one. Microsoft's Setup SDK is usually needed to add a file. The Setup SDK provides Compress and Layout utilities along with some source code files. Microsoft used to supply the Setup SDK with V3.1 of the Windows SDK. The Setup Toolkit can now be obtained from Microsoft's Download Service (MSDL) at 206-936-6735. Look for a file called CP0982.EXE in the C/C++ section. A Setup tutorial is also available on MSDL. The tutorial is located in the WINSDK section in a file called SETTLKIT.EXE.