The source code schema for the Windows Installer XML Toolset Utility Extension. Closes applications or schedules a reboot if application cannot be closed. Condition that determines if the application should be closed. Must be blank or evaluate to true for the application to be scheduled for closing. Identifier for the close application (primary key). If the Id is not specified, one will be generated. Name of the exectuable to be closed. This should only be the file name. Description to show if application is running and needs to be closed. Optionally orders the applications to be closed. Optionally sends a close message to the application. Default is no. Sends WM_QUERYENDSESSION then WM_ENDSESSION messages to the application. Default is "no". Optionally sends a close message to the application from deffered action without impersonation. Default is no. Sends WM_QUERYENDSESSION then WM_ENDSESSION messages to the application from a deffered action without impersonation. Default is "no". Optionally prompts for reboot if application is still running. The default is "yes". The TerminateProcess attribute must be "no" or not specified if this attribute is "yes". When this attribute is set to "yes", the user will be prompted when the application is still running. The Description attribute must contain the message to display in the prompt. The prompt occurs before executing any of the other options and gives the options to "Abort", "Retry", or "Ignore". Abort will cancel the install. Retry will attempt the check again and if the application is still running, prompt again. "Ignore" will continue and execute any other options set on the CloseApplication element. The default is "no". Property to be set if application is still running. Useful for launch conditions or to conditionalize custom UI to ask user to shut down apps. Attempts to terminates process and return the specified exit code if application is still running after sending any requested close and/or end session messages. If this attribute is specified, the RebootPrompt attribute must be "no". The default is "no". Optional time in seconds to wait for the application to exit after the close and/or end session messages. If the application is still running after the timeout then the RebootPrompt or TerminateProcess attributes will be considered. The default value is "5" seconds. Describes a component search. Component to search for. Optional ProductCode to determine if the component is installed. Rather than saving the matching key path into the variable, a ComponentSearch can save an attribute of the component instead. Saves the parent directory for the component's file key path; other types of key path are returned unmodified. Saves the state of the component: absent (2), locally installed (3), will run from source (4), or installed in default location (either local or from source) (5) Saves the key path of the component if installed. This is the default. References a ComponentSearch. Describes a directory search. Directory path to search for. Rather than saving the matching directory path into the variable, a DirectorySearch can save an attribute of the matching directory instead. Saves true if a matching directory is found; false otherwise. References a DirectorySearch. Creates an event source. The number of categories in CategoryMessageFile. CategoryMessageFile must be specified too. Name of the category message file. CategoryCount must be specified too. Note that this is a formatted field, so you can use [#fileId] syntax to refer to a file being installed. It is also written as a REG_EXPAND_SZ string, so you can use %environment_variable% syntax to refer to a file already present on the user's machine. Name of the event message file. Note that this is a formatted field, so you can use [#fileId] syntax to refer to a file being installed. It is also written as a REG_EXPAND_SZ string, so you can use %environment_variable% syntax to refer to a file already present on the user's machine. Marks the EventSource registry as the key path of the component it belongs to. Name of the event source's log. Name of the event source. Name of the parameter message file. Note that this is a formatted field, so you can use [#fileId] syntax to refer to a file being installed. It is also written as a REG_EXPAND_SZ string, so you can use %environment_variable% syntax to refer to a file already present on the user's machine. Equivalent to EVENTLOG_ERROR_TYPE. Equivalent to EVENTLOG_AUDIT_FAILURE. Equivalent to EVENTLOG_INFORMATION_TYPE. Equivalent to EVENTLOG_AUDIT_SUCCESS. Equivalent to EVENTLOG_WARNING_TYPE. Describes a file search. File path to search for. Rather than saving the matching file path into the variable, a FileSearch can save an attribute of the matching file instead. Saves true if a matching file is found; false otherwise. Saves the version information for files that have it (.exe, .dll); zero-version (0.0.0.0) otherwise. References a FileSearch. Creates a file share out of the component's directory. ACL permission Identifier for the file share (primary key). Name of the file share. Description of the file share. Sets ACLs on a FileShare. This element has no Id attribute. The table and key are taken from the parent element. For a directory, the right to create a file in the directory. Only valid under a 'CreateFolder' parent. For a directory, the right to create a subdirectory. Only valid under a 'CreateFolder' parent. For a directory, the right to delete a directory and all the files it contains, including read-only files. Only valid under a 'CreateFolder' parent. For a directory, the right to traverse the directory. By default, users are assigned the BYPASS_TRAVERSE_CHECKING privilege, which ignores the FILE_TRAVERSE access right. Only valid under a 'CreateFolder' parent. specifying this will fail to grant read access Finds user groups on the local machine or specified Active Directory domain. The local machine will be searched for the group first then fallback to looking in Active Directory. This element is not capable of creating new groups but can be used to add new or existing users to an existing group. Unique identifier in your installation package for this group. A Formatted string that contains the name of the group to be found. An optional Formatted string that specifies the domain for the group. Used to join a user to a group How To: Create a shortcut to a webpage Creates a shortcut to a URL. Unique identifier in your installation package for this Internet shortcut. Identifier reference to Directory element where shortcut is to be created. This attribute's value defaults to the parent Component directory. The name of the shortcut file, which is visible to the user. (The .lnk extension is added automatically and by default, is not shown to the user.) URL that should be opened when the user selects the shortcut. Windows opens the URL in the appropriate handler for the protocol specified in the URL. Note that this is a formatted field, so you can use [#fileId] syntax to refer to a file being installed (using the file: protocol). Which type of shortcut should be created. Creates .url files using IUniformResourceLocatorW. Creates .lnk files using IShellLinkW (default). Icon file that should be displayed. Note that this is a formatted field, so you can use [#fileId] syntax to refer to a file being installed (using the file: protocol). Index of the icon being referenced Used to create performance categories and configure performance counters. Unique identifier in your installation package for this performance counter category. Name for the performance counter category. If this attribute is not provided the Id attribute is used as the name of the performance counter category. Optional help text for the performance counter category. Flag that specifies whether the performance counter category is multi or single instanced. Default is single instance. DLL that contains the performance counter. The default is "netfxperf.dll" which should be used for all managed code performance counters. Function entry point in to the Library DLL called when opening the performance counter. The default is "OpenPerformanceData" which should be used for all managed code performance counters. Function entry point in to the Library DLL called when closing the performance counter. The default is "ClosePerformanceData" which should be used for all managed code performance counters. Function entry point in to the Library DLL called when collecting data from the performance counter. The default is "CollectPerformanceData" which should be used for all managed code performance counters. Default language for the performance category and contained counters' names and help text. Creates a performance counter in a performance category. Name for the performance counter. Optional help text for the performance counter. Type of the performance counter. Language for the peformance counter name and help. The default is to use the parent PerformanceCategory element's DefaultLanguage attribute. Used to install Perfmon counters. Used to install Perfmon Counter Manifests. Note that this functionality cannot be used with major upgrades that are scheduled after the InstallExecute, InstallExecuteAgain, or InstallFinalize actions. For more information on major upgrade scheduling, see RemoveExistingProducts Action. The directory that holds the resource file of the providers in the perfmon counter manifest. Often the resource file path cannot be determined until setup time. Put the directory here and during perfmon manifest registrtion the path will be updated in the registry. If not specified, Perfmon will look for the resource file in the same directory of the perfmon counter manifest file. Used to install Event Manifests. The message file (including path) of all the providers in the event manifest. Often the message file path cannot be determined until setup time. Put your MessageFile here and the messageFileName attribute of the all the providers in the manifest will be updated with the path before it is registered. The parameter file (including path) of all the providers in the event manifest. Often the parameter file path cannot be determined until setup time. Put your ParameterFile here and the parameterFileName attribute of the all the providers in the manifest will be updated with the path before it is registered. The resource file (including path) of all the providers in the event manifest. Often the resource file path cannot be determined until setup time. Put your ResourceFile here and the resourceFileName attribute of the all the providers in the manifest will be updated with the path before it is registered. Sets ACLs on File, Registry, CreateFolder, or ServiceInstall. When under a Registry element, this cannot be used if the Action attribute's value is remove or removeKeyOnInstall. This element has no Id attribute. The table and key are taken from the parent element. For a directory, the right to create a file in the directory. Only valid under a 'CreateFolder' parent. For a directory, the right to create a subdirectory. Only valid under a 'CreateFolder' parent. For a directory, the right to delete a directory and all the files it contains, including read-only files. Only valid under a 'CreateFolder' parent. For a directory, the right to traverse the directory. By default, users are assigned the BYPASS_TRAVERSE_CHECKING privilege, which ignores the FILE_TRAVERSE access right. Only valid under a 'CreateFolder' parent. specifying this will fail to grant read access Required to call the QueryServiceConfig and QueryServiceConfig2 functions to query the service configuration. Only valid under a 'ServiceInstall' parent. Required to call the ChangeServiceConfig or ChangeServiceConfig2 function to change the service configuration. Only valid under a 'ServiceInstall' parent. Required to call the QueryServiceStatus function to ask the service control manager about the status of the service. Only valid under a 'ServiceInstall' parent. Required to call the EnumDependentServices function to enumerate all the services dependent on the service. Only valid under a 'ServiceInstall' parent. Required to call the StartService function to start the service. Only valid under a 'ServiceInstall' parent. Required to call the ControlService function to stop the service. Only valid under a 'ServiceInstall' parent. Required to call the ControlService function to pause or continue the service. Only valid under a 'ServiceInstall' parent. Required to call the ControlService function to ask the service to report its status immediately. Only valid under a 'ServiceInstall' parent. Required to call the ControlService function to specify a user-defined control code. Only valid under a 'ServiceInstall' parent. Describes a product search. The Guid attribute has been deprecated; use the ProductCode or UpgradeCode attribute instead. If this attribute is used, it is assumed to be a ProductCode. The ProductCode to use for the search. This attribute must be omitted if UpgradeCode is specified. The UpgradeCode to use for the search. This attribute must be omitted if ProductCode is specified. Note that if multiple products are found, the highest versioned product will be used for the result. Rather than saving the product version into the variable, a ProductSearch can save another attribute of the matching product instead. Saves the version of a matching product if found; 0.0.0.0 otherwise. This is the default. Saves the language of a matching product if found; empty otherwise. Saves the state of the product: advertised (1), absent (2), or locally installed (5). Saves the assignment type of the product: per-user (0), or per-machine (1). References a ProductSearch. The custom action that implements RemoveFolderEx does so by writing temporary rows to the RemoveFile table for each subfolder of the root folder you specify. Because it might dramatically affect Windows Installer's File Costing, the temporary rows must be written before the CostInitialize standard action. Unfortunately, MSI doesn't create properties for the Directory hierarchy in your package until later, in the CostFinalize action. An easy workaround for a typical use case of removing a folder during uninstall is to write the directory path to the registry and to load it during uninstall. See The WiX toolset's "Remember Property" pattern for an example. If you use custom actions to set properties, ensure that they are scheduled before the WixRemoveFoldersEx custom action. Remove a folder and all contained files and folders if the parent component is selected for installation or removal. The folder must be specified in the Property attribute as the name of a property that will have a value that resolves to the full path of the folder before the CostInitialize action. Note that Directory ids cannot be used. For more details, see the Remarks. Primary key used to identify this particular entry. If this is not specified, a stable identifier will be generated at compile time based on the other attributes. The id of a property that resolves to the full path of the source directory. The property does not have to exist in the installer database at creation time; it could be created at installation time by a custom action, on the command line, etc. The property value can contain environment variables surrounded by percent signs such as from a REG_EXPAND_SZ registry value; environment variables will be expanded before being evaluated for a full path. This value determines when the folder may be removed. Removes the folder only when the parent component is being installed (msiInstallStateLocal or msiInstallStateSource). Default: Removes the folder only when the parent component is being removed (msiInstallStateAbsent). Removes the folder when the parent component is being installed or removed. Registers a resource with the Restart Manager. The unique identifier for this resource. A unique identifier will be generated automatically if not specified. The full path to the process module to register with the Restart Manager. This can be a formatted value that resolves to a full path. The name of a process to register with the Restart Manager. This can be a formatted value that resolves to a process name. The name of a Windows service to register with the Restart Manager. This can be a formatted value that resolves to a service name. Describes a registry search. Registry root hive to search under. HKEY_LOCAL_MACHINE HKEY_CURRENT_USER HKEY_CLASSES_ROOT HKEY_USERS Key to search for. Optional value to search for under the given Key. What format to return the value in. Returns the unformatted value directly from the registry. For example, a REG_DWORD value of '1' is returned as '1', not '#1'. Returns the value formatted as Windows Installer would. For example, a REG_DWORD value of '1' is returned as '#1', not '1'. Whether to expand any environment variables in REG_SZ, REG_EXPAND_SZ, or REG_MULTI_SZ values. Rather than saving the matching registry value into the variable, a RegistrySearch can save an attribute of the matching entry instead. Saves true if a matching registry entry is found; false otherwise. Saves the value of the registry key in the variable. This is the default. Instructs the search to look in the 64-bit registry when the value is 'yes'. When the value is 'no', the search looks in the 32-bit registry. The default value is 'no'. References a RegistrySearch. Service configuration information for failure actions. Nesting a ServiceConfig element under a ServiceInstall element will result in the service being installed to be configured. Nesting a ServiceConfig element under a component element will result in an already installed service to be configured. If the service does not exist prior to the install of the MSI package, the install will fail. Required if not under a ServiceInstall element. Action to take on the first failure of the service. Action to take on the second failure of the service. Action to take on the third failure of the service. Number of days after which to reset the failure count to zero if there are no failures. If any of the three *ActionType attributes is "restart", this specifies the number of seconds to wait before doing so. If any of the three *ActionType attributes is "runCommand", this specifies the command to run when doing so. This value is formatted. If any of the three *ActionType attributes is "reboot", this specifies the message to broadcast to server users before doing so. User for all kinds of things. When it is not nested under a component it is included in the MSI so it can be referenced by other elements such as the User attribute in the AppPool element. When it is nested under a Component element, the User will be created on install and can also be used for reference. A Formatted string that contains the name of the user account. A Formatted string that contains the local machine or Active Directory domain for the user. Usually a Property that is passed in on the command-line to keep it more secure. The account's password never expires. Equivalent to UF_DONT_EXPIRE_PASSWD. The user cannot change the account's password. Equivalent to UF_PASSWD_CANT_CHANGE. Indicates whether the user account should be removed or left behind on uninstall. Indicates if the install should fail if the user already exists. Indicates whether or not the user can logon as a serivce. User creation can be skipped if all that is desired is to set this access right on the user. Indicates whether or not the user can logon as a batch job. User creation can be skipped if all that is desired is to set this access right on the user. Indicates if the user account properties should be updated if the user already exists. Indicates whether the user must change their password on their first login. The account is disabled. Equivalent to UF_ACCOUNTDISABLE. Indicates whether or not to create the user. User creation can be skipped if all that is desired is to join a user to groups. Indicates whether failure to create the user or add the user to a group fails the installation. The default value is "yes". Adds or removes .xml file entries. If you use the XmlFile element you must reference WixUtilExtension.dll as it contains the XmlFile custom actions. Identifier for xml file modification. The XPath of the element to be modified. Note that this is a formatted field and therefore, square brackets in the XPath must be escaped. In addition, XPaths allow backslashes to be used to escape characters, so if you intend to include literal backslashes, you must escape them as well by doubling them in this attribute. The string is formatted by MSI first, and the result is consumed as the XPath. Path of the .xml file to configure. Name of XML node to set/add to the specified element. Not setting this attribute causes the element's text value to be set. Otherwise this specified the attribute name that is set. The value to be written. See the Formatted topic for information how to escape square brackets in the value. The type of modification to be made to the XML file when the component is installed. Creates a new element under the element specified in ElementPath. The Name attribute is required in this case and specifies the name of the new element. The Value attribute is not necessary when createElement is specified as the action. If the Value attribute is set, it will cause the new element's text value to be set. Deletes a value from the element specified in the ElementPath. If Name is specified, the attribute with that name is deleted. If Name is not specified, the text value of the element specified in the ElementPath is deleted. The Value attribute is ignored if deleteValue is the action specified. Sets a value in the element specified in the ElementPath. If Name is specified, and attribute with that name is set to the value specified in Value. If Name is not specified, the text value of the element is set. Value is a required attribute if setValue is the action specified. Sets all the values in the elements that match the ElementPath. If Name is specified, attributes with that name are set to the same value specified in Value. If Name is not specified, the text values of the elements are set. Value is a required attribute if setBulkValue is the action specified. Specifies whether or not the modification should be removed on uninstall. This has no effect on uninstall if the action was deleteValue. Specifies wheter or not the modification should preserve the modified date. Preserving the modified date will allow the file to be patched if no other modifications have been made. Specifies the order in which the modification is to be attempted on the XML file. It is important to ensure that new elements are created before you attempt to add an attribute to them. Specify whether the DOM object should use XPath language or the old XSLPattern language (default) as the query language. Adds or removes .xml file entries. If you use the XmlConfig element you must reference WixUtilExtension.dll as it contains the XmlConfig custom actions. Identifier for xml file modification. The Id of another XmlConfig to add attributes to. In this case, the 'ElementPath', 'Action', 'Node', and 'On' attributes must be omitted. The XPath of the parent element being modified. Note that this is a formatted field and therefore, square brackets in the XPath must be escaped. In addition, XPaths allow backslashes to be used to escape characters, so if you intend to include literal backslashes, you must escape them as well by doubling them in this attribute. The string is formatted by MSI first, and the result is consumed as the XPath. Path of the .xml file to configure. Name of XML node to set/add to the specified element. Not setting this attribute causes the element's text value to be set. Otherwise this specified the attribute name that is set. Specifies wheter or not the modification should preserve the modified date. Preserving the modified date will allow the file to be patched if no other modifications have been made. Specifies the order in which the modification is to be attempted on the XML file. It is important to ensure that new elements are created before you attempt to add an attribute to them. The value to be written. See the Formatted topic for information how to escape square brackets in the value. The XPath to the element being modified. This is required for 'delete' actions. For 'create' actions, VerifyPath is used to decide if the element already exists. Note that this is a formatted field and therefore, square brackets in the XPath must be escaped. In addition, XPaths allow backslashes to be used to escape characters, so if you intend to include literal backslashes, you must escape them as well by doubling them in this attribute. The string is formatted by MSI first, and the result is consumed as the XPath. Id of the search for ordering and dependency. Name of the variable in which to place the result of the search. Condition for evaluating the search. If this evaluates to false, the search is not executed at all. Id of the search that this one should come after. Values of this type will either be "yes" or "no". Enumeration of valid languages for performance counters. Enumeration of valid types for performance counters.