|Introduction to PPWIZARD|
Apart from the short introduction here, this document does not cover the PPWIZARD tool (which has extensive documentation of its own). PPWIZARD was installed along with MAKEMSI, see:
You should not need extensive knowledge of this tool unless you are creating your own commands for tasks you find yourself doing often or you need to interacat with environment variables, databases or other Windows components. If you are creating very complicated packages you might however find it worth your while to learn more than the basics.
|#include - Modular Script|
The "#include" command simply allows you to load the contents of the file and include it inline (the file is sometimes called a "header" file).
the #include command is a common way of splitting large tasks into smaller modules with each module (file) doing some related type of work.
|#define - Define Commands / Constants / Code|
The "#define" command allows you to define a simple replaceable parameter and refer to it elsewhere (it can also be used to create complex logic). You can then refer to the contents of the parameter by using "<$" and ">" as in the following example:
;--- Define the version number --- #define VersionNumber 1.05.1234.0101 ;--- Use the version number ----- ... ... the version number is <$VersionNumber>, and ... ...
Within MAKEMSI header files (they have the extension ".MMH") you will see many definitions which you can and should use to refer to some values (for example component attributes). The functioning of the header and many macros actions can be adjusted by the setting of your own parameters. For example if you do not specify feature attributes when using the Feature macro then the default attributes of "DEFAULT_FEATURE_ATTRIBUTES" are used. Within the header file you will find a line similar to:
#define? DEFAULT_FEATURE_ATTRIBUTES FavorLocal
The "#define?" is a variation of the "#define" command, the difference being that the parameter is only set if it does not already exist. Therefore to specify your own default you would "#define" this value before you include the header file!
Some (but not all) macros can be redefined after the fact so that if you have a large block of code where all values need to be the same then the "#define+" command can be used. This command also defines a value but it eliminates the warning message you'd otherwise get warning you about a redefinition (its use should be restricted to only those cases where you know you are defining an existing value).
You may wish to read the MAKEMSI tweeks section of this document for more details about how processing defaults can be altered.
|PPWIZARD Line Continuation|
PPWIZARD requires all macro references to be contained within a single logical "line". You can place a "\" on the end of any line to continue it to the next (a space is inserted between the 2 lines), there are other types of continuation but the main alternative you will probably see and use is the use of "#(" and "#)" block commands which combine all lines within the block using the defined delimiter.
Some examples follow:
space \ delimited \ words #( space delimited words #) #( ";" semicolon delimited words #) #( '<?NewLine>' Line 1 Line 2 #)