'''Abstract''' After you create your application, how do you install it on a customer's system? Creating the installation software for a product is a necessary task that can be very time consuming. Problems that occur when creating a setup.exe program can often be traced back to project planning and configuration management. The following patterns have emerged from work on products that run on Windows NT. * ManageConfigurationBackwards * Compress Whole Directories * Similar Directory Structure * Associate Include Files With Components * Avoid Circular Dependencies '''Overview''' The files which are ultimately installed on the customer's system are typically copied from directory to directory as they undergo transformations such as compilation, compression, and de-compression. The installation process may be modeled as a data flow, where the files flow from place to place. 1. repository (Code Management Vault) 2. buildroot (Build Directory) 3. setuproot (Installation Working Directory) 4. media (typically CDROM or floppys) 5. targetroot (Target Directory on customer's system) The files are "gotten" out of the repository, compiled in the buildroot, copied to setuproot, compressed onto media, and decompressed off of the media onto the targetroot. '''Author(s)''' KentSchnaith '''Date(s)''' 09-Jun-97 ----- I recently discovered that there is a good description of how one might organize project files and directories in the excellent book: * LargeScaleCppSoftwareDesign, by JohnLakos He uses a naming convention to associate files in the include directory, with packages. I prefer to divide the include directory into subdirectories, one for each package. -- KentSchnaith