From Moonlight Design
Jump to navigation Jump to search
CatSetup's splash screen

CatSetup is a scriptable 16-bit Windows installer and uninstaller primarily used to distribute my software programs. It supports installation from multiple media types, including CD-ROMs, one or more floppy disks, hard drives, mounted network drives, and single-file EXE downloads over the Internet.

Installer size minimization and multitasking maximization were the primary quality attributes considered during CatSetup's construction. By making CatSetup's disk footprint as small as possible, programs distributed using CatSetup could be downloaded more easily through through bulletin board systems (BBS), which were prevalent in the mid-1990s. The disk footprint of CatSetup 1.9 -- the final version -- is 96,946 bytes, which is less than the size of a typical web page when images are considered. My interests in concurrency led me to aggressively yield the CPU to other programs during the installation process, permitting the user to run background activities such as playing MIDI files for music during the installation. Win16 implements cooperative multitasking between programs, so cooperation was necessary to give the illusion of concurrency.

CatSetup's scripting language is named KittyScript, continuing the cat theme of most of my early software.



As a Win16 program, CatSetup cannot handle long file names without the help of batch files in the install process to rename short file names to long file names. This also means that CatSetup does not give access to any Win32 functionality, such as the registry.

Installing files from a resource inside the installer's EXE file might write out a small amount of unknown memory contents at the end of the file when Wine is used to run CatSetup, and this might also happen in Windows when the resource is not compressed. This bug was never fixed due to me abandoning CatSetup for Win32-based installers.