InstallerActionTextElement |
SchemaElement[] |
Creates text to be displayed in a progress dialog box and written
to the log for actions that take a long time to execute. The text
displayed consists of the action description and optionally formatted
data from the action. The entries in the ActionText table typically
refer to actions in sequence tables.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
Unique name identifying the action. |
True |
template |
string |
A localized format template is used to format action data records for display during action execution. If no template is supplied, then the action data will not be displayed. |
False |
Nested Elements:
<description>
Localized description displayed in the progress dialog box or written to the log when the action is executing.
</description>
Examples
Add the related action text for the web folder actions.
<actiontext>
<action name="WEBCA_GatherWebFolderProperties" >
<description>Gathering web folder properties</description>
</action>
<action name="WEBCA_ApplyWebFolderProperties" >
<description>Applying web folder properties</description>
</action>
<action name="WEBCA_RollbackApplyWebFolderProperties" >
<description>Removing web folder properties</description>
</action>
<action name="WEBCA_CreateURLs" >
<description>Creating URLs</description>
</action>
<action name="WEBCA_EvaluateURLs" >
<description>Evaluating URLs</description>
</action>
<action name="WEBCA_EvaluateURLsNoFail" >
<description>Evaluating URLs and do not fail if URL is invalid</description>
</action>
<action name="WEBCA_EvaluateURLsMB" >
<description>Evaluating URLs</description>
</action>
<action name="WEBCA_CreateAppRoots" >
<description>Creating application roots</description>
</action>
<action name="WEBCA_TARGETVDIR" >
<description>Set TARGETVDIR property to the specified virtual dir</description>
</action>
<action name="WEBCA_TARGETPORT" >
<description>Set TARGETPORT property to the specified virtual dir port</description>
</action>
</actiontext>
|
InstallerAppMappingsElement |
SchemaElement[] |
Adds Verbs and a handler for the specified file type.
This not an officially Microsoft supported table.
Parameters
Attribute |
Type |
Description |
Required |
directory |
string |
Refrence to a directory. The directory to add the specific verb/handler to IIS for the specified file type. |
True |
extension |
string |
File name extension to specifically handle |
False |
exepath |
string |
Path to the Internet Server API (ISAPI) or Common Gateway Interface (CGI) program to run to process a request. |
False |
verbs |
string |
Internet Information Services verbs that are allowed for the executable file. Only verbs entered in this field will be allowed. |
False |
Examples
Add the aspx app mapping
<appmappings>
<appmapping directory="D__ACME_MyProduct" extension=".aspx" exepath="[DOTNETFOLDER]aspnet_isapi.dll" verbs="GET,HEAD,POST,DEBUG" />
</appmappings>
|
InstallerAppRootsElement |
SchemaElement[] |
Create a Web application definition and marks it as running in-process
or out-of-process. If an application already exists at the specified
path, you can use this method to reconfigure the application from
in-process to out-of-process, or the reverse.
This not an officially Microsoft supported table.
Parameters
Attribute |
Type |
Description |
Required |
component |
string |
Reference to a component. Determines when the approot will be created. |
True |
urlproperty |
string |
URLProperty with stored url |
True |
inprocflag |
int |
Specifies whether the application being created is to run in-process (0), out-of-process (1), or in a pooled process (2). If the application already exists and is running, changing the value of this flag will cause the application definition to be deleted and a new application created to run in the specified process space. |
True |
Examples
Convert the virtual directory and port to a url and store the value in a property.
<approots>
<approot component="C__MainFiles" urlproperty="TARGETURL" inprocflag="2" />
</approots>
|
InstallerBinariesElement |
SchemaElement[] |
Stores the binary data for items such as bitmaps, animations, and
icons. The binary table is also used to store data for custom
actions.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
A unique key that identifies the particular binary data. If the binary data is for a control, the key appears in the Text column of the associated control in the Control table. This key must be unique among all controls requiring binary data. |
True |
value |
string |
The binary file to add. |
True |
Examples
Add the custom action dll to create/modify virtual directories
<binaries>
<binary name="MSVBDPCADLL" value="${resource.dir}\MSVBDPCA.DLL" />
</binaries>
|
InstallerComponentsElement |
SchemaElement[] |
Groups sets of files into named sets, these can be used to install
and perform operations on a set of files as one entity.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
A name used to refer to the component. |
True |
id |
string |
A string GUID unique to this component, version, and language. Note that the letters of these GUIDs must be
uppercase. Utilities such as GUIDGEN can generate GUIDs containing lowercase letters. The lowercase letters must be
changed to uppercase to make these valid component code GUIDs.
|
True |
attr |
int |
This column contains a bit flag that specifies options for remote execution. Add the indicated bit to the total value in the column to include an option.
DescriptionComponent cannot be run from source.
Set this bit for all components belonging to a feature to prevent the feature from being run-from-network or
run-from-source. Note that if a feature has no components, the feature always shows run-from-source and
run-from-my-computer as valid options.
Component can only be run from source.
Set this bit for all components belonging to a feature to prevent the feature from being run-from-my-computer.
Note that if a feature has no components, the feature always shows run-from-source and run-from-my-computer as
valid options.
Component can run locally or from source.If this bit is set, the value in the key element is used as a key into the Registry table.
If the Value field of the corresponding record in the Registry table is null, the Name field in that record must
not contain "+", "-", or "*". For more information, see the description of the Name field in Registry table.
Setting this bit is recommended for registry entries written to the HKCU hive. This ensures the installer writes
the necessary HKCU registry entries when there are multiple users on the same machine.
If this bit is set, the installer does not remove the component during an uninstall. The installer registers an extra system client for the component in the Windows Installer registry settings.
If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table.If this bit is set, the installer reevaluates the value of the statement in the Condition column
upon a reinstall. If the value was previously False and has changed to True, the installer installs the component.
If the value was previously True and has changed to False, the installer removes the component even if the component
has other products as clients. This bit should only be set for transitive components. See Using Transitive
Components.
If this bit is set, the installer does not install or reinstall the component if a key path file or
a key path registry entry for the component already exists. The application does register itself as a client of
the component.
Use this flag only for components that are being registered by the Registry table.
Set this bit to mark this as a 64-bit component. This attribute facilitates the installation of
packages that include both 32-bit and 64-bit components. If this bit is not set, the component is registered
as a 32-bit component.
Value |
0 |
1 |
2 |
4 |
16 |
32 |
64 |
128 |
256 |
|
True |
directory |
string |
Refrence to a directory. Defines the directory location for where the files assigned to the component are to be placed. |
True |
feature |
string |
Refrence to a feature. Maps a feature to the component. Used to determine if the component is to be installed or not. |
True |
condition |
string |
A conditional statement that can control whether a component is installed. If the condition is null or evaluates to
true, then the component is enabled. If the condition evaluates to False, then the component is disabled and is not
installed. |
False |
fileattr |
int |
Integer containing bit flags representing file attributes.
The following table shows the definition of the bit field.
DescriptionRead-OnlyHiddenSystemThe file is vital for the proper operation of the component to which it belongsThe file contains a valid checksum. A checksum is required to repair a file that has become corrupted.This bit must only be added by a patch and if the file is being added by the patch.The file's source type is uncompressed. If set, ignore the Word Count Summary Property.
If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression
state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed
and msidbFileAttributesCompressed.The file's source type is compressed. If set, ignore the Word Count Summary Property.
If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of
the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and
msidbFileAttributesCompressed.
Value |
1 |
2 |
4 |
512 |
1024 |
4096 |
8192 |
16384 |
|
False |
checkinterop |
bool |
Used to determine if file(s) in the fileset are interop file(s). If true , extra information will be added in the install
package to register each interop file. If false , the file(s) will not be not be checked and the extra registration information
will not be added to the msi. |
False |
installassembliestogac |
bool |
Used to determine if assemblies should be installed to the Global Assembly Cache.
If true , all assemblies in the fileset will be added to the GAC. If false , the assemblies will be installed
to the specified directory (as a normal file would). Note: If an assembly is specified to be installed into the GAC, it will not
also be installed to the directory specified. |
False |
keepsubdirs |
bool |
Used to determine if directories in the fileset should be built.
If true , all subdirectories of the fileset basedir will be built. If false the directories structure will be
flattened. The default is false . |
False |
Nested Elements:
<keyfile>
This value points to a file or folder belonging to the component that the installer uses to detect the component. Two components cannot share the same key path value.
Parameters
Attribute
Type
Description
Required
-
file
string
Name of the key (file) to use. Also, this could be an id of a registry key value.
True
</keyfile>
<fileset>
Specifies the files to include with the component
</fileset>
<forceid>
Used to force specific attributes on a per file basis
Parameters
Attribute
Type
Description
Required
-
file
string
Name of the file, in the fileset, to override.
True
-
id
string
Unique GUID to assign to the file.
True
-
attr
int
Integer containing bit flags representing file attributes.
The following table shows the definition of the bit field.
Value
Description
-
1
Read-Only
-
2
Hidden
-
4
System
-
512
The file is vital for the proper operation of the component to which it belongs
-
1024
The file contains a valid checksum. A checksum is required to repair a file that has become corrupted.
-
4096
This bit must only be added by a patch and if the file is being added by the patch.
-
8192
The file's source type is uncompressed. If set, ignore the Word Count Summary Property.
If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression
state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed
and msidbFileAttributesCompressed.
-
16384
The file's source type is compressed. If set, ignore the Word Count Summary Property.
If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of
the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and
msidbFileAttributesCompressed.
False
-
version
string
This field is the version string for a versioned file. This field is blank for non-versioned files.
False
-
language
string
A list of decimal language IDs separated by commas.
False
-
checkinterop
bool
Used to determine if file is an interop file. If true, extra information will be added in the install
package to register the interop file. If false, the file will not be not be checked and the extra registration information
will not be added to the msi.
False
-
installtogac
bool
If true, and if the file is an assembly, it will be installed to the GAC. If false, the file
will be installed to the directory specified by the component. Note: If an assembly is specified to
be installed into the GAC, it will not also be installed to the directory specified.
False
</forceid>
Examples
Define a sample component structure.
<components>
<component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" >
<key file="default.aspx" />
<fileset basedir="${install.dir}">
<include name="*.*" />
</fileset>
</component>
</components>
Install files to TARGETDIR and assemblies to the GAC (Global Assembly Cache). Do not install MyOtherAssembly.dll to the GAC, but rather install it with the other files (to TARGETDIR)
<components>
<component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" installassembliestogac="true" >
<key file="MyAssemblyName.xml" />
<fileset basedir="${install.dir}">
<include name="*.*" />
</fileset>
<forceid file="MyOtherAssembly.dll" id="_4EB7CCB23D394958988ED817DA00B9D1" installtogac="false" />
</component>
</components>
Assign a registry entry to a specific component.
<components>
<component name="C__RegistryEntry" id="{06C654AA-273D-4E39-885C-3E5225D9F336}" attr="4" directory="TARGETDIR" feature="F__DefaultFeature" >
<key file="R__822EC365A8754FACBF6C713BFE4E57F0" />
</component>
</components>
.
.
.
<registry>
<key path="SOFTWARE\MyCompany\MyProduct\" root="machine" component="C__RegistryEntry">
<value id="R__822EC365A8754FACBF6C713BFE4E57F0" name="MyKeyName" value="MyKeyValue" />
</key>
</registry>
|
InstallerControlConditionsElement |
SchemaElement[] |
Used to validate and perform operations as the result of information
entered by the user into controls on custom dialogs.
Parameters
Attribute |
Type |
Description |
Required |
dialog |
string |
Refrence to a dialog. Used to associate the control with the dialog. |
True |
control |
string |
Refrence to a control. Maps to a control for the specified dialog. |
True |
action |
string |
The action that is to be taken on the control. The possible actions are shown in the following table.
DescriptionSet control as the default.Disable the control.Enable the control.Hide the control.Display the control.
Value |
Default |
Disable |
Enable |
Hide |
Show |
|
True |
condition |
string |
A conditional statement that specifies under which conditions the action should be triggered. If this statement does not evaluate to TRUE, the action does not take place. If it is set to 1, the action is always applied. |
True |
remove |
bool |
If true , the control condition is removed. If false , the control condition is added. |
False |
Examples
Remove the control condition for the Browse button from the customize dialog and add control conditions for a web dialog
<controlconditions>
<!-- Remove control condition for Browse button on customizeDlg -->
<controlcondition dialog="CustomizeDlg" control="Browse" action="Hide"
condition="Installed" remove="true" />
<!-- Add control conditions for the web folder dialog -->
<controlcondition dialog="WebFolderDlg" control="Back" action="Disable"
condition="ShowUserRegistrationDlg=""" />
<controlcondition dialog="WebFolderDlg" control="Back" action="Enable"
condition="ShowUserRegistrationDlg<>""" />
</controlconditions>
|
InstallerControlEventsElement |
SchemaElement[] |
Used to route the flow of the installation process as the result of
events raised by the user interacting with controls on dialogs.
Parameters
Attribute |
Type |
Description |
Required |
dialog |
string |
Refrence to a dialog. Used to associate the control with the dialog. |
True |
control |
string |
Refrence to a control. Maps to a control for the specified dialog. |
True |
name |
string |
An identifier that specifies the type of event that should take place when the user interacts with the control
specified by Dialog_ and Control_. For a list of possible values see ControlEvent Overview.
To set a property with a control, put [Property_Name] in this field and the new value in the argument field. Put { }
into the argument field to enter the null value.
|
True |
argument |
string |
A value used as a modifier when triggering a particular event. |
True |
condition |
string |
A conditional statement that determines whether the installer activates the event in the Event column. The installer
triggers the event if the conditional statement in the Condition field evaluates to True. Therefore put a 1 in this column
to ensure that the installer triggers the event. The installer does not trigger the event if the Condition field contains
a statement that evaluates to False. The installer does not trigger an event with a blank in the Condition field unless no
other events of the control evaluate to True. If none of the Condition fields for the control named in the Control_ field
evaluate to True, the installer triggers the one event having a blank Condition field, and if more than one Condition field
is blank it triggers the one event of these with the largest value in the Ordering field. |
False |
order |
int |
An integer used to order several events tied to the same control. This must be a non-negative number. |
False |
remove |
bool |
If true , the control condition is removed. If false , the control condition is added. |
False |
Examples
Remove the control events for the Browse button from the customize dialog and add events conditions for a web dialog
<controlevents>
<!-- Remove the old control events -->
<controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog"
argument="SetupTypeDlg" condition="ProductID" remove="true" />
<controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog"
argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg <> 1" remove="true" />
<controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog"
argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg = 1" remove="true" />
<!-- Remove control events for Browse button on CustomizeDlg -->
<controlevent dialog="CustomizeDlg" control="Browse" name="SelectionBrowse"
argument="BrowseDlg" condition="1" remove="true" />
<!-- Add new control events for the web dialog -->
<controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog"
argument="WebFolderDlg" condition="ProductID" />
<controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog"
argument="WebFolderDlg" condition="ShowWebFolderDlg <> 1" />
<controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog"
argument="WebFolderDlg" condition="ShowWebFolderDlg = 1" />
<controlevent dialog="WebFolderDlg" control="Cancel" name="SpawnDialog"
argument="CancelDlg" order="0" />
<controlevent dialog="WebFolderDlg" control="Back" name="NewDialog"
argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg<>1"
order="0" />
<controlevent dialog="WebFolderDlg" control="Back" name="NewDialog"
argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg=1"
order="0" />
<!-- Virtual Directory Control Events -->
<controlevent dialog="WebFolderDlg" control="Next" name="DoAction"
argument="WEBCA_CreateURLs" condition="1" order="0" />
<controlevent dialog="WebFolderDlg" control="Next" name="DoAction"
argument="WEBCA_EvaluateURLsMB" condition="1" order="1" />
<controlevent dialog="WebFolderDlg" control="Next" name="SetTargetPath"
argument="TARGETDIR" condition="1" order="2" />
<controlevent dialog="WebFolderDlg" control="Next" name="NewDialog"
argument="SetupTypeDlg" condition="1" order="3" />
</controlevents>
|
InstallerControlsElement |
SchemaElement[] |
Creates user interface controls displayed on custom dialogs.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
Name of the control. This name must be unique within a dialog box but can be repeated on different dialog boxes. |
True |
dialog |
string |
Refrence to a dialog. Used to associate the control with the dialog. |
True |
type |
string |
The type of the control.
DescriptionDisplays billboards based on progress messages.Displays a static picture of a bitmap.A two-state check box.A drop-down list with an edit field.Select all except the last segment of the path.Displays folders below the main part of path.A regular edit field for any string or integer.Displays a rectangle that groups other controls together.Displays a static picture of an icon.Displays a horizontal line.A drop-down list without an edit field.Displays a column of values with icons for selection.An edit field with a mask in the text field.Displays folder name or entire path in an edit field.Bar graph that changes length as it receives progress messages.Displays a basic push button.A group of radio buttons.Displays a long string of text.Displays information from the Feature table and enables the user to change their selection state.Displays static text.Displays costing information on different volumes.Selects volume from an alphabetical list.
Control name |
Billboard |
Bitmap |
CheckBox |
ComboBox |
DirectoryCombo |
DirectoryList |
Edit |
GroupBox |
Icon |
Line |
ListBox |
ListView |
MaskedEdit |
PathEdit |
ProgressBar |
PushButton |
RadioButtonGroup |
ScrollableText |
SelectionTree |
Text |
VolumeCostList |
VolumeSelectCombo |
More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/controls.asp |
True |
x |
int |
Horizontal coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. |
True |
y |
int |
Vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. |
True |
width |
int |
Width of the rectangular boundary of the control. This must be a non-negative number. |
True |
height |
int |
Height of the rectangular boundary of the control. This must be a non-negative number. |
True |
attr |
int |
A 32-bit word that specifies the bit flags to be applied to this control. This must be a non-negative number, and the allowed values depend upon the type of control.For a list of all control attributes, and the value to enter in this field, see Control Attributes. |
True |
property |
string |
The name of a defined property to be linked to this control. Radio button, list box, and combo box values are tied into a group by being linked to the same property. This column is required for active controls and is ignored by static controls. |
False |
text |
string |
A localizable string used to set the initial text contained in a control. The string can also contain embedded properties. |
False |
nextcontrol |
string |
The name of another control on the same dialog box. If the focus in the dialog box is on the control in the Control column, hitting the tab key moves the focus to the control listed here. Therefore this is used to specify the tab order of the controls on the dialog box. The links between the controls must form a closed cycle. Some controls, such as static text controls, can be left out of the cycle. In that case, this field may be left blank. |
False |
help |
string |
Optional, localizable text strings that are used with the Help button. The string is divided into two parts by a separator character (|). The first part of the string is used as ToolTip text. This text is used by screen readers for controls that contain a picture. The second part of the string is reserved for future use. The separator character is required even if only one of the two kinds of text is present. |
False |
remove |
bool |
If true , the control is removed. If false , the control is added. |
False |
Examples
Remove the Browse button from the customize dialog and add controls for a web dialog
<controls>
<!-- Remove the Browse button from customize dialog -->
<control dialog="CustomizeDlg" name="Browse" type="PushButton"
x="304" y="200" width="56" height="17" attr="3" remove="true" />
<control dialog="CustomizeDlg" name="Tree" type="SelectionTree"
x="25" y="85" width="175" height="95" attr="7" remove="true" />
<!-- Re add the tree control with the proper next control -->
<control dialog="CustomizeDlg" name="Tree" type="SelectionTree"
x="25" y="85" width="175" height="95" attr="7"
property="_BrowseProperty" text="Tree of selections" nextcontrol="Reset" />
<!-- Adds the controls associated with the webfolder dialog -->
<control dialog="WebFolderDlg" name="BannerBitmap" type="Bitmap"
x="0" y="0" width="374" height="44" attr="1"
text="[BannerBitmap]" nextcontrol="VDirLabel" />
<control dialog="WebFolderDlg" name="Title" type="Text"
x="15" y="6" width="200" height="15" attr="196611"
text="[DlgTitleFont]Virtual Directory Information" />
<control dialog="WebFolderDlg" name="Description" type="Text"
x="25" y="23" width="280" height="15" attr="196611"
text="Please enter your virtual directory and port information." />
<control dialog="WebFolderDlg" name="BannerLine" type="Line"
x="0" y="44" width="374" height="0" attr="1" />
<control dialog="WebFolderDlg" name="VDirLabel" type="Text"
x="18" y="73" width="348" height="15" attr="3"
text="&Virtual directory:"
nextcontrol="Edit_VDir" />
<control dialog="WebFolderDlg" name="Edit_VDir" type="Edit"
x="18" y="85" width="252" height="18" attr="7"
property="TARGETVDIR"
text="[TARGETVDIR]"
nextcontrol="PortLabel" />
<control dialog="WebFolderDlg" name="PortLabel" type="Text"
x="18" y="110" width="348" height="15" attr="3"
text="&Port:"
nextcontrol="Edit_Port" />
<control dialog="WebFolderDlg" name="Edit_Port" type="Edit"
x="18" y="122" width="48" height="18" attr="7"
property="TARGETPORT"
text="[TARGETPORT]"
nextcontrol="Back" />
<control dialog="WebFolderDlg" name="BottomLine" type="Line"
x="0" y="234" width="374" height="0" attr="1" />
<control dialog="WebFolderDlg" name="Back" type="PushButton"
x="180" y="243" width="56" height="17" attr="3"
text="[ButtonText_Back]" nextcontrol="Next" />
<control dialog="WebFolderDlg" name="Next" type="PushButton"
x="236" y="243" width="56" height="17" attr="3"
text="[ButtonText_Next]" nextcontrol="Cancel" />
<control dialog="WebFolderDlg" name="Cancel" type="PushButton"
x="304" y="243" width="56" height="17" attr="3"
text="[ButtonText_Cancel]" nextcontrol="BannerBitmap" />
</controls>
|
InstallerCustomActionsElement |
SchemaElement[] |
Used to configure executables that may be run during steps in the
installation process to do things outside the bounds of MSI
technology's feature set. This is the main spot you can extend MSI
technology to perform custom processes via compiled code.
Parameters
Attribute |
Type |
Description |
Required |
action |
string |
Name of the action. The action normally appears in a sequence table unless it is called by another custom action. If the name matches any built-in action, then the custom action is never called. |
True |
type |
string |
A field of flag bits specifying the basic type of custom action and options. See Summary List of All Custom Action Types for a list of the basic types. See Custom Action Return Processing Options, Custom Action Execution Scheduling Options, Custom Action Hidden Target Option, and Custom Action In-Script Execution Options. |
True |
source |
string |
A property name or external key into another table. For a discussion of the possible custom action sources, see Custom Action Sources and the Summary List of All Custom Action Types. For example, the Source column may contain an external key into the first column of one of the following tables containing the source of the custom action code.
Directory table for calling existing executables.
File table for calling executables and DLLs that have just been installed.
Binary table for calling executables, DLLs, and data stored in the database.
Property table for calling executables whose paths are held by a property.
|
True |
target |
string |
An execution parameter that depends on the basic type of custom action. See the Summary List of All Custom Action Types for a description of what should be entered in this field for each type of custom action. For example, this field may contain the following depending on the custom action.
Target |
Custom Action |
Entry point (required) |
Calling a DLL. |
Executable name with arguments (required) |
Calling an existing executable. |
Command line arguments (optional) |
Calling an executable just installed. |
Target file name (required) |
Creating a file from custom data. |
Null |
Executing script code. |
|
True |
Examples
Add some custom actions related to the virtual directory dialog and custom action.
<customactions>
<!-- Custom actions creating entry points into the custom action dll specified in the binary table -->
<customaction action="WEBCA_GatherWebFolderProperties" type="1" source="MSVBDPCADLL" target="GatherWebFolderProperties" />
<customaction action="WEBCA_ApplyWebFolderProperties" type="1537" source="MSVBDPCADLL" target="ApplyWebFolderProperties" />
<customaction action="WEBCA_RollbackApplyWebFolderProperties" type="1281" source="MSVBDPCADLL" target="RollbackApplyWebFolderProperties" />
<customaction action="WEBCA_CreateURLs" type="1" source="MSVBDPCADLL" target="CreateURLs" />
<customaction action="WEBCA_EvaluateURLs" type="1" source="MSVBDPCADLL" target="EvaluateURLs" />
<customaction action="WEBCA_EvaluateURLsNoFail" type="1" source="MSVBDPCADLL" target="EvaluateURLsNoFail" />
<customaction action="WEBCA_EvaluateURLsMB" type="1" source="MSVBDPCADLL" target="EvaluateURLsMB" />
<customaction action="WEBCA_CreateAppRoots" type="1" source="MSVBDPCADLL" target="CreateAppRoots" />
<!-- Custom actions to set default control values in the webfolder dialog -->
<customaction action="WEBCA_TARGETVDIR" type="307" source="TARGETVDIR" target="Default VDir" />
<customaction action="WEBCA_TARGETPORT" type="307" source="TARGETPORT" target="80" />
</customactions>
|
InstallerDialogsElement |
SchemaElement[] |
Creates custom dialogs that can gather information not handled by
the default installer template.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
A name used to refer to the dialog. |
True |
hcenter |
int |
Horizontal position of the dialog box. The range is 0 to 100, with 0 at the left edge of the screen and 100 at the right edge. |
True |
vcenter |
int |
Vertical position of the dialog box. The range is 0 to 100, with 0 at the top edge of the screen and 100 at the bottom edge. |
True |
width |
int |
Width of the rectangular boundary of the dialog box. This number must be non-negative. |
True |
height |
int |
Height of the rectangular boundary of the dialog box. This number must be non-negative. |
True |
attr |
int |
A 32-bit word that specifies the attribute flags to be applied to this dialog box. This number must be non-negative.
DescriptionVisibleModalMinimizeSysModalKeepModelessTrackDiskSpaceUseCustomPaletteRTLRORightAlignedLeftScrollBiDiError
Value |
1 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
512 |
896 |
65536 |
More information here: http://msdn.microsoft.com/library/en-us/msi/setup/dialog_style_bits.asp
|
True |
title |
string |
A localizable text string specifying the title to be displayed in the title bar of the dialog box. |
True |
firstcontrol |
string |
An external key to the second column of the Control table. Combining this field with the Dialog field identifies a
unique control in the Control table. This defines the control that takes the focus when the dialog box is created. This
column is ignored in an Error dialog box.
Because static text cannot take the focus, a Text control that describes an Edit, PathEdit, ListView, ComboBox or
VolumeSelectCombo control must be made the first control in the dialog box to ensure compatibility with screen readers.
|
True |
defaultcontrol |
string |
An external key to the second column of the Control table. Combining this field with the Dialog field results in
a primary key into the Control table that defines the default control. Hitting the Return key is equivalent to clicking
on the default control. If this column is left blank, then there is no default control. This column is ignored in the
Error dialog box.
|
True |
cancelcontrol |
string |
An external key to the second column of the Control table. Combining this field with the Dialog field results in
a primary key of the Control table that defines the cancel control. Hitting the ESC key or clicking the Close button in
the dialog box is equivalent to clicking on the cancel control. This column is ignored in an Error dialog box.
The cancel control is hidden during rollback or the removal of backed up files. The protected UI handler hides the control
upon receiving a INSTALLMESSAGE_COMMONDATA message.
|
True |
Examples
Add a web folder dialog:
<dialogs>
<dialog name="WebFolderDlg" hcenter="50" vcenter="50" width="370" height="270" attr="39" title="[ProductName] [Setup]" firstcontrol="Next" defaultcontrol="Next" cancelcontrol="Cancel" />
</dialogs>
|
InstallerDirectoriesElement |
SchemaElement[] |
Specifies the directory layout for the product.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
A name used to refer to the directory. |
True |
foldername |
string |
The directory's name (localizable)under the parent directory. |
True |
root |
string |
A reference to the directory's parent directory. This can be a property name or one of the predefined directories included with the default template:
- AdminToolsFolder
- AppDataFolder
- CommonAppDataFolder
- CommonFiles64Folder
- CommonFilesFolder
- DesktopFolder
- FavoritesFolder
- FontsFolder
- LocalAppDataFolder
- MyPicturesFolder
- PersonalFolder
- ProgramFilesFolder
- ProgramMenuFolder
- ProgramFiles64Folder
- SendToFolder
- StartMenuFolder
- StartupFolder
- System16Folder
- System64Folder
- SystemFolder
- TARGETDIR
- TempFolder
- TemplateFolder
- WindowsFolder
- WindowsVolume
|
True |
Nested Elements:
<directory>
Sub directories. Note, this element can contain nested <directory/> sub elements.
Parameters
Attribute
Type
Description
Required
-
name
string
A name used to refer to the directory.
True
-
foldername
string
The directory's name (localizable)under the parent directory.
True
</directory>
Examples
Define a sample directory structure.
<directories>
<directory name="D__ACME" foldername="ACME" root="TARGETDIR" >
<directory name="D__ACME_MyProduct" foldername="My Product" />
</directory>
</directories>
|
InstallerEnvironmentElement |
SchemaElement[] |
Used to modify the environment variables of the target computer at
runtime.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
The localizable name of the environment variable. The key values are written or removed depending upon
which of the characters in the following table are prefixed to the name. There is no effect in the ordering of
the symbols used in a prefix.
DescriptionCreate the environment variable if it does not exist, and then set it during installation. If the environment variable exists, set it during the installation.Create the environment variable if it does not exist, then set it during installation. This has no effect on the value of the environment variable if it already exists.Remove the environment variable when the component is removed. This symbol can be combined with any prefix.Remove the environment variable during an installation. The installer only removes an environment variable during an installation if the name and value of the variable match the entries in the Name and Value fields of the Environment table. If you want to remove an environment variable, regardless of its value, use the '!' syntax, and leave the Value field empty.This prefix is used with Microsoft� Windows� NT/Windows� 2000 to indicate that the name refers to a system environment variable. If no asterisk is present, the installer writes the variable to the user's environment. Microsoft Windows 95/98 ignores the asterisk and add the environment variable to autoexec.bat. This symbol can be combined with any prefix. A package that is used for per-machine installations should write environment variables to the machine's environment by including * in the Name column. For more information, see http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.aspThe environment variable is set on install and removed on uninstall. This is the usual behavior.Removes an environment variable during an install or uninstall.
More information can be found here: http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp
|
True |
append |
string |
Localizable value that is to be set as a formatted string |
True |
component |
string |
Refrence to a component. Allows the variabled to be modified when the component is un/installed. |
True |
Examples
Append the installation path to the user PATH variable.
<environment>
<variable name="PATH" append="'[TARGETDIR]'" component="C__MainFiles" />
</environment>
|
InstallerIconsElement |
SchemaElement[] |
Stores icons to be used with shortcuts, file extensions, CLSIDs or
similar uses.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
Name of the icon file. |
True |
value |
string |
The binary icon data in PE (.dll or .exe) or icon (.ico) format. |
True |
Examples
Add a compiled help icon to the msi database; To be used with a shortcut.
<icons>
<icon name="CHMICON" value="${resource.dir}\chm.ico" />
</icons>
|
InstallerIISPropertiesElement |
SchemaElement[] |
Specifies directory security in IIS. Can also configure the default
documents supported by each directory.
This not an officially Microsoft supported table.
Parameters
Attribute |
Type |
Description |
Required |
directory |
string |
Reference to a directory. This is the directory that gets modified with the specific attributes. |
True |
attr |
int |
Attributes to set for the directory.
DescriptionThe file or the contents of the folder may be read through Microsoft Internet Explorer.Users are allowed to upload files and their associated properties to the enabled directory on your server or to change content in a Write-enabled file. Write can be implemented only with a browser that supports the PUT feature of the HTTP 1.1 protocol standard.The file or the contents of the folder may be executed, regardless of file type.File access requires SSL file permission processing, with or without a client certificate.Users are allowed to access source code if either Read or Write permissions are set. Source code includes scripts in Microsoft � Active Server Pages (ASP) applications.SSL file access processing requests a certificate from the client. A value of false indicates that access continues if the client does not have a certificate. Some versions of Internet Explorer will close the connection if the server requests a certificate and a certificate is not available (even if AccessSSLRequireCert is also set to true).SSL file access processing requests a certificate from the client. If the client provides no certificate, the connection is closed. AccessSSLNegotiateCert must also be set to true when using AccessSSLRequireCert.SSL file permission processing maps a client certificate to a Microsoft Windows � operating system user-account. The AccessSSLNegotiateCert property must also be set to true for the mapping to occur.File access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate.The file or the contents of the folder may be executed if they are script files or static content. A value of false only allows static files, such as HTML files, to be served.Remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests.Remote requests to view files are denied; only requests from the same computer as the IIS server succeed if the AccessRead property is set to true. You cannot set AccessNoRemoteRead to false to enable remote requests, and set AccessRead to false to disable local requests.Remote requests to execute applications are denied; only requests from the same computer as the IIS server succeed if the AccessExecute property is set to true. You cannot set AccessNoRemoteExecute to false to enable remote requests, and set AccessExecute to false to disable local requests.Requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests.Access to the physical path is not allowed.
Value |
Flag Name |
1 |
AccessRead |
2 |
AccessWrite |
4 |
AccessExecute |
8 |
AccessSSL |
16 |
AccessSource |
32 |
AccessSSLNegotiateCert |
64 |
AccessSSLRequireCert |
128 |
AccessSSLMapCert |
256 |
AccessSSL128 |
512 |
AccessScript |
1024 |
AccessNoRemoteWrite |
4096 |
AccessNoRemoteRead |
8192 |
AccessNoRemoteExecute |
16384 |
AccessNoRemoteScript |
32768 |
AccessNoPhysicalDir |
|
True |
defaultdoc |
string |
Adds a filename to the Default Documents to process. Add multiple separated with a comma (Eg. "Default.aspx,Default.htm") |
False |
Examples
Specify permissions for the directory structure.
<iisproperties>
<iisproperty directory="TARGETDIR" attr="626" defaultdoc="Default.aspx" />
<iisproperty directory="D__BIN" attr="112" />
<iisproperty directory="D__SomeSubDir" attr="114" />
</iisproperties>
|
InstallerLaunchConditionsElement |
SchemaElement[] |
Contains within it one to any number of launchcondition elements.
Launch conditions are conditions that all must be satisfied for the
installation to begin.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
A name used to identify the launch condition. |
True |
condition |
string |
Expression that must evaluate to True for installation to begin. |
True |
Nested Elements:
<description>
Localizable text to display when the condition fails and the installation must be terminated.
</description>
Examples
Create a check to make sure that IIS 5.x is installed.
<launchconditions>
<launchcondition name="CheckIIS" condition="(IISVERSION = "#5")" >
<description>
This setup requires Internet information Server 5.x. Please install Internet Information Server and run this setup again.
</description>
</launchcondition>
</launchconditions>
|
InstallerPropertiesElement |
SchemaElement[] |
Name/value pairs which will be set in the PROPERTY table of the
installer database.
The properties element contains within it one to any number of property elements.
Public property names cannot contain lowercase letters.
Private property names must contain some lowercase letters.
Property names prefixed with % represent system and user environment variables. These are
never entered into the Property
table. The permanent settings of environment variables can only be modified using the Environment Table.
More information is available here.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
A name used to refer to the property. |
True |
value |
string |
The value of the property. This value can contain references to other, predefined properties to build a compound property. |
True |
Examples
Define the required properties.
<properties>
<property name="ProductName" value="My Product" />
<property name="ProductVersion" value="1.0.0" />
<property name="Manufacturer" value="ACME Inc." />
<property name="ProductCode" value="{29D8F096-3371-4cba-87E1-A8C6511F7B4C}" />
<property name="UpgradeCode" value="{69E66919-0DE1-4280-B4C1-94049F76BA1A}" />
</properties>
|
InstallerRegistryElement |
SchemaElement[] |
Makes modifications to the Windows Registry of the target computer
at runtime.
Parameters
Attribute |
Type |
Description |
Required |
component |
string |
Refrence to a component. The component that controls the installation of the registry value. |
True |
root |
msi:MSIRegistryKeyRoot |
Valid input:
- dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1.
- machine represents HKEY_LOCAL_MACHINE
- classes represents HKEY_CLASSES_ROOT
- user represents HKEY_CURRENT_USER
- users represents HKEY_USERS
|
True |
path |
string |
Registry key. |
True |
Nested Elements:
<value>
Specifies the registry value to add to the target machine.
Attribute
Type
Description
Required
-
name
string
The registry value name (localizable). If this is Null, then the data entered into the Value column are
written to the default registry key.
If the Value column is Null, then the strings shown in the following table in the Name column have special
significance.
String
Description
-
+
The key is to be created, if absent, when the component is installed.
-
-
The key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled.
-
*
The key is to be created, if absent, when the component is installed. Additionally, the key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled.
False
-
value
string
The localizable registry value. The field is Formatted. If the value is attached to one of the following prefixes (i.e. #%value) then the value is interpreted as described in the table. Note that each prefix begins with a number sign (#). If the value begins with two or more consecutive number signs (#), the first # is ignored and value is interpreted and stored as a string.
Prefix
Description
-
#x
The value is interpreted and stored as a hexadecimal value (REG_BINARY).
-
#%
The value is interpreted and stored as an expandable string (REG_EXPAND_SZ).
-
#
The value is interpreted and stored as an integer (REG_DWORD).
- If the value contains the sequence tilde [~], then the value is interpreted as a Null-delimited list of strings (REG_MULTI_SZ). For example, to specify a list containing the three strings a, b and c, use "a[~]b[~]c."
- The sequence [~] within the value separates the individual strings and is interpreted and stored as a Null character.
- If a [~] precedes the string list, the strings are to be appended to any existing registry value strings. If an appending string already occurs in the registry value, the original occurrence of the string is removed.
- If a [~] follows the end of the string list, the strings are to be prepended to any existing registry value strings. If a prepending string already occurs in the registry value, the original occurrence of the string is removed.
- If a [~] is at both the beginning and the end or at neither the beginning nor the end of the string list, the strings are to replace any existing registry value strings.
- Otherwise, the value is interpreted and stored as a string (REG_SZ).
False
-
dword
string
A dword value to input, if the value attribute is null. This removes the requirement of adding "#" before the value.
False
-
id
string
Primary key used to identify a registry record.
False
</value>
Examples
Add the a couple registry entries on the target machine.
<registry>
<key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" >
<value name="ProductVersion" value="1.0.0" />
<value name="ProductDir" value="[TARGETDIR]" />
<value name="VirtualDir" value="[TARGETVDIR]" />
</key>
</registry>
Add a default key value to the specified registry key path
<registry>
<key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" >
<value value="1.0.0" />
</key>
</registry>
Another way to add a default key value to the specified registry key path
<registry>
<key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" >
<value name="" value="1.0.0" />
</key>
</registry>
Specify hexadecimal value (REG_BINARY) for the default key
<registry>
<key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" >
<value>
1a,81,0a,03,01,00,06,00,00,00,d3,15,fd,00,01,00,00,00,00,00,01,
00,00,00,00,00,00,00,00,00,00,00,b0,90,ce,09,01,00,00,00,00,00,ff,ff,ff,00,
00,00,00,00,00,00,00,00,6d,7a,0a,03,01,00,00,00,00,00,00,00,38,40,00,00,00,
00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,01,00,00,00,00,0f,00,00,00,
f0,ff,ff,ff,54,69,6d,65,73,20,4e,65,77,20,52,6f,6d,61,6e,f4,6f,d4,08,02,00
</value>
</key>
</registry>
|
InstallerSearchElement |
SchemaElement[] |
Contains within it one to any number of app, registry, ini, or dirfile elements.
These elements are used to search for an existing filesystem directory, file, or
Windows Registry setting. A property in the installer database is
then set with the value obtained from the search.
<app>
More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/complocator_table.asp
Attribute |
Type |
Description |
Required |
componentid |
string |
The component ID of the component whose key path is to be used for the search. |
True |
type |
msi:MSILocatorTypeDirFile |
Valid input: file or directory |
True |
setproperty |
string |
A name used to refer to the property within the Msi database. Set at install time. |
True |
</app>
<registry>
More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/reglocator_table.asp
Attribute |
Type |
Description |
Required |
type |
msi:MSILocatorTypeDirFileReg64 |
Valid input: registry , file , directory , 64bit |
True |
path |
string |
Depending on the type specified:
- Path is a directory.
- Path is a registry key.
|
True |
root |
msi:MSIRegistryKeyRoot |
Valid input:
- dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1.
- machine represents HKEY_LOCAL_MACHINE
- classes represents HKEY_CLASSES_ROOT
- user represents HKEY_CURRENT_USER
- users represents HKEY_USERS
|
True |
Nested Elements:
<value>
Parameters
Attribute
Type
Description
Required
-
name
string
Depending on the type specified:
- Key path is a file name.
- Key path is a registry value.
False
-
setproperty
string
A name used to refer to the property within the Msi database. Set at install time.
True
</value>
</registry>
<ini>
More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/inilocator_table.asp
Attribute |
Type |
Description |
Required |
filename |
string |
The .ini file name. (The .ini file must be present in the default Microsoft Windows directory.)
|
True |
section |
string |
Section name within the .ini file.
|
True |
key |
string |
Key value within the section.
|
True |
field |
msi:nonNegativeInt |
The field in the .ini line. If Field is Null or 0, then the entire line is read.
This must be a non-negative number.
|
False |
type |
msi:MSILocatorTypeDirFileRaw |
Valid input: file ,directory , or raw |
True |
setproperty |
string |
A name used to refer to the property within the Msi database. Set at install time. |
True |
</ini>
<dirfile>
More information on these attributes can be found at:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/drlocator_table.asp
and
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/signature_table.asp
Attribute |
Type |
Description |
Required |
parent |
string |
An identifier to RegLocator, IniLocator, or CompLocator tables.
If it does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path.
In order to determine what the key is for a table, prefix the property name assigned
to that locator with SIG_
|
False |
path |
string |
the path on the user's system. This is a either a full path or a relative subpath
below the directory specified in the Parent column.
|
False |
depth |
msi:nonNegativeInt |
The depth below the path that the installer searches for the file or directory.
|
False |
setproperty |
string |
A name used to refer to the property within the Msi database. Set at install time. |
True |
Nested Elements:
<file>
Parameters
Attribute
Type
Description
Required
-
name
string
The name of the file.
True
-
minversion
string
The minimum version of the file, with a language comparison. If this field is
specified, then the file must have a version that is at least equal to MinVersion.
If the file has an equal version to the MinVersion field value but the language
specified in the Languages column differs, the file does not satisfy the signature
filter criteria.
False
-
maxversion
string
The maximum version of the file. If this field is specified, then the file
must have a version that is at most equal to MaxVersion.
False
-
minsize
msi:nonNegativeInt
The minimum size of the file. If this field is specified, then the file
under inspection must have a size that is at least equal to MinSize. This must
be a non-negative number.
False
-
maxsize
msi:nonNegativeInt
The maximum size of the file. If this field is specified, then the file
under inspection must have a size that is at most equal to MaxSize. This must
be a non-negative number.
False
-
mindate
msi:nonNegativeInt
The minimum modification date and time of the file. If this field is
specified, then the file under inspection must have a modification date and time
that is at least equal to MinDate. This must be a non-negative number.
False
-
maxdate
msi:nonNegativeInt
The maximum creation date of the file. If this field is specified, then the
file under inspection must have a creation date that is at most equal to MaxDate.
This must be a non-negative number.
False
-
languages
string
The languages supported by the file.
False
</file>
</dirfile>
Examples
Get the path of the web directory and the version of IIS. Create new properties in the Msi file with those values.
<search>
<registry type="registry" path="Software\Microsoft\InetStp" root="machine" >
<value name="PathWWWRoot" setproperty="IISWWWROOT" />
</registry>
<registry type="registry" path="SYSTEM\CurrentControlSet\Services\W3SVC\Parameters" root="machine" >
<value name="MajorVersion" setproperty="IISVERSION" />
</registry>
</search>
Shows two ways to get the default key value for the specified key. Create new properties in the Msi file with those values.
<search>
<registry type="registry" path="Software\Microsoft\MessengerService" root="machine" >
<value setproperty="MSGSRVNAME" />
<value name="" setproperty="MSGSRVNAME2" />
</registry>
</search>
|
InstallerSequencesElement |
SchemaElement[] |
Used to modify the sequence of tasks/events that execute during the
overall installation process.
Parameters
Attribute |
Type |
Description |
Required |
type |
msi:MSISequenceTable |
Valid inputs:
|
True |
action |
string |
Name of the action to execute. This is either a built-in action or a custom action. |
True |
value |
int |
Number that determines the sequence position in which this action is to be executed.
A positive value represents the sequence position. A Null value indicates that the action is not executed. The following
negative values indicate that this action is to be executed if the installer returns the associated termination flag. No
more than one action may have a negative value entered in the Sequence field.
DescriptionSuccessful completion.User terminates install.Fatal exit terminates.Install is suspended.
|
True |
condition |
string |
This field contains a conditional expression. If the expression evaluates to False, then the action is skipped. If the expression syntax is invalid, then the sequence terminates, returning iesBadActionData. |
False |
Examples
Add the sequences to support virtual directories
<sequences>
<sequence type="installexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=""" />
<sequence type="installexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=""" />
<sequence type="installexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" />
<sequence type="installexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" />
<sequence type="installexecute" action="WEBCA_GatherWebFolderProperties" value="3701" condition="NOT Installed" />
<sequence type="installexecute" action="WEBCA_ApplyWebFolderProperties" value="3701" condition="NOT Installed" />
<sequence type="installexecute" action="WEBCA_RollbackApplyWebFolderProperties" value="3701" condition="NOT Installed" />
<sequence type="installexecute" action="WEBCA_CreateAppRoots" value="3701" condition="NOT Installed" />
<sequence type="installui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=""" />
<sequence type="installui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=""" />
<sequence type="installui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" />
<sequence type="installui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" />
<sequence type="adminexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=""" />
<sequence type="adminexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=""" />
<sequence type="adminexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" />
<sequence type="adminexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" />
<sequence type="adminui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=""" />
<sequence type="adminui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=""" />
<sequence type="adminui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" />
<sequence type="adminui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" />
</sequences>
|
InstallerShortcutsElement |
SchemaElement[] |
Creates shortcuts on the target computer.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
Unique name identifying the shortcut. |
True |
directory |
string |
Reference to a directory. The location of where the shortcut should be created. |
True |
filename |
string |
The localizable name of the shortcut to be created. |
True |
component |
string |
Reference to a component. The installer uses the installation state of this specified component to determine whether the shortcut is created or deleted. This component must have a valid key path for the shortcut to be installed. If the Target column contains the name of a feature, the file launched by the shortcut is the key file of the component listed in this column. |
True |
target |
string |
The shortcut target. The installer evaluates this field as a Formatted string. The field should contains a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut. |
True |
arguments |
string |
The command-line arguments for the shortcut. Note that the resolution of properties in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the property already has the intended value when the component owning the shortcut is installed. For example, for the argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the component that owns the shortcut.
|
False |
hotkey |
string |
The hotkey for the shortcut. The low-order byte contains the virtual-key code for the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys for accessibility. |
False |
icon |
string |
Reference to an icon. |
False |
iconindex |
int |
The icon index for the shortcut. This must be a non-negative number. |
False |
showcmd |
int |
The Show command for the application window. The following values may be used. The values are as defined for the Windows API function ShowWindow.
DescriptionSW_SHOWNORMALSW_SHOWMAXIMIZEDSW_SHOWMINNOACTIVE
|
False |
wkdir |
string |
The name of the property that has the path of the working directory for the shortcut. |
False |
Nested Elements:
<description>
The localizable description of the shortcut.
</description>
Examples
Add a compiled help icon to the msi database; To be used with a shortcut.
<shortcuts>
<shortcut name="HelpFiles" directory="D__PROGRAMMENU_ACME_MYPRODUCT" filename="Help File" component="C__MainFiles" target="[$C__MainFiles]\Help.chm" icon="CHMICON" iconindex="0" showcmd="3" >
<description>My Product help documentation</description>
</shortcut>
</shortcuts>
|
InstallerSummaryInformationElement |
SchemaElement[] |
Sets various properties in the SummaryInformation stream
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_information_stream.asp)
All of the sub-elements are optional.
Nested Elements:
<title>
Briefly describes the type of installer package. Phrases such as "Installation Database" or
"Transform" or "Patch" may be used for this property.
Default value: Value of the ProductName property, if defined.
</title>
<subject>
A short description of the product to be installed. This value is typically set from the installer
property ProductName
Default value: Value of the ProductName property, if defined.
</subject>
<author>
The manufacturer of the installation database. This value is typically set from the installer
property Manufacturer.
Default value: Value of the Manufacturer property, if defined.
</author>
<keywords>
Used by file browsers to hold keywords that permit the database file to be found in a keyword search.
The set of keywords typically includes "Installer" as well as product-specific keywords, and may be
localized.
Default value: Value of the Keywords property, if defined.
</keywords>
<comments>
A general description/purpose of the installer database.
Default value: Value of the Comments property, if defined.
</comments>
<template>
Indicates the platform and language versions that are supported by the database. The Template Summary
Property of a patch package is a semicolon-delimited list of the product codes that can accept the
patch.
See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/template_summary_property.asp for more information.
</template>
<revisionnumber>
Contains the package code (GUID) for the installer package. The package code is a unique identifier
of the installer package. Note: Default behavior - a new GUID is generated every time
</revisionnumber>
<creatingapplication>
The name of the application used to author the database. Note: Default value is NAnt.
</creatingapplication>
Examples
Define specific summary information.
<summaryinformation>
<title>Installation Database</title>
<subject>${install.productname}</subject>
<author>${install.manufacturer}</author>
<keywords>MSI, database, NAnt, Installer</keywords>
<comments>This installer database contains the logic and data required to install NAnt</comments>
<template>;1033</template>
<creatingapplication>NAnt - http://nant.sf.net </creatingapplication>
</summaryinformation>
|
InstallerTablesElement |
SchemaElement[] |
Creates custom tables not directly managed by default features of
the installer task.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
A unique name used to identify the table. |
True |
Nested Elements:
<columns>
<column>
Defines the columns making up the table
Parameters
Attribute
Type
Description
Required
-
name
string
A unique name used to define the column.
True
-
nullable
bool
When set to true, allows the column to accept null values; false does not allow null values.
True
-
category
msi:MSITableColumnCategoryType
Valid input:
- Text
- UpperCase
- LowerCase
- Integer
- DoubleInteger
- Time/Date
- Identifier
- Property
- Filename
- WildCardFilename
- Path
- Paths
- AnyPath
- DefaultDir
- RegPath
- Formatted
- Template
- Condition
- GUID
- Version
- Language
- Binary
- Cabinet
- Shortcut
More information here: http://msdn.microsoft.com/library/en-us/msi/setup/column_data_types.asp
False
-
type
string
Overrides the category specification. An example of valid input would be: S255
False
-
key
bool
When set to true, the column is used to form the primary key for the table; false specifies that the column is not used to form the primary key.
False
-
minvalue
int
This field applies to columns having numeric value. The field contains the minimum permissible value. This can be the minimum value for an integer or the minimum value for a date or version string.
False
-
maxvalue
int
This field applies to columns having numeric value. The field is the maximum permissible value. This may be the maximum value for an integer or the maximum value for a date or version string.
False
-
keytable
string
This field applies to columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. This can be a list of tables separated by semicolons.
False
-
keycolumn
int
This field applies to table columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. The permissible range of the KeyColumn field is 1-32.
False
-
set
string
This is a list of permissible values for this field separated by semicolons. This field is usually used for enums.
False
-
description
string
A description of the data that is stored in the column.
False
</column>
</columns>
<rows>
<row>
Defines the data for a row in the table
<columns>
<column>
Defines data for a specific cell in the row
Parameters
Attribute
Type
Description
Required
-
name
string
Name of the column to populate.
True
-
value
string
Value to populate the cell with.
True
</column>
</columns>
</row>
</rows>
Examples
Build the IniFile table. Since the WriteIniValues and RemoveIniValues actions exist in the template, they will use this table.
<tables>
<table name="IniFile">
<columns>
<column name="IniFile" nullable="false" category="Identifier" key="true" description="The key for this table." />
<column name="FileName" nullable="false" category="Text" description="The localizable name of the .ini file in which to write the information. " />
<column name="DirProperty" nullable="true" category="Identifier" description="Name of a property having a value that resolves to the full path of the folder containing the .ini file. " />
<column name="Section" nullable="false" category="Formatted" description="The localizable .ini file section." />
<column name="Key" nullable="false" category="Formatted" description="The localizable .ini file key within the section" />
<column name="Value" nullable="false" category="Formatted" description="The localizable value to be written. " />
<column name="Action" nullable="false" category="Integer" description="The type of modification to be made. " />
<column name="Component_" nullable="false" category="Identifier" description="External key into the first column of the Component table referencing the component that controls the installation of the .ini value. " />
</columns>
<rows>
<row>
<columns>
<column name="IniFile" value="MyInternetShortcut" />
<column name="FileName" value="MyInternetAddr.url" />
<column name="DirProperty" value="D__MYDIR" />
<column name="Section" value="InternetShortcut" />
<column name="Key" value="URL" />
<column name="Value" value="[TARGETURL]" />
<column name="Action" value="0" />
<column name="Component_" value="C__Documentation" />
</columns>
</row>
</rows>
</table>
</tables>
|
InstallerUrlPropertiesElement |
SchemaElement[] |
Determines the local path equivalent for a url and stores this
information in a property.
This not an officially Microsoft supported table.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
The name of the URLProperty to convert |
True |
property |
string |
The name of the property to store the directory information. |
True |
Examples
Convert the TARGETURL property to a directory and store that information in TARGETDIR
<urlproperties>
<urlproperty name="TARGETURL" property="TARGETDIR" />
</urlproperties>
|
InstallerVDirPropertiesElement |
SchemaElement[] |
Creates a URLProperty representing the virtual directory and port.
This not an officially Microsoft supported table.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
Property containing the virtual directory |
True |
portproperty |
string |
Property containing the network port number to use. |
True |
urlproperty |
string |
URLProperty to store the url in |
True |
Examples
Convert the virtual directory and port to a url and store the value in a property.
<vdirproperties>
<vdirproperty name="TARGETVDIR" portproperty="TARGETPORT" urlproperty="TARGETURL" />
</vdirproperties>
|
MsiDebug |
bool |
Causes the generated msi database file to contain debug messages for
errors created by inconsistencies in creation of the database. This
makes the file slightly larger and should be avoided when generating
a production release of your software.
|
MsiErrorTemplate |
string |
A .mst file to use as the starting database containing strings
displayed to the user when errors occur during installation.
A .mst template is included with the msi task, you only need to
supply this value if you want to override the default error
template and cannot perform something through the features of the
msi task.
|
MsiOutput |
string |
The name of the file that will be generated when the task completes
execution (eg. MyInstall.msi or MyMergeModule.msm).
|
MsiSourceDir |
string |
A directory relative to the NAnt script in which the msi task resides
from which to retrieve files that will be installed by the msi
database. All files that will be included in your installation need
to be located directly within or in subdirectories of this directory.
|
MsiTemplate |
string |
A installer file to use as the starting database in which all files
and entries will be made, and then copied to the filename specified
by the output parameter. Install templates are included with the
install tasks, you only need to supply this value if you want to
override the default template.
|
MsmId |
string |
Stores a unique identifier for a merge module. To be used as the merge module's ModuleSignature
|
MsmLanguage |
string |
Specifies the numeric language ID or IDs for a merge module.
|
MsmModuleConfigurationsElement |
SchemaElement[] |
Identifies the configurable attributes of the module. This table is
not merged into the database.
More information is available here.
Parameters
Attribute |
Type |
Description |
Required |
name |
string |
Name of the configurable item. This name is referenced in the formatting template in the Value column of the ModuleSubstitution table. |
True |
format |
msi:MSMModuleConfigurationFormat |
Specifies the format of the data being changed
- text
- key
- integer
- bitfield
|
True |
type |
string |
Specifies the type for the data being changed. This type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this depend on the value in the Format attribute. |
False |
contextdata |
string |
Specifies a semantic context for the requested data. The type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this column depend on the values in the Format and Type attributes. |
False |
defaultvalue |
string |
Specifies a default value for the item in this record if the merge tool declines to provide a value. This value must have the format, type, and context of the item. If this is a "Key" format item, the foreign key must be a valid key into the tables of the module. Null may be a valid value for this column depending on the item. For "Key" format items, this value is in CMSM special format. For all other types, the value is treated literally. Module authors must ensure that the module is valid in its default state. This ensures that versions of Mergemod.dll earlier than version 2.0 can still use the module in its default state. |
False |
attr |
int |
Bit field containing attributes for this configurable item. Null is equivalent to 0.
DescriptionThis attribute only applies to records that list a foreign key to a module table in their DefaultValue field.When this attribute is set, null is not a valid response for this item. This attribute has no effect for Integer Format Types or Bitfield Format Types.
|
False |
displayname |
string |
Provides a short description of this item that the authoring tool may use in the user interface. This column may not be localized. Set this column to null to have the module is request that the authoring tool not expose this property in the UI. |
False |
description |
string |
Provides a description of this item that the authoring tool may use in UI elements. This string may be localized by the module's language transform. |
False |
helplocation |
string |
Provides either the name of a help file (without the .chm extension) or a semicolon delimited list of help namespaces. This can be ommitted if no help is available. |
False |
helpkeyword |
string |
Provides a keyword into the help file or namespace from the HelpLocation column. The interpretation of this keyword depends on the HelpLocation attribute. |
False |
|
MsmModuleDependenciesElement |
SchemaElement[] |
Lists other merge modules that are required for this merge module
to operate properly.
Contains any number of dependency elements.
More information is available here.
Parameters
Attribute |
Type |
Description |
Required |
id |
string |
Identifier of the merge module required |
True |
language |
string |
Numeric language ID of the dependent merge module. Can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. If the field contains a group language ID, any merge module with having a language code in that group satisfies the dependency. If the RequiredLanguage is set to 0, any merge module filling the other requirements satisfies the dependency. |
True |
version |
string |
Version of the dependent merge module. If ommited, any version fills the dependency. |
False |
Examples
Make sure that the NAnt merge module is included
<moduledependencies>
<dependency id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" />
</moduledependencies>
|
MsmModuleExclusionsElement |
SchemaElement[] |
Lists other merge modules that are incompatible in the same
installer database.
Contains any number of exclusion elements.
More information is available here.
Parameters
Attribute |
Type |
Description |
Required |
id |
string |
Identifier of the merge module required |
True |
language |
string |
Numeric language ID of the merge module in ExcludedID. The ExcludedLanguage column can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. The ExcludedLanguage column can accept negative language IDs. The meaning of the value in the ExcludedLanguage column is as follows.
DescriptionExclude the language IDs specified by ExcludedLanguage.Exclude no language IDs.Exclude all language IDs except those specified by ExcludedLanguage.
ExcludedLanguage |
> 0 |
= 0 |
< 0 |
|
True |
minversion |
string |
Minimum version excluded from a range. If ommitted, all versions before maxversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. |
False |
maxversion |
string |
Maximum version excluded from a range. If ommitted, all versions after minversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. |
False |
Examples
Exclude the all NAnt merge modules created before version 0.85.0
<moduleexclusions>
<exclusion id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" maxversion="0.85.0" />
</moduleexclusions>
|
MsmModuleIgnoreTablesElement |
SchemaElement[] |
If a table in the merge module is listed in the ModuleIgnoreTable
table, it is not merged into the .msi file. If the table already
exists in the .msi file, it is not modified by the merge. The tables
in the ModuleIgnoreTable can therefore contain data that is unneeded
after the merge.
More information is available here.
Parameters
Attribute |
Type |
Description |
Required |
table |
string |
Name of the table in the merge module that is not to be merged into the .msi file. |
True |
Examples
Ensure the module is compatible for users who have versions of Mergemod.dll earlier than 2.0
<moduleignoretables>
<table name="ModuleConfiguration" />
<table name="ModuleSubstitution" />
<table name="_ModuleConfigurationGroup" />
</moduleignoretables>
|
MsmModuleSequencesElement |
SchemaElement[] |
Used to modify the sequence of tasks/events that execute during the
overall installation process.
Parameters
Attribute |
Type |
Description |
Required |
type |
msi:MSISequenceTable |
Valid inputs:
|
True |
action |
string |
Action to insert into sequence. Refers to one of the installer standard actions, or an entry in the merge module's CustomAction table or Dialog table. If a standard action is used in the Action column of a merge module sequence table, the BaseAction and After attributes must be ommitted. |
True |
sequence |
int |
The sequence number of a standard action. If a custom action or dialog is entered into the Action column of this row, this attribute must be ommitted When using standard actions in merge module sequence tables, the value in the Sequence column should be the recommended action sequence number. If the sequence number in the merge module differs from that for the same action in the .msi file sequence table, the merge tool uses the sequence number from the .msi file. See the suggested sequences in Using a Sequence Table for the recommended sequence numbers of standard actions. |
False |
baseaction |
string |
Can contain a standard action, a custom action specified in the merge module's custom action table, or a dialog specified in the module's dialog table. Is a key into the Action column of this table. It cannot be a foreign key into another merge table or table in the .msi file. This means that every standard action, custom action, or dialog listed in the BaseAction column must also be listed in the Action column of another record in this table. |
False |
after |
bool |
Boolean for whether Action comes before or after BaseAction
DescriptionAction to come after BaseActionAction to come before BaseAction
|
False |
condition |
string |
A conditional statement that indicates if the action is be executed. |
False |
|
MsmModuleSubstitutionsElement |
SchemaElement[] |
The ModuleSubstitution table specifies the configurable fields of a
module database and provides a template for the configuration of each
field. The user or merge tool may query this table to determine what
configuration operations are to take place. This table is not merged
into the target database.
More information is available here.
Parameters
Attribute |
Type |
Description |
Required |
table |
string |
Name of the table being modified in the module database. |
True |
row |
string |
Specifies the primary keys of the target row in the table named in the Table column. Multiple primary keys are separated by semicolons. Target rows are selected for modification before any changes are made to the target table. If one record in the ModuleSubstitution table changes the primary key field of a target row, other records in the ModuleSubstitution table are applied based on the original primary key data, not the resulting of primary key substitutions. The order of row substitution is undefined. Values in this column are always in CMSM special format. A literal semicolon (';') or equal sign ('=') can be added by prefixing the character with a backslash. '\'. A null value for a key is signified by a null, a leading semicolon, two consecutive semicolons, or a trailing semicolon, depending on whether the null value is a sole, first, middle, or final key column value. |
True |
column |
string |
Specifies the target column in the row named in the Row column. If multiple rows in the ModuleSubstitution table change different columns of the same target row, all the column substitutions are performed before the modified row is inserted into the database. The order of column substitution is undefined. |
True |
value |
string |
Contains a string that provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column. When a substitution string of the form [=ItemA] is encountered, the string, including the bracket characters, is replaced by the value for the configurable "ItemA." The configurable item "ItemA" is specified in the Name column of the ModuleConfiguration table and its value is provided by the merge tool. If the merge tool declines to provide a value for any item in a replacement string, the default value specified in the DefaultValue column of the ModuleConfiguration Table is substituted. If a string references an item not in the ModuleConfiguration table, the merge fails.
-
This column uses CMSM special format. A literal semicolon (';') or equals sign ('=') can be added to the table by prefixing the character with a backslash. '\'.
-
The Value field may contain multiple substitution strings. For example, the configuration of items "Food1" and "Food2" in the string: "[=Food1] is good, but [=Food2] is better because [=Food2] is more nutritious."
-
Replacement strings must not be nested. The template "[=AB[=CDE]]" is invalid.
-
If the Value field evaluates to null, and the target field is not nullable, the merge fails and an error object of type msmErrorBadNullSubstitution is created and added to the error list. For details, see the error types described in get_Type Function.
-
If the Value field evaluates to the null GUID: {00000000-0000-0000-0000-000000000000}, the null GUID is replaced by the name of the feature before the row is merged into the module. For details, see Referencing Features in Merge Modules.
-
The template in the Value field is evaluated before being inserted into the target field. Substitution into a row is done before replacing any features.
-
If the Value column evaluates to a string of only integer characters (with an optional + or -), the string is converted into an integer before being substituted into an target field of the Integer Format Type. If the template evaluates to a string that does not consist only of integer characters (and an optional + or -) the result cannot be substituted into an integer target field. Attempting to insert a non-integer into an integer field causes the merge to fail and adds a msmErrorBadSubstitutionType error object to the error list.
-
If the target column specified in the Table and Column fields is a Text Format Type, and evaluation of the Value field results in an Integer Format Type, a decimal representation of the number is inserted into the target text field.
-
If the target field is an Integer Format Type, and the Value field consists of a non-delimited list of items in Bitfield Format, the value in the target field is combined using the bitwise AND operator with the inverse of the bitwise OR of all of the mask values from the items, then combined using the bitwise OR operator with each of the integer or bitfield items when masked by their corresponding mask values. Essentially, this explicitly sets the bits from the properties to the provided values but leaves all other bits in the cell alone.
-
If the Value field evaluates to a Key Format Type, and is a key into a table that uses multiple primary keys, the item name may be followed by a semicolon and an integer value that indicates the 1-based index into the set of values that together make a primary key. If no integer is specified, the value 1 is used. For example, the Control table has two primary key columns, Dialog_ and Control. The value of an item "Item1" that is a key into the Control table will be of the form "DialogName;ControlName", where DialogName is the value in the Dialog_ table and ControlName is the value in the Control column. To substitute just ControlName, the substitution string [=Item1;2] should be used.
|
False |
|
MsmVersion |
string |
Stores the version number of a merge module.
|
SchemaObject |
Object |
Returns the object from the Schema wrapper after
NAnt.Contrib.Tasks.SchemaValidatedTask.Initialize is called.
|