Automatical assignments of global IDs to modules
The scp linker automatically optimizes the setup script to reduce the efforts needed in scp files:
Global IDs that are not assigned to a module, are automatically assigned to the root module.
Global IDs that are assigned to modules, but are not defined, are automatically removed from modules.
This is only relevant for Directories, Files, Customs and Procedures, because all other items do not belong to modules (Installation, HelpText, ...) or have to contain a ModuleID in their definition block (ProfileItem, RegistryItem, ...) .
If you only define a file and do not include it into the list ( Files = ( ... ); ) of a module, the file is automatically added to the root module. Therefore you only have to edit one scp file.
The second case is not less important. If you define in a module definition a file list like
Files = (gid_File_Only_Windows, gid_File_Only_Linux, gid_File_Only_Solaris);
you do not need to write any platform dependencies inside this definition (take care of the filenames ;-) )
If you build a Windows script, in which the definitions of gid_File_Only_Linux and gid_File_Only_Solaris do not occur, you do not have to take care of the module assignments. The scplinker automatically removes these two assignments and writes
Files = (gid_File_Only_Windows);
into the setup script in the installation set.