Creating a .NET Windows Installer – Part 1 - Article (Page 12 of 14 )
You can use the serial number template (the SerialNumberTemplate property in the Customer Information window) to prevent a user from installing your application without a valid serial number. The template also determines how the serial number is formatted. However, you cannot directly validate serial numbers. Instead, you must use the template-based validation routines built into the Windows Installer product, which may not be adequate for all applications.
To start, the SerialNumberTemplate is bracketed by "greater than" and "less than" signs (< and >) so the characters do not appear directly in the text box. You can also use the dash character to separate the serial number into more than one text box.
In the template itself, you can use the following characters:
# requires a digit, but does not perform additional validation.
? requires an alphanumeric character, but does not perform additional validation.
^ requires an uppercase character or a digit, but does not perform additional validation.
% requires a digit that will be used by the built-in validation algorithm.
? requires an alphanumeric character that will be used by the built-in validation algorithm.
Any other character is treated as a literal (required) constant. The validation algorithm (for % and ?) is built into the Windows Installer service. It adds up all the digits, and divides them by 7. If the remainder is 0 validation succeeds, otherwise it fails.
The FontViewer setup uses the template <%%D-##-##>, which uses three textboxes. The last four characters must be digits, the third character must be D, and the sum of the first two digits must be divisible by 7. (A valid code is 77D-00-00).