This is fairly simple. There is a special element called
CREATEOBJECT, which does
exactly that.
WarpIN considers creating WPS objects part of the "system configuration", which is just a arbitrary term for changes made to the user's system other than unpacking files. (CONFIG.SYS changes, WPS class registration, and profile data fall into this category as well.)
As a general rule, all system configuration is specified in the script on
a per-package basis. As a result, the CREATEOBJECT element
is a sub-element of the PCK
element. This has the consequence that WPS objects are only created if the
corresponding package was selected for installation and has successfully been installed.
The CREATEOBJECT element has a number of attributes, which vaguely
correspond to the parameters to the REXX SysCreateObject function.
A typical create-object sequence for an application would be like the following:
WPFolder WPS class with the CLASSNAME attribute of the
CREATEOBJECT element. Specify <WP_DESKTOP> with
the LOCATION attribute to have the folder created on the WPS Desktop.
The setup string (specified with the SETUP attribute) must then
specify an object ID for the new folder. This is necessary because for one,
we need the object ID in step 2 to create a program object in the folder. Secondly,
WarpIN needs the object ID to be able to delete the WPS objects on de-installation
later.
The setup string for an object ID looks like OBJECTID=<STRING>.
Note that all WPS object ID's must be enclosed in angle brackets.
See the documentation for the
CREATEOBJECT element for details.
CREATEOBJECT element and specify the WPProgram WPS class.
For LOCATION, specify the object ID of the folder, as specified above.
To specify the executable, use the EXENAME setup string. This is
probably the first time you will encounter WarpIN
macro resolution, which allows you to have the
target directory of a package (which was specified by the user before installation)
inserted dynamically. This can be done by specifying:
SETUP="EXENAME=$(1)\bin\suprword.exe;OBJECTID=<SUPERWORD>;"The
$(1) stands for "target path of package with the index 1". See
Macro resolution for details.
Again, note the object ID given to the program object, so that WarpIN can later delete the object on de-installation.