A [CustomMessages] section is used to define the custom message values for {cm:...} constants. See the Constants documentation for more information.
An example of a task with a description taken from the [CustomMessages] section using a {cm:...} constant:
[CustomMessages] CreateDesktopIcon=Create a &desktop icon [Tasks] Name: desktopicon; Description: "{cm:CreateDesktopIcon}"
Messages may take arguments, from %1 up to %9. You can rearrange the order of the arguments (i.e. move the %2 before a %1) and also duplicate arguments if needed (i.e. "%1 ... %1 %2"). On messages with arguments, use two consecutive "%" characters to embed a single "%". "%n" creates a line break.
In cases where there are multiple [Languages] section entries, specifying a [CustomMessages] section entry in your script (as opposed to an .isl file) will by default override that message for all languages. To apply a [CustomMessages] section entry to only one language, prefix it with the language's internal name followed by a period. For example:
nl.CreateDesktopIcon=Maak een snelkoppeling op het &bureaublad
Currently, the .isl files for all languages that come with Inno Setup have the following custom messages defined and translated for each language (shown here with their English values):
NameAndVersion=%1 version %2 AdditionalIcons=Additional icons: CreateDesktopIcon=Create a &desktop icon CreateQuickLaunchIcon=Create a &Quick Launch icon ProgramOnTheWeb=%1 on the Web UninstallProgram=Uninstall %1 LaunchProgram=Launch %1 AssocFileExtension=&Associate %1 with the %2 file extension AssocingFileExtension=Associating %1 with the %2 file extension... AutoStartProgramGroupDescription=Startup: AutoStartProgram=Automatically start %1 AddonHostProgramNotFound=%1 could not be located in the folder you selected.%n%nDo you want to continue anyway?
You may use these predefined custom messages in your own script. An example which uses UninstallProgram:
[Icons] Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"