1534 lines
99 KiB
XML
1534 lines
99 KiB
XML
<?xml-stylesheet type="text/xsl" href="xdr-schema.xsl"?>
|
|
|
|
<!--Schema for generating or adding data to Windows Installer databases
|
|
Items may be added, replaced, or removed, or may reference existing items.
|
|
|
|
Components must either be defined or else reference existing components.
|
|
New components are defined at the appropriate node in the Directory tree
|
|
and are referenced at the appropriate node in the Feature tree.
|
|
Component elements associated with advertisement must be defined under
|
|
the appropriate component in the feature tree, not the directory tree,
|
|
these component elements being: Class, Shortcut(if advertised), Category.
|
|
Unless the component has a single File or a single Registry with no File,
|
|
a KeyPath attribute must be 'yes' on a File, Registry, or CreateFolder child
|
|
element, or on the Component itself in which case its Directory is the KeyPath.
|
|
|
|
A TypeLib elements defined a child of a Class will also be registered
|
|
under the class in HKCR, else if defined as a child of a Component
|
|
only the typelib is registered on its own, but not under the class.
|
|
|
|
A ProgId elements must be defined as a child of a Class element, and the
|
|
first child ProgId of a class will be registered as the default ProgId.
|
|
A version-independent ProgId must be a child element of the versioned ProgId.
|
|
|
|
The op attribute is always optional, in which case it defaults to 'merge'
|
|
'exist' : element must already exist in the output database, else fails
|
|
'insert' : element is inserted, fails if exists
|
|
'merge' : element is inserted, fails if exists unless all attributes identical
|
|
'ensure' : element is inserted only if row with the same key(s) does not exist
|
|
'replace' : element is inserted, replacing any existing row with the same key(s)
|
|
'delete' : element with the same key(s) is deleted, no error if not present
|
|
-->
|
|
<Schema xmlns ="urn:schemas-microsoft-com:xml-data"
|
|
xmlns:dt="urn:schemas-microsoft-com:datatypes"
|
|
schemaname="Windows Installer Database">
|
|
|
|
<AttributeType name='op' dt:type='enumeration' dt:values='exist insert merge ensure replace delete' default='merge' description='Operation to act on element'/>
|
|
|
|
<ElementType name='Column' content='textOnly' model='closed'>
|
|
<!-- Element value is name for the column -->
|
|
<description> Column definition for a Custom Table </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='PrimaryKey' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='PrimaryKey'/>
|
|
<AttributeType name='Type' dt:type='enumeration' dt:values='binary int string' required='yes'/>
|
|
<attribute type ='Type'/>
|
|
<AttributeType name='Width' dt:type='int'/>
|
|
<attribute type ='Width'/>
|
|
<AttributeType name='Nullable' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Nullable'/>
|
|
<AttributeType name='Localizable' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Localizable'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Data' content='textOnly' model='closed'>
|
|
<!-- Element value is data the data value -->
|
|
<description> Data item for a row of a Custom Table </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Column' dt:type='string' required='yes'/>
|
|
<attribute type ='Column'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Row' content='eltOnly' model='closed'>
|
|
<description> Row data for a Custom Table </description>
|
|
<attribute type='op'/>
|
|
<element type ='Data' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='CustomTable' content='mixed' model='closed'>
|
|
<!-- Element value is name for the custom table -->
|
|
<description> Provides definition of Custom Table </description>
|
|
<attribute type='op'/>
|
|
<element type ='Column' minOccurs='1' maxOccurs='*'/>
|
|
<element type ='Row' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='IniFile' content='textOnly' model='closed'>
|
|
<!-- Element value is IniFile identifier -->
|
|
<description> Adds or removes .ini file entries</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='Directory' dt:type='string' required='no'/>
|
|
<attribute type ='Directory'/>
|
|
<AttributeType name='Section' dt:type='string'/>
|
|
<attribute type ='Section'/>
|
|
<AttributeType name='Key' dt:type='string'/>
|
|
<attribute type ='Key'/>
|
|
<AttributeType name='Value' dt:type='string' required='no'/>
|
|
<attribute type ='Value'/>
|
|
<AttributeType name='Action' dt:type='enumeration' dt:values='addLine createLine addTag removeLine removeTag'/>
|
|
<attribute type ='Action'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ODBCDataSource' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier to the ODBCDataSource -->
|
|
<description> ODBCDataSource for a Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='DriverName' dt:type='string'/>
|
|
<attribute type ='DriverName'/> <!-- required if not found as child of ODBCDriver element -->
|
|
<AttributeType name='Registration' dt:type='enumeration' dt:values='machine user' required='yes'/>
|
|
<attribute type ='Registration'/>
|
|
<AttributeType name='KeyPath' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='KeyPath'/> <!-- set yes to force this file to be key path for parent Component -->
|
|
<element type='Property' minOccurs='0' maxOccurs='*'/> <!-- ODBCSourceAttributes -->
|
|
</ElementType>
|
|
|
|
<ElementType name='ODBCDriver' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier to the ODBCDriver -->
|
|
<description> ODBCDriver for a Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='File' dt:type='string'/>
|
|
<attribute type ='File'/> <!-- required if not found as child of File element -->
|
|
<AttributeType name='SetupFile' dt:type='string'/>
|
|
<attribute type ='SetupFile'/> <!-- required if not found as child of File element or different from File attribute above-->
|
|
<element type='ODBCDataSource' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Property' minOccurs='0' maxOccurs='*'/> <!-- ODBCAttributes -->
|
|
</ElementType>
|
|
|
|
<ElementType name='ODBCTranslator' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier to the ODBCTranslator -->
|
|
<description> ODBCTranslator for a Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='File' dt:type='string'/>
|
|
<attribute type ='File'/> <!-- required if not found as child of File element -->
|
|
<AttributeType name='SetupFile' dt:type='string'/>
|
|
<attribute type ='SetupFile'/> <!-- required if not found as child of File element -->
|
|
</ElementType>
|
|
|
|
<ElementType name='FileSearch' content='textOnly' model='closed'>
|
|
<!-- Element value is an internal identifier to the Signature or it may be empty and will use parent's value instead -->
|
|
<description> Searches for file and assigns to fullpath value of parent Property</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='MinSize' dt:type='i4'/>
|
|
<attribute type ='MinSize'/>
|
|
<AttributeType name='MaxSize' dt:type='i4'/>
|
|
<attribute type ='MaxSize'/>
|
|
<AttributeType name='MinVersion' dt:type='string'/>
|
|
<attribute type ='MinVersion'/>
|
|
<AttributeType name='MaxVersion' dt:type='string'/>
|
|
<attribute type ='MaxVersion'/>
|
|
<AttributeType name='MinDate' dt:type='dateTime'/>
|
|
<attribute type ='MinDate'/>
|
|
<AttributeType name='MaxDate' dt:type='dateTime'/>
|
|
<attribute type ='MaxDate'/>
|
|
<AttributeType name='Languages' dt:type='string'/>
|
|
<attribute type ='Languages'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='DirectorySearch' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier to the DrLocator -->
|
|
<description> Searches for directory and assigns to value of parent Property</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Path' dt:type='string'/>
|
|
<attribute type ='Path'/>
|
|
<AttributeType name='Depth' dt:type='int'/>
|
|
<attribute type ='Depth'/>
|
|
<element type='DirectorySearch'/>
|
|
<element type='FileSearch'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ComponentSearch' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier to the CompLocator -->
|
|
<description> Searches for file or directory and assigns to value of parent Property</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Id' dt:type='uuid'/>
|
|
<attribute type ='Id'/>
|
|
<AttributeType name='Type' dt:type='enumeration' dt:values='directory file' default='file'/>
|
|
<attribute type ='Type'/> <!-- must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element -->
|
|
<element type='DirectorySearch'/>
|
|
<element type='FileSearch'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='IniFileSearch' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier to the IniLocator -->
|
|
<description> Searches for file, directory or registry key and assigns to value of parent Property</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='File' dt:type='string' required='yes'/>
|
|
<attribute type ='File'/>
|
|
<AttributeType name='Section' dt:type='string' required='yes'/>
|
|
<attribute type ='Section'/>
|
|
<AttributeType name='Key' dt:type='string' required='yes'/>
|
|
<attribute type ='Key'/>
|
|
<AttributeType name='Field' dt:type='int'/>
|
|
<attribute type ='Field'/>
|
|
<AttributeType name='Type' dt:type='enumeration' dt:values='directory file registry' default='file'/>
|
|
<attribute type ='Type'/> <!-- must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element -->
|
|
<element type='DirectorySearch'/>
|
|
<element type='FileSearch'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='RegistrySearch' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier to the RegLocator -->
|
|
<description> Searches for file, directory or registry key and assigns to value of parent Property</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Root' dt:type='enumeration' dt:values='HKCR HKCU HKLM HKU' required='yes'/>
|
|
<attribute type ='Root'/>
|
|
<AttributeType name='Key' dt:type='string' required='yes'/>
|
|
<attribute type ='Key'/>
|
|
<AttributeType name='Name' dt:type='string'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='Type' dt:type='enumeration' dt:values='directory file registry' default='file'/>
|
|
<attribute type ='Type'/> <!-- must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element -->
|
|
<element type='DirectorySearch'/>
|
|
<element type='FileSearch'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Property' content='mixed' model='closed'>
|
|
<!-- Element value is Property name -->
|
|
<description> Property value for product</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Value' dt:type='string'/>
|
|
<attribute type='Value'/> <!-- not valid when Property is used for search -->
|
|
<!-- if Property is determined by an AppSearch -->
|
|
<element type ='ComponentSearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type ='FileSearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type ='DirectorySearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type ='IniFileSearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type ='RegistrySearch' minOccurs='0' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Shortcut' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier for the shortcut -->
|
|
<description> Shortcut, default target is parent File, CreateFolder, or Component's Directory </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Directory' dt:type='string' required='yes'/>
|
|
<attribute type ='Directory'/><!-- Directory Id where shortcut is to be created -->
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/><!-- must be 8.3 format -->
|
|
<AttributeType name='LongName' dt:type='string'/>
|
|
<attribute type ='LongName'/><!-- required if preferred name not 8.3 format -->
|
|
<AttributeType name='Target' dt:type='string'/>
|
|
<attribute type ='Target'/><!-- default value taken from parent -->
|
|
<AttributeType name='Description' dt:type='string'/>
|
|
<attribute type ='Description'/>
|
|
<AttributeType name='Arguments' dt:type='string'/>
|
|
<attribute type ='Arguments'/>
|
|
<AttributeType name='Hotkey' dt:type='int'/>
|
|
<attribute type ='Hotkey'/>
|
|
<AttributeType name='Icon' dt:type='string'/>
|
|
<attribute type ='Icon'/><!-- reference to Icon element -->
|
|
<AttributeType name='IconIndex' dt:type='int'/>
|
|
<attribute type ='IconIndex'/>
|
|
<AttributeType name='Show' dt:type='enumeration' dt:values='normal minimized maximized'/>
|
|
<attribute type ='Show'/>
|
|
<AttributeType name='WorkingDirectory' dt:type='string'/>
|
|
<attribute type ='WorkingDirectory'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Permission' content='empty' model='closed'>
|
|
<!-- No element value, table and key taken from parent element -->
|
|
<description> Sets ACLs on File, Registry, or CreateFolder </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Domain' dt:type='string'/>
|
|
<attribute type ='Domain'/>
|
|
<AttributeType name='User' dt:type='string' required='yes'/>
|
|
<attribute type ='User'/>
|
|
<!-- Common ACLs -->
|
|
<AttributeType name='Read' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Read'/>
|
|
<AttributeType name='Delete' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Delete'/>
|
|
<AttributeType name='ReadPermission' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='ReadPermission'/>
|
|
<AttributeType name='ChangePermission' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='ChangePermission'/>
|
|
<AttributeType name='TakeOwnership' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='TakeOwnership'/>
|
|
<!-- Folder and File ACLs -->
|
|
<AttributeType name='ReadAttributes' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='ReadAttributes'/>
|
|
<AttributeType name='WriteAttributes' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='WriteAttributes'/>
|
|
<AttributeType name='ReadExtendedAttributes' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='ReadExtendedAttributes'/>
|
|
<AttributeType name='WritExtendedeAttributes' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='WritExtendedeAttributes'/>
|
|
<AttributeType name='Synchronize' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Synchronize'/>
|
|
<!-- Folder only ACLs -->
|
|
<AttributeType name='CreateChild' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='CreateChild'/>
|
|
<AttributeType name='DeleteChild' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='DeleteChild'/>
|
|
<AttributeType name='Traverse' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Traverse'/>
|
|
<!-- File only ACLs -->
|
|
<AttributeType name='Append' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Append'/>
|
|
<AttributeType name='Execute' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Execute'/>
|
|
<!-- File and Registry ACLs -->
|
|
<AttributeType name='Write' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Write'/>
|
|
<!-- Registry only ACLs -->
|
|
<AttributeType name='CreateSubkeys' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='CreateSubkeys'/>
|
|
<AttributeType name='EnumerateSubkeys' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='EnumerateSubkeys'/>
|
|
<AttributeType name='Notify' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Notify'/>
|
|
<AttributeType name='CreateLink' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='CreateLink'/>
|
|
<!-- Generic ACLs, mapped by system to appropriate permissions -->
|
|
<AttributeType name='GenericAll' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='GenericAll'/>
|
|
<AttributeType name='GenericExecute' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='GenericExecute'/>
|
|
<AttributeType name='GenericWrite' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='GenericWrite'/>
|
|
<AttributeType name='GenericRead' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='GenericRead'/> <!-- specifying this will fail to grant read access -->
|
|
</ElementType>
|
|
|
|
<ElementType name='CopyFile' content='textOnly' model='closed'>
|
|
<!-- Element value is an internal identifier for the MoveFile or DuplicateFile table -->
|
|
<description> Causes a file to be duplicated, copied or moved to a new location </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='SourceFolder' dt:type='string'/>
|
|
<attribute type ='SourceFolder'/> <!-- not allowed when found under a File element -->
|
|
<AttributeType name='SourceName' dt:type='string'/>
|
|
<attribute type ='SourceName'/> <!-- not allowed when found under a File element -->
|
|
<AttributeType name='DestinationFolder' dt:type='string' required='yes'/>
|
|
<attribute type ='DestinationFolder'/>
|
|
<AttributeType name='DestinationName' dt:type='string' required='no'/>
|
|
<attribute type ='DestinationName'/>
|
|
<AttributeType name='Delete' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Delete'/> <!-- not allowed when found under a File element -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Patch' content='empty' model='closed'>
|
|
<description> Patch information for parent File element </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Sequence' default='1'/>
|
|
<attribute type ='Sequence'/><!-- may be defaulted if not in cabinet if build tools supply sequence -->
|
|
<AttributeType name='PatchSize' default='1'/>
|
|
<attribute type ='PatchSize'/><!-- may be defaulted if build tools supply actual size -->
|
|
<AttributeType name='Header' dt:type='string' required='yes'/>
|
|
<attribute type ='Header'/><!-- stream in Binary table -->
|
|
<!-- 'Attributes' column integer value generated from XML attributes below -->
|
|
<AttributeType name='Vital' dt:type='enumeration' dt:values='no yes' default='yes'/>
|
|
<attribute type ='Vital'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='File' content='mixed' model='closed'>
|
|
<!-- Element value is File key, 'Component_' value defined by parent node -->
|
|
<description> File specification for File table, must be child node of Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/><!-- must be 8.3 format -->
|
|
<AttributeType name='LongName' dt:type='string'/>
|
|
<attribute type ='LongName'/><!-- required if preferred name not 8.3 format -->
|
|
<AttributeType name='FileSize' default='1'/>
|
|
<attribute type ='FileSize'/><!-- may be defaulted if build tools supply actual size -->
|
|
<AttributeType name='Version' dt:type='string'/>
|
|
<attribute type ='Version' /><!-- may be defaulted if build tools supply actual version -->
|
|
<AttributeType name='Language' dt:type='string'/>
|
|
<attribute type ='Language'/><!-- may be defaulted if build tools supply actual language -->
|
|
<AttributeType name='Sequence' default='1'/>
|
|
<attribute type ='Sequence'/><!-- may be defaulted if CD or if build tools supply sequence -->
|
|
<AttributeType name='KeyPath' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='KeyPath' /><!-- set yes to force this file to be key path for parent component -->
|
|
<!-- 'Attributes' column integer value generated from XML attributes below -->
|
|
<AttributeType name='ReadOnly' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='ReadOnly'/>
|
|
<AttributeType name='Hidden' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Hidden'/>
|
|
<AttributeType name='System' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='System'/>
|
|
<AttributeType name='Vital' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Vital'/>
|
|
<AttributeType name='Checksum' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Checksum'/>
|
|
<AttributeType name='PatchAdded' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='PatchAdded'/>
|
|
<AttributeType name='Compressed' dt:type='enumeration' dt:values='default no yes' default='default'/>
|
|
<attribute type ='Compressed'/>
|
|
<AttributeType name='BindPath' dt:type='string'/>
|
|
<attribute type ='BindPath'/><!-- generates BindImage table row, value my be empty string -->
|
|
<AttributeType name='SelfRegCost' dt:type='int'/>
|
|
<attribute type ='SelfRegCost'/><!-- generates SelfReg table row -->
|
|
<AttributeType name='TrueType' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='TrueType'/> <!-- generates entries in Font table with no FontTitle -->
|
|
<AttributeType name='FontTitle' dt:type='string'/>
|
|
<attribute type ='FontTitle'/> <!-- generates entries in Font table with the FontTitle -->
|
|
<!-- used only for build time, should probably move into a different schema -->
|
|
<AttributeType name='DiskId' dt:type='string'/>
|
|
<attribute type ='DiskId'/> <!-- specify media 'diskid' should match to -->
|
|
<AttributeType name='src' dt:type='string'/>
|
|
<attribute type ='src'/> <!-- specify path to file for build process -->
|
|
<!-- child elements specifying additional processing for this file -->
|
|
<element type='Permission' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Shortcut' minOccurs='0' maxOccurs='*'/><!-- Non-advertised shortcut, Target is preset to this file -->
|
|
<element type='CopyFile' minOccurs='0' maxOccurs='1'/><!-- to DuplicateFile table -->
|
|
<element type='ODBCDriver' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ODBCTranslator' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Patch' minOccurs='0' maxOccurs='*'/><!-- to Patch table -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Registry' content='mixed' model='closed'>
|
|
<!-- Element value is Registry key, must be child node of Component -->
|
|
<description> Registry value for parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Root' dt:type='enumeration' dt:values='HKMU HKCR HKCU HKLM HKU' required='yes'/>
|
|
<attribute type ='Root'/>
|
|
<AttributeType name='Key' dt:type='string' required='yes'/>
|
|
<attribute type ='Key'/>
|
|
<AttributeType name='Name' dt:type='string'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='Value' dt:type='string'/>
|
|
<attribute type ='Value'/>
|
|
<AttributeType name='KeyPath' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='KeyPath'/>
|
|
<AttributeType name='Action' dt:type='enumeration' dt:values='write remove removeKey' default='write'/>
|
|
<attribute type ='Action'/>
|
|
<!-- ACL permission -->
|
|
<element type ='Permission' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='RemoveFile' content='textOnly' model='closed'>
|
|
<!-- Element value is unique key of RemoveFile table -->
|
|
<description> Files to remove from specied folder if parent Component is installed </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Directory' dt:type='string' required='no'/>
|
|
<attribute type='Directory'/><!-- defaults to Directory of parent Component -->
|
|
<AttributeType name='Name' dt:type='string' required='no'/>
|
|
<attribute type='Name'/><!-- removes folder if not specified -->
|
|
<AttributeType name='On' dt:type='enumeration' dt:values='install uninstall both'/>
|
|
<attribute type='On'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='CreateFolder' content='eltOnly' model='closed'>
|
|
<description> Create folder as part of parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Directory' dt:type='string' required='no'/>
|
|
<attribute type ='Directory'/><!-- defaults to Directory parent of parent Component -->
|
|
<!-- Non-advertised shortcut to this folder, Shortcut Target is preset to the folder -->
|
|
<element type ='Shortcut' minOccurs='0' maxOccurs='*'/>
|
|
<!-- ACL permission -->
|
|
<element type ='Permission' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='AppData' content='textOnly' model='closed' />
|
|
|
|
<ElementType name='Category' content='mixed' model='closed'>
|
|
<!-- Element value is category Id GUID, must be child node of Component -->
|
|
<description> Qualified published component for parent Feature Component </description>
|
|
|
|
<attribute type='op'/>
|
|
<AttributeType name='Qualifier' dt:type='string' required='yes'/>
|
|
<attribute type ='Qualifier'/>
|
|
<AttributeType name='AppData' dt:type='string'/>
|
|
<attribute type ='AppData'/>
|
|
<!-- optional way for defining AppData, generally used for complex CDATA -->
|
|
<element type ='AppData' minOccurs='0' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='MIME' content='textOnly' model='closed'>
|
|
<!-- Element value is content-type -->
|
|
<description> MIME content-type for an Extension </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Class' dt:type='uuid'/>
|
|
<attribute type ='Class'/>
|
|
<AttributeType name='Default' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Default'/><!-- if 'yes' become the content type for parent Extension -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Verb' content='textOnly' model='closed'>
|
|
<!-- Element value is Verb string -->
|
|
<description> Verb definition for an Extension </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Command' dt:type='string'/>
|
|
<attribute type ='Command'/>
|
|
<AttributeType name='Argument' dt:type='string'/>
|
|
<attribute type ='Argument'/>
|
|
<AttributeType name='Default' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Default'/>
|
|
<!-- used only for non-advertised Verbs -->
|
|
<AttributeType name='Target' dt:type='string'/>
|
|
<attribute type ='Target'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Extension' content='mixed' model='closed'>
|
|
<!-- Element value is extension name, ProgId taken possible parent ProgId element -->
|
|
<description> Extension for Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='ContentType' dt:type='string'/>
|
|
<attribute type ='ContentType'/>
|
|
<!-- if MIME and Verbs are associated with Extensions -->
|
|
<element type ='MIME' minOccurs='0' maxOccurs='*'/>
|
|
<element type ='Verb' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='TypeLib' dt:type='uuid' content='textOnly' model='closed'>
|
|
<!-- Element value is LibId GUID -->
|
|
<description> TypeLib registration for parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Language' dt:type='int' required='yes'/>
|
|
<attribute type ='Language'/>
|
|
<AttributeType name='MajorVersion' dt:type='string'/>
|
|
<attribute type ='MajorVersion'/>
|
|
<AttributeType name='MinorVersion' dt:type='string'/>
|
|
<attribute type ='MinorVersion'/>
|
|
<AttributeType name='Description' dt:type='string'/>
|
|
<attribute type ='Description'/>
|
|
<AttributeType name='HelpDirectory' dt:type='string'/>
|
|
<attribute type ='HelpDirectory'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ProgId' content='mixed' model='closed'>
|
|
<!-- Element value is ProgId string -->
|
|
<!-- If ProgId has an associated Class, it must be a child of that element -->
|
|
<description> ProgId registration for parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Description' dt:type='string'/>
|
|
<attribute type ='Description'/>
|
|
<AttributeType name='Icon' dt:type='string'/>
|
|
<attribute type ='Icon'/><!-- reference to Icon element -->
|
|
<AttributeType name='IconIndex' dt:type='int'/>
|
|
<attribute type ='IconIndex'/>
|
|
<!-- extensions that refer to this ProgId -->
|
|
<element type='Extension' minOccurs='0' maxOccurs='*'/>
|
|
<!-- Version-independent ProgId must be child element of actual ProgId -->
|
|
<element type='ProgId' minOccurs = '0' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='AppId' dt:type='uuid' content='textOnly' model='closed'>
|
|
<!-- Element value is AppId string -->
|
|
<description> AppId registration, referenced by Class AppId attributes</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='RemoteServerName' dt:type='string'/>
|
|
<attribute type ='RemoteServerName'/>
|
|
<AttributeType name='LocalService' dt:type='string'/>
|
|
<attribute type ='LocalService'/>
|
|
<AttributeType name='ServiceParameters' dt:type='string'/>
|
|
<attribute type ='ServiceParameters'/>
|
|
<AttributeType name='DllSurrogate' dt:type='string'/>
|
|
<attribute type ='DllSurrogate'/>
|
|
<AttributeType name='ActivateAtStorage' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='ActivateAtStorage'/>
|
|
<AttributeType name='RunAsInteractiveUser' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='RunAsInteractiveUser'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Class' content='mixed' model='closed'><!-- type='uuid', but this prohibits child elements -->
|
|
<!-- Element value is ClassId GUID -->
|
|
<description> COM Class registration for parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Context' dt:type='enumeration' dt:values='LocalServer LocalServer32 InprocServer InprocServer32' default='InprocServer32'/>
|
|
<attribute type ='Context'/>
|
|
<AttributeType name='Description' dt:type='string'/>
|
|
<attribute type ='Description'/>
|
|
<AttributeType name='AppId' dt:type='uuid'/>
|
|
<attribute type ='AppId'/>
|
|
<AttributeType name='FileTypeMask' dt:type='string'/>
|
|
<attribute type ='FileTypeMask'/>
|
|
<AttributeType name='Icon' dt:type='string'/>
|
|
<attribute type ='Icon'/><!-- reference to Icon element -->
|
|
<AttributeType name='IconIndex' dt:type='int'/>
|
|
<attribute type ='IconIndex'/>
|
|
<AttributeType name='Handler' dt:type='string'/>
|
|
<attribute type ='Handler'/>
|
|
<AttributeType name='Argument' dt:type='string'/>
|
|
<attribute type ='Argument'/>
|
|
<AttributeType name='RelativePath' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='RelativePath'/>
|
|
<!-- Following attributes are not advertised, but add the appropriate rows to the Registry table -->
|
|
<AttributeType name='ThreadingModel' dt:type='enumeration' dt:values='apartment free both single rental'/>
|
|
<attribute type ='ThreadingModel'/>
|
|
<AttributeType name='Version' dt:type='string'/>
|
|
<attribute type ='Version'/>
|
|
<AttributeType name='Insertable' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Insertable'/>
|
|
<AttributeType name='Programmable' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Programmable'/>
|
|
<AttributeType name='Server' dt:type='string' /> <!-- only valid when not advertised -->
|
|
<attribute type ='Server'/>
|
|
<!-- A ProgId associated with Class must be a child element of the Class element -->
|
|
<element type='ProgId' minOccurs = '0' maxOccurs='*'/>
|
|
<!-- TypeLib registered under class will be registered with the Class as well -->
|
|
<element type='TypeLib' minOccurs = '0' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ServiceDependency' content='textOnly' model='closed'>
|
|
<!-- Element value is value to be added to ServiceInstall dependency -->
|
|
<description> Service or group of services that are dependencies for services in ServiceInstall </description>
|
|
<AttributeType name='Group' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Group'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ServiceInstall' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier for the ServiceInstall table -->
|
|
<description> Starts, stops, and removes services for parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='DisplayName' dt:type='string'/>
|
|
<attribute type ='DisplayName'/>
|
|
<AttributeType name='Type' dt:type='enumeration' dt:values='ownProcess shareProcess kernelDriver systemDriver' required='yes'/>
|
|
<attribute type ='Type'/> <!-- Windows installer (v1.2) does not currently support kernelDriver or systemDriver -->
|
|
<AttributeType name='Interactive' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Interactive'/>
|
|
<AttributeType name='Start' dt:type='enumeration' dt:values='auto demand disabled boot system' required='yes'/>
|
|
<attribute type ='Start'/> <!-- Windows installer (v1.2) does not currently support boot or system -->
|
|
<AttributeType name='ErrorControl' dt:type='enumeration' dt:values='ignore normal critical' required='yes'/>
|
|
<attribute type ='ErrorControl'/>
|
|
<AttributeType name='Vital' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Vital'/>
|
|
<AttributeType name='LocalGroup' dt:type='string'/>
|
|
<attribute type ='LocalGroup'/>
|
|
<AttributeType name='Account' dt:type='string'/>
|
|
<attribute type ='Account'/> <!-- valid only when ServiceType is ownProcess -->
|
|
<AttributeType name='Password' dt:type='string'/>
|
|
<attribute type ='Password'/> <!-- valid only when Account has password -->
|
|
<AttributeType name='Arguments' dt:type='string'/>
|
|
<attribute type ='Arguments'/>
|
|
<!-- not available for Windows Install v1.0 -->
|
|
<AttributeType name='Description' dt:type='string'/>
|
|
<attribute type ='Description'/>
|
|
<AttributeType name='EraseDescription' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='EraseDescription'/> <!-- yes will cause Description attribute to be ignored-->
|
|
<!-- ordered list of dependencies when installing services -->
|
|
<element type='ServiceDependency' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ServiceArgument' content='textOnly' model='closed'>
|
|
<!-- Element value is value to be added to ServiceControl -->
|
|
<description> Argument used in ServiceControl parent </description>
|
|
</ElementType>
|
|
|
|
<ElementType name='ServiceControl' content='mixed' model='closed'>
|
|
<!-- Element value is an internal identifier for the ServiceControl table -->
|
|
<description> Starts, stops, and removes services for parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='Start' dt:type='enumeration' dt:values='install uninstall both'/>
|
|
<attribute type ='Start'/>
|
|
<AttributeType name='Stop' dt:type='enumeration' dt:values='install uninstall both'/>
|
|
<attribute type ='Stop'/>
|
|
<AttributeType name='Remove' dt:type='enumeration' dt:values='install uninstall both'/>
|
|
<attribute type ='Remove'/>
|
|
<AttributeType name='Wait' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Wait'/>
|
|
<!-- ordered list of arguments when modifying services -->
|
|
<element type='ServiceArgument' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Environment' content='textOnly' model='closed'>
|
|
<!-- Element value is an internal identifier for the Environment table -->
|
|
<description> Environment variables added or removed for parent Component </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='Value' dt:type='string'/>
|
|
<attribute type ='Value'/>
|
|
<AttributeType name='Action' dt:type='enumeration' dt:values='create set remove' required='yes'/>
|
|
<attribute type ='Action'/>
|
|
<AttributeType name='Part' dt:type='enumeration' dt:values='all first last' default='all'/>
|
|
<attribute type ='Part'/>
|
|
<AttributeType name='Permanent' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Permanent'/>
|
|
<AttributeType name='System' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='System'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Condition' content='textOnly' model='closed'>
|
|
<!-- Element value is Condition expression, may need to use CDATA or else escape delimiters -->
|
|
<attribute type='op'/>
|
|
<AttributeType name='Level' dt:type='string'/>
|
|
<attribute type ='Level'/> <!-- used only for Features -->
|
|
<AttributeType name='Action' dt:type='enumeration' dt:values='default enable disable hide show'/>
|
|
<attribute type='Action'/> <!-- used only for Controls and required -->
|
|
<AttributeType name='Message' dt:type='string'/>
|
|
<attribute type='Message'/> <!-- used only at top level, for LaunchCondition table -->
|
|
</ElementType>
|
|
|
|
<ElementType name='IsolateComponent' content='textOnly' model='closed'>
|
|
<!-- Element value is Component to be isolated and bound to EXE of parent Component -->
|
|
<description> Shared Component to be privately replicated in folder of parent Component </description>
|
|
<attribute type='op'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ReserveCost' content='textOnly' model='closed'>
|
|
<!-- Element value is unique key of ReserveCost table -->
|
|
<description> Disk cost to reserve in a folder for running locally and/or from source </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Directory' dt:type='string' required='no'/>
|
|
<attribute type='Directory'/><!-- defaults to Directory of parent Component -->
|
|
<AttributeType name='RunLocal' dt:type='int' required='no'/>
|
|
<attribute type='RunLocal'/>
|
|
<AttributeType name='RunFromSource' dt:type='int' required='no'/>
|
|
<attribute type='RunFromSource'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Component' content='mixed' model='closed' order='many'>
|
|
<elementvalue> Component table primary key </elementvalue>
|
|
<description> Component for parent Directory </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Id' dt:type='uuid'/>
|
|
<attribute type ='Id'/>
|
|
<!-- 'Attributes' column integer value generated from XML attributes below -->
|
|
<AttributeType name='Location' dt:type='enumeration' dt:values='local source either' default='local'/>
|
|
<attribute type ='Location'/> <!-- ignored when Component is child of Feature -->
|
|
<AttributeType name='SharedDllRefCount' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='SharedDllRefCount'/>
|
|
<AttributeType name='Permanent' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Permanent'/>
|
|
<AttributeType name='Transitive' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Transitive'/>
|
|
<AttributeType name='NeverOverwrite' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='NeverOverwrite'/>
|
|
<AttributeType name='KeyPath' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='KeyPath'/> <!-- use parent Directory as KeyPath -->
|
|
<AttributeType name='ComPlusFlags' dt:type='int'/>
|
|
<attribute type ='ComPlusFlags'/>
|
|
<!-- Condition attribute as element to allow delimiters and for consistency -->
|
|
<element type='Condition' minOccurs='0' maxOccurs='1'/>
|
|
<!-- Non-advertised component resources, appear in Directory tree -->
|
|
<element type='File' minOccurs='0' maxOccurs='*'/>
|
|
<element type='RemoveFile' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Registry' minOccurs='0' maxOccurs='*'/>
|
|
<element type='TypeLib' minOccurs='0' maxOccurs='1'/>
|
|
<element type='CreateFolder' minOccurs='0' maxOccurs='*'/>
|
|
<element type='IniFile' minOccurs='0' maxOccurs='*'/>
|
|
<element type='CopyFile' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Environment' minOccurs='0' maxOccurs='*'/>
|
|
<element type='IsolateComponent' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ServiceControl' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ServiceInstall' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ODBCDriver' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ODBCTranslator' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ODBCDataSource' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ReserveCost' minOccurs='0' maxOccurs='*'/>
|
|
<!-- Advertised component resources, appear in Feature tree -->
|
|
<element type='Category' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Extension' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ProgId' minOccurs='0' maxOccurs='*'/>
|
|
<!-- Advertised if component withing Feature tree, non-advertised if in Directory tree -->
|
|
<element type='Class' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Shortcut' minOccurs='0' maxOccurs='*'/><!-- Target preset to component's parent -->
|
|
<!-- used only for build time, should probably move into a different schema -->
|
|
<AttributeType name='DiskId' dt:type='string'/>
|
|
<attribute type ='DiskId'/> <!-- specify media 'diskid' should match to -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Module' content='mixed' model='closed' order='many'>
|
|
<!-- Element value is used to link Module definitions together -->
|
|
<description> Module to be redirected to parent directory </description>
|
|
<attribute type='op'/>
|
|
<!-- valid only under a Directory element -->
|
|
<AttributeType name='Language' dt:type='int'/>
|
|
<attribute type='Language'/>
|
|
<AttributeType name='src' dt:type='string'/>
|
|
<attribute type='src'/>
|
|
<!-- valid only under a Feature element -->
|
|
<AttributeType name='Primary' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type='Primary'/>
|
|
<!-- used only for build time, should probably move into a different schema -->
|
|
<AttributeType name='DiskId' dt:type='string'/>
|
|
<attribute type ='DiskId'/> <!-- specify media 'diskid' should match to -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Directory' content='mixed' model='closed'>
|
|
<!-- Element value is Directory key, must be child node of Directory -->
|
|
<description> Folder for Directory table, must be child node of Directory or Product </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string'/>
|
|
<attribute type ='Name'/> <!-- may be empty string if same folder as parent, or if op='exist' -->
|
|
<AttributeType name='LongName' dt:type='string'/>
|
|
<attribute type ='LongName'/> <!-- used if non 8.3 name preferred on systems supporting long names -->
|
|
<AttributeType name='SourceName' dt:type='string'/>
|
|
<attribute type ='SourceName'/> <!-- used only if directory on source is named differently -->
|
|
<AttributeType name='LongSource' dt:type='string'/>
|
|
<attribute type ='LongSource'/> <!-- used only if non 8.3 name needed on source -->
|
|
<element type='Directory' minOccurs = '0' maxOccurs='*'/>
|
|
<element type='Component' minOccurs = '0' maxOccurs='*'/>
|
|
<element type='Module' minOccurs = '0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='UpgradeVersion' content='textOnly' model='closed'>
|
|
<attribute type='op'/><!-- default inherited from parent Upgrade element -->
|
|
<AttributeType name='Minimum' dt:type='string' required='no'/>
|
|
<attribute type='Minimum'/>
|
|
<AttributeType name='Maximum' dt:type='string' required='no'/>
|
|
<attribute type='Maximum'/>
|
|
<AttributeType name='Language' dt:type='string' required='no'/>
|
|
<attribute type='Language'/>
|
|
<AttributeType name='RemoveFeatures' dt:type='string' required='no'/>
|
|
<attribute type='RemoveFeatures'/>
|
|
<AttributeType name='Property' dt:type='string' required='no'/>
|
|
<attribute type='Property'/>
|
|
<AttributeType name='MigrateFeatures' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='MigrateFeatures'/>
|
|
<AttributeType name='OnlyDetect' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='OnlyDetect'/>
|
|
<AttributeType name='IgnoreRemoveFailure' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='IgnoreRemoveFailure'/>
|
|
<AttributeType name='IncludeMinimum' dt:type='enumeration' dt:values='no yes' default='yes'/>
|
|
<attribute type ='IncludeMinimum'/>
|
|
<AttributeType name='IncludeMaximum' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='IncludeMaximum'/>
|
|
<AttributeType name='ExcludeLanguages' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='ExcludeLanguages'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Upgrade' content='mixed' model='closed'>
|
|
<!-- Element value is the UpgradeCode to be detected -->
|
|
<description> Upgrade info for a particular UpgradeCode </description>
|
|
<attribute type='op'/><!-- used only to supply default op for child elements -->
|
|
<element type='UpgradeVersion' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Feature' content='mixed' model='closed'>
|
|
<!-- Element value is Feature key, must be child node of Feature -->
|
|
<description> Feature for Feature table, must be child node of Feature or Product </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Title' dt:type='string'/>
|
|
<attribute type ='Title'/>
|
|
<AttributeType name='Description' dt:type='string'/>
|
|
<attribute type ='Description'/>
|
|
<AttributeType name='Display' dt:type='enumeration' dt:values='hidden expand collapse' default='collapse'/>
|
|
<attribute type ='Display'/>
|
|
<AttributeType name='Level' dt:type='int'/>
|
|
<attribute type ='Level'/><!-- required for new or replaced feature -->
|
|
<AttributeType name='ConfigurableDirectory' dt:type='string'/>
|
|
<attribute type ='ConfigurableDirectory'/>
|
|
<!-- 'Attributes' column integer value generated from XML attributes below -->
|
|
<AttributeType name='InstallDefault' dt:type='enumeration' dt:values='local source' default='local'/>
|
|
<attribute type ='InstallDefault'/>
|
|
<AttributeType name='TypicalDefault' dt:type='enumeration' dt:values='install advertise' default='install'/>
|
|
<attribute type ='TypicalDefault'/>
|
|
<AttributeType name='FollowParent' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='FollowParent'/>
|
|
<AttributeType name='Absent' dt:type='enumeration' dt:values='allow disallow' default='allow'/>
|
|
<attribute type ='Absent'/>
|
|
<AttributeType name='AllowAdvertise' dt:type='enumeration' dt:values='no system yes' default='yes'/>
|
|
<attribute type ='AllowAdvertise'/>
|
|
<!-- Feature table hierarchy expressed by nesting Feature elements -->
|
|
<element type='Condition' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Feature' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Component' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Module' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='PatchPackage' dt:type='uuid' content='textOnly' model='closed'>
|
|
<!-- Element value is PatchId GUID -->
|
|
<description> PatchPackage found on parent Media element </description>
|
|
<attribute type='op'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Media' content='eltOnly' model='closed'>
|
|
<description> Media specification </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='DiskId' dt:type='int'/>
|
|
<attribute type='DiskId'/>
|
|
<AttributeType name='LastSequence' dt:type='int'/>
|
|
<attribute type='LastSequence'/>
|
|
<AttributeType name='DiskPrompt' dt:type='string'/>
|
|
<attribute type='DiskPrompt'/>
|
|
<AttributeType name='Cabinet' dt:type='string'/>
|
|
<attribute type='Cabinet'/>
|
|
<AttributeType name='EmbedCab' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type='EmbedCab'/>
|
|
<AttributeType name='VolumeLabel' dt:type='string'/>
|
|
<attribute type='VolumeLabel'/>
|
|
<AttributeType name='Source' dt:type='string'/>
|
|
<attribute type='Source'/>
|
|
<element type='PatchPackage' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Directory' minOccurs='0' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='CustomAction' content='textOnly' model='closed'>
|
|
<!-- Element value is CustomAction key, as used in sequence tables -->
|
|
<description> Custom action specification </description>
|
|
<attribute type='op'/>
|
|
<!-- CustomAction Source specification, sets source Attribute bits -->
|
|
<AttributeType name='BinaryKey' dt:type='string'/>
|
|
<attribute type='BinaryKey'/><!-- stream in Binary table -->
|
|
<AttributeType name='FileKey' dt:type='string'/>
|
|
<attribute type='FileKey'/>
|
|
<AttributeType name='Property' dt:type='string'/>
|
|
<attribute type='Property'/>
|
|
<AttributeType name='Directory' dt:type='string'/>
|
|
<attribute type='Directory'/>
|
|
<!-- CustomAction Target specification, sets target Attribute bits -->
|
|
<AttributeType name='DllEntry' dt:type='string'/>
|
|
<attribute type='DllEntry'/>
|
|
<AttributeType name='ExeCommand' dt:type='string'/>
|
|
<attribute type='ExeCommand'/>
|
|
<AttributeType name='JScriptCall' dt:type='string'/>
|
|
<attribute type='JScriptCall'/>
|
|
<AttributeType name='VBScriptCall' dt:type='string'/>
|
|
<attribute type='VBScriptCall'/>
|
|
<AttributeType name='Value' dt:type='string'/>
|
|
<attribute type='Value'/>
|
|
<AttributeType name='InstallProperties' dt:type='string'/>
|
|
<attribute type='InstallProperties'/>
|
|
<!-- Other CustomAction type attributes -->
|
|
<AttributeType name='Return' dt:type='enumeration' dt:values='check ignore asyncWait asyncNoWait' default='check'/>
|
|
<attribute type='Return'/>
|
|
<AttributeType name='Execute' dt:type='enumeration' dt:values='immediate deferred rollback commit oncePerProcess firstSequence secondSequence' default='immediate'/>
|
|
<attribute type='Execute'/>
|
|
<AttributeType name='Impersonate' dt:type='enumeration' dt:values='no yes' default='yes'/>
|
|
<attribute type='Impersonate'/>
|
|
</ElementType>
|
|
|
|
<!-- - - - - - - - - - - Sequence Table Definitions - - - - - - - - - - - - - - -->
|
|
|
|
<!-- optional Condition expression is element text to allow use of CDATA section to escape delimiters -->
|
|
<AttributeType name='Sequence' dt:type='int'/>
|
|
<ElementType name='ScheduleReboot' content='textOnly'><attribute type='Sequence' /><attribute type='op'/></ElementType>
|
|
<ElementType name='ForceReboot' content='textOnly'><attribute type='Sequence' /><attribute type='op'/></ElementType>
|
|
<ElementType name='LaunchConditions' content='textOnly'><attribute type='Sequence' default= '100'/><attribute type='op'/></ElementType>
|
|
<ElementType name='FindRelatedProducts' content='textOnly'><attribute type='Sequence' default= '200'/><attribute type='op'/></ElementType>
|
|
<ElementType name='AppSearch' content='textOnly'><attribute type='Sequence' default= '400'/><attribute type='op'/></ElementType>
|
|
<ElementType name='CCPSearch' content='textOnly'><attribute type='Sequence' default= '500'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RMCCPSearch' content='textOnly'><attribute type='Sequence' default= '600'/><attribute type='op'/></ElementType>
|
|
<ElementType name='ValidateProductID' content='textOnly'><attribute type='Sequence' default= '700'/><attribute type='op'/></ElementType>
|
|
<ElementType name='CostInitialize' content='textOnly'><attribute type='Sequence' default= '800'/><attribute type='op'/></ElementType>
|
|
<ElementType name='FileCost' content='textOnly'><attribute type='Sequence' default= '900'/><attribute type='op'/></ElementType>
|
|
<ElementType name='IsolateComponents' content='textOnly'><attribute type='Sequence' default= '950'/><attribute type='op'/></ElementType>
|
|
<ElementType name='CostFinalize' content='textOnly'><attribute type='Sequence' default='1000'/><attribute type='op'/></ElementType>
|
|
<ElementType name='SetODBCFolders' content='textOnly'><attribute type='Sequence' default='1100'/><attribute type='op'/></ElementType>
|
|
<ElementType name='MigrateFeatureStates' content='textOnly'><attribute type='Sequence' default='1200'/><attribute type='op'/></ElementType>
|
|
<ElementType name='ExecuteAction' content='textOnly'><attribute type='Sequence' default='1300'/><attribute type='op'/></ElementType>
|
|
<ElementType name='InstallValidate' content='textOnly'><attribute type='Sequence' default='1400'/><attribute type='op'/></ElementType>
|
|
<ElementType name='InstallInitialize' content='textOnly'><attribute type='Sequence' default='1500'/><attribute type='op'/></ElementType>
|
|
<ElementType name='AllocateRegistrySpace' content='textOnly'><attribute type='Sequence' default='1550'/><attribute type='op'/></ElementType>
|
|
<ElementType name='ProcessComponents' content='textOnly'><attribute type='Sequence' default='1600'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnpublishComponents' content='textOnly'><attribute type='Sequence' default='1700'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnpublishFeatures' content='textOnly'><attribute type='Sequence' default='1800'/><attribute type='op'/></ElementType>
|
|
<ElementType name='StopServices' content='textOnly'><attribute type='Sequence' default='1900'/><attribute type='op'/></ElementType>
|
|
<ElementType name='DeleteServices' content='textOnly'><attribute type='Sequence' default='2000'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnregisterComPlus' content='textOnly'><attribute type='Sequence' default='2100'/><attribute type='op'/></ElementType>
|
|
<ElementType name='SelfUnregModules' content='textOnly'><attribute type='Sequence' default='2200'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnregisterTypeLibraries' content='textOnly'><attribute type='Sequence' default='2300'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveODBC' content='textOnly'><attribute type='Sequence' default='2400'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnregisterFonts' content='textOnly'><attribute type='Sequence' default='2500'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveRegistryValues' content='textOnly'><attribute type='Sequence' default='2600'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnregisterClassInfo' content='textOnly'><attribute type='Sequence' default='2700'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnregisterExtensionInfo' content='textOnly'><attribute type='Sequence' default='2800'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnregisterProgIdInfo' content='textOnly'><attribute type='Sequence' default='2900'/><attribute type='op'/></ElementType>
|
|
<ElementType name='UnregisterMIMEInfo' content='textOnly'><attribute type='Sequence' default='3000'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveIniValues' content='textOnly'><attribute type='Sequence' default='3100'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveShortcuts' content='textOnly'><attribute type='Sequence' default='3200'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveEnvironmentStrings' content='textOnly'><attribute type='Sequence' default='3300'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveDuplicateFiles' content='textOnly'><attribute type='Sequence' default='3400'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveFiles' content='textOnly'><attribute type='Sequence' default='3500'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveFolders' content='textOnly'><attribute type='Sequence' default='3600'/><attribute type='op'/></ElementType>
|
|
<ElementType name='CreateFolders' content='textOnly'><attribute type='Sequence' default='3700'/><attribute type='op'/></ElementType>
|
|
<ElementType name='MoveFiles' content='textOnly'><attribute type='Sequence' default='3800'/><attribute type='op'/></ElementType>
|
|
<ElementType name='InstallAdminPackage' content='textOnly'><attribute type='Sequence' default='3900'/><attribute type='op'/></ElementType>
|
|
<ElementType name='InstallFiles' content='textOnly'><attribute type='Sequence' default='4000'/><attribute type='op'/></ElementType>
|
|
<ElementType name='DuplicateFiles' content='textOnly'><attribute type='Sequence' default='4100'/><attribute type='op'/></ElementType>
|
|
<ElementType name='PatchFiles' content='textOnly'><attribute type='Sequence' default='4200'/><attribute type='op'/></ElementType>
|
|
<ElementType name='BindImage' content='textOnly'><attribute type='Sequence' default='4300'/><attribute type='op'/></ElementType>
|
|
<ElementType name='CreateShortcuts' content='textOnly'><attribute type='Sequence' default='4500'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterClassInfo' content='textOnly'><attribute type='Sequence' default='4600'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterExtensionInfo' content='textOnly'><attribute type='Sequence' default='4700'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterProgIdInfo' content='textOnly'><attribute type='Sequence' default='4800'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterMIMEInfo' content='textOnly'><attribute type='Sequence' default='4900'/><attribute type='op'/></ElementType>
|
|
<ElementType name='WriteRegistryValues' content='textOnly'><attribute type='Sequence' default='5000'/><attribute type='op'/></ElementType>
|
|
<ElementType name='WriteIniValues' content='textOnly'><attribute type='Sequence' default='5100'/><attribute type='op'/></ElementType>
|
|
<ElementType name='WriteEnvironmentStrings' content='textOnly'><attribute type='Sequence' default='5200'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterFonts' content='textOnly'><attribute type='Sequence' default='5300'/><attribute type='op'/></ElementType>
|
|
<ElementType name='InstallODBC' content='textOnly'><attribute type='Sequence' default='5400'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterTypeLibraries' content='textOnly'><attribute type='Sequence' default='5500'/><attribute type='op'/></ElementType>
|
|
<ElementType name='SelfRegModules' content='textOnly'><attribute type='Sequence' default='5600'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterComPlus' content='textOnly'><attribute type='Sequence' default='5700'/><attribute type='op'/></ElementType>
|
|
<ElementType name='InstallServices' content='textOnly'><attribute type='Sequence' default='5800'/><attribute type='op'/></ElementType>
|
|
<ElementType name='StartServices' content='textOnly'><attribute type='Sequence' default='5900'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterUser' content='textOnly'><attribute type='Sequence' default='6000'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RegisterProduct' content='textOnly'><attribute type='Sequence' default='6100'/><attribute type='op'/></ElementType>
|
|
<ElementType name='PublishComponents' content='textOnly'><attribute type='Sequence' default='6200'/><attribute type='op'/></ElementType>
|
|
<ElementType name='PublishFeatures' content='textOnly'><attribute type='Sequence' default='6300'/><attribute type='op'/></ElementType>
|
|
<ElementType name='PublishProduct' content='textOnly'><attribute type='Sequence' default='6400'/><attribute type='op'/></ElementType>
|
|
<ElementType name='InstallFinalize' content='textOnly'><attribute type='Sequence' default='6600'/><attribute type='op'/></ElementType>
|
|
<ElementType name='RemoveExistingProducts' content='textOnly'><attribute type='Sequence' default='6700'/><attribute type='op'/></ElementType>
|
|
<ElementType name='Custom' content='textOnly'><attribute type='Sequence' required= 'no'/><attribute type='op'/>
|
|
<AttributeType name='Action' required='yes'/><attribute type='Action'/>
|
|
</ElementType>
|
|
<ElementType name='Show' content='textOnly'><attribute type='Sequence' required= 'no'/><attribute type='op'/>
|
|
<AttributeType name='OnExit' dt:type='enumeration' dt:values='success cancel error suspend'/><attribute type='OnExit'/> <!-- mutually exclusive with Sequence attribute -->
|
|
<AttributeType name='Dialog' dt:type='string' required='yes'/><attribute type='Dialog'/>
|
|
</ElementType>
|
|
|
|
<!-- standard sequence table compositions -->
|
|
<ElementType name='InstallUISequence' model='closed'>
|
|
<element type='Custom' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Show' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ScheduleReboot' minOccurs='0' maxOccurs='1'/><!-- not fixed sequence -->
|
|
<element type='LaunchConditions' minOccurs='0' maxOccurs='1'/>
|
|
<element type='FindRelatedProducts' minOccurs='0' maxOccurs='1'/>
|
|
<element type='AppSearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type='CCPSearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RMCCPSearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type='ValidateProductID' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CostInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='FileCost' minOccurs='1' maxOccurs='1'/>
|
|
<element type='IsolateComponents' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CostFinalize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='MigrateFeatureStates' minOccurs='1' maxOccurs='1'/>
|
|
<element type='ExecuteAction' minOccurs='0' maxOccurs='1'/>
|
|
</ElementType>
|
|
<ElementType name='InstallExecuteSequence' model='closed'>
|
|
<attribute type='op'/><!-- used only to supply default op for child action elements -->
|
|
<element type='Custom' minOccurs='0' maxOccurs='*'/>
|
|
<element type='ScheduleReboot' minOccurs='0' maxOccurs='1'/><!-- not fixed sequence -->
|
|
<element type='ForceReboot' minOccurs='0' maxOccurs='1'/><!-- not fixed sequence -->
|
|
<element type='LaunchConditions' minOccurs='0' maxOccurs='1'/>
|
|
<element type='FindRelatedProducts' minOccurs='0' maxOccurs='1'/>
|
|
<element type='AppSearch' minOccurs='0' maxOccurs='1'/>
|
|
<element type='CCPSearch' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RMCCPSearch' minOccurs='1' maxOccurs='1'/>
|
|
<element type='ValidateProductID' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CostInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='FileCost' minOccurs='1' maxOccurs='1'/>
|
|
<element type='IsolateComponents' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CostFinalize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='SetODBCFolders' minOccurs='1' maxOccurs='1'/>
|
|
<element type='MigrateFeatureStates' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallValidate' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='AllocateRegistrySpace' minOccurs='0' maxOccurs='1'/>
|
|
<element type='ProcessComponents' minOccurs='1' maxOccurs='1'/>
|
|
<element type='UnpublishComponents' minOccurs='0' maxOccurs='1'/>
|
|
<element type='UnpublishFeatures' minOccurs='0' maxOccurs='1'/>
|
|
<element type='StopServices' minOccurs='1' maxOccurs='1'/>
|
|
<element type='DeleteServices' minOccurs='1' maxOccurs='1'/>
|
|
<element type='UnregisterComPlus' minOccurs='1' maxOccurs='1'/>
|
|
<element type='SelfUnregModules' minOccurs='0' maxOccurs='1'/>
|
|
<element type='UnregisterTypeLibraries' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RemoveODBC' minOccurs='1' maxOccurs='1'/>
|
|
<element type='UnregisterFonts' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RemoveRegistryValues' minOccurs='0' maxOccurs='1'/>
|
|
<element type='UnregisterClassInfo' minOccurs='0' maxOccurs='1'/>
|
|
<element type='UnregisterExtensionInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='UnregisterProgIdInfo' minOccurs='0' maxOccurs='1'/>
|
|
<element type='UnregisterMIMEInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RemoveIniValues' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RemoveShortcuts' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RemoveEnvironmentStrings' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RemoveDuplicateFiles' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RemoveFiles' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RemoveFolders' minOccurs='0' maxOccurs='1'/>
|
|
<element type='CreateFolders' minOccurs='0' maxOccurs='1'/>
|
|
<element type='MoveFiles' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallFiles' minOccurs='0' maxOccurs='1'/>
|
|
<element type='DuplicateFiles' minOccurs='1' maxOccurs='1'/>
|
|
<element type='PatchFiles' minOccurs='1' maxOccurs='1'/>
|
|
<element type='BindImage' minOccurs='0' maxOccurs='1'/>
|
|
<element type='CreateShortcuts' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RegisterClassInfo' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RegisterExtensionInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterProgIdInfo' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RegisterMIMEInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='WriteRegistryValues' minOccurs='0' maxOccurs='1'/>
|
|
<element type='WriteIniValues' minOccurs='1' maxOccurs='1'/>
|
|
<element type='WriteEnvironmentStrings' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterFonts' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallODBC' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterTypeLibraries' minOccurs='0' maxOccurs='1'/>
|
|
<element type='SelfRegModules' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RegisterComPlus' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallServices' minOccurs='1' maxOccurs='1'/>
|
|
<element type='StartServices' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterUser' minOccurs='0' maxOccurs='1'/>
|
|
<element type='RegisterProduct' minOccurs='0' maxOccurs='1'/>
|
|
<element type='PublishComponents' minOccurs='0' maxOccurs='1'/>
|
|
<element type='PublishFeatures' minOccurs='0' maxOccurs='1'/>
|
|
<element type='PublishProduct' minOccurs='0' maxOccurs='1'/>
|
|
<element type='InstallFinalize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RemoveExistingProducts' minOccurs='1' maxOccurs='1'/>
|
|
</ElementType>
|
|
<ElementType name='AdminUISequence' model='closed'>
|
|
<element type='Custom' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Show' minOccurs='0' maxOccurs='*'/>
|
|
<element type='CostInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='FileCost' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CostFinalize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='ExecuteAction' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallValidate' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallAdminPackage' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallFiles' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallFinalize' minOccurs='1' maxOccurs='1'/>
|
|
</ElementType>
|
|
<ElementType name='AdminExecuteSequence' model='closed'>
|
|
<element type='Custom' minOccurs='0' maxOccurs='*'/>
|
|
<element type='CostInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='FileCost' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CostFinalize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallValidate' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallAdminPackage' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallFiles' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallFinalize' minOccurs='1' maxOccurs='1'/>
|
|
</ElementType>
|
|
<ElementType name='AdvtExecuteSequence' model='closed'>
|
|
<element type='Custom' minOccurs='0' maxOccurs='*'/>
|
|
<element type='CostInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='FileCost' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CostFinalize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallValidate' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallInitialize' minOccurs='1' maxOccurs='1'/>
|
|
<element type='CreateShortcuts' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterClassInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterExtensionInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterMIMEInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='RegisterProgIdInfo' minOccurs='1' maxOccurs='1'/>
|
|
<element type='PublishComponents' minOccurs='1' maxOccurs='1'/>
|
|
<element type='PublishFeatures' minOccurs='1' maxOccurs='1'/>
|
|
<element type='PublishProduct' minOccurs='1' maxOccurs='1'/>
|
|
<element type='InstallFinalize' minOccurs='1' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<!-- - - - - - - - - - - Binary tables - - - - - - - - - - - - - -->
|
|
|
|
<ElementType name='Binary' content='textOnly' model='closed'>
|
|
<!-- Element value is binary data encoded in bin.base64 -->
|
|
<description> binary data used for CustomAction elements and UI controls </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type='Name'/>
|
|
<AttributeType name='src' dt:type='string'/>
|
|
<attribute type='src'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Icon' content='textOnly' model='closed'>
|
|
<!-- Element value is binary data encoded in bin.base64 -->
|
|
<description> binary icon data used for Shortcut, ProgId, Class elements, not by UI controls </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Name' dt:type='string' required='yes'/>
|
|
<attribute type='Name'/>
|
|
<AttributeType name='src' dt:type='string'/>
|
|
<attribute type='src'/>
|
|
</ElementType>
|
|
|
|
<!-- - - - - - - - - - - UI Definitions - - - - - - - - - - - - - -->
|
|
|
|
<ElementType name='Error' content='textOnly' model='closed'>
|
|
<!-- Element value is Message, use CDATA if message contains delimiter characters -->
|
|
<attribute type='op'/>
|
|
<AttributeType name='Id' dt:type='int'/>
|
|
<attribute type='Id'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Publish' content='textOnly' model='closed'>
|
|
<!-- Ordering of these elements is registered in the ControlEvent table -->
|
|
<!-- Element value is the optional Condition expression -->
|
|
<AttributeType name='Event' dt:type='string'/><!-- must be one of the standard control events' -->
|
|
<attribute type='Event'/>
|
|
<AttributeType name='Property' dt:type='string'/><!-- mutually exclusive with 'Event' -->
|
|
<attribute type='Property'/>
|
|
<AttributeType name='Value' dt:type='string' required='yes'/>
|
|
<attribute type='Value'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Subscribe' content='empty' model='closed'>
|
|
<!-- Sets attributes for events in the EventMapping table -->
|
|
<AttributeType name='Event' dt:type='string'/><!-- must be one of the standard control events' -->
|
|
<attribute type='Event'/>
|
|
<AttributeType name='Attribute' dt:type='string'/>
|
|
<attribute type='Attribute'/> <!-- if not present can only handle enable, disable, hide, unhide events -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Text' content='textOnly' model='closed'>
|
|
<!-- Element value is used for control text, where CDATA is used to escape delimiters -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Control' content='mixed' model='closed'>
|
|
<!-- Element value is the Control identifier -->
|
|
<attribute type='op'/>
|
|
<AttributeType name='Type' dt:type='string' required='yes'/>
|
|
<attribute type='Type'/>
|
|
<AttributeType name='X' dt:type='int' required='yes'/>
|
|
<attribute type='X'/>
|
|
<AttributeType name='Y' dt:type='int' required='yes'/>
|
|
<attribute type='Y'/>
|
|
<AttributeType name='Width' dt:type='int' required='yes'/>
|
|
<attribute type='Width'/>
|
|
<AttributeType name='Height' dt:type='int' required='yes'/>
|
|
<attribute type='Height'/>
|
|
<AttributeType name='Property' dt:type='string'/>
|
|
<attribute type='Property'/>
|
|
<AttributeType name='Text' dt:type='string'/>
|
|
<attribute type='Text'/>
|
|
<AttributeType name='Help' dt:type='string'/>
|
|
<attribute type='Help'/>
|
|
<AttributeType name='CheckBoxValue' dt:type='string'/>
|
|
<attribute type='CheckBoxValue'/><!-- Only for CheckBox control to set Property to a value on check -->
|
|
<!-- Control ordering - order of declaration in Dialog determines tab ordering -->
|
|
<AttributeType name='TabSkip' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='TabSkip'/><!-- yes if this control is skipped in the tab sequence -->
|
|
<AttributeType name='First' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='First'/><!-- yes if this is the control that first gets focus -->
|
|
<AttributeType name='Default' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Default'/><!-- yes if this control invoked by the return key -->
|
|
<AttributeType name='Cancel' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Cancel'/><!-- yes if this is the control invoked on cancel of dialog -->
|
|
<!-- common Control attributes -->
|
|
<AttributeType name='Hidden' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Hidden'/>
|
|
<AttributeType name='Disabled' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Disabled'/>
|
|
<AttributeType name='Sunken' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Sunken'/>
|
|
<AttributeType name='Indirect' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Indirect'/>
|
|
<AttributeType name='Integer' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Integer'/>
|
|
<AttributeType name='RightToLeft' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='RightToLeft'/>
|
|
<AttributeType name='RightAligned' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='RightAligned'/>
|
|
<AttributeType name='LeftScroll' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='LeftScroll'/>
|
|
<!-- attributes applied to specific Controls -->
|
|
<AttributeType name='Transparent' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Transparent'/> <!-- only valid for Text Controls -->
|
|
<AttributeType name='NoPrefix' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='NoPrefix'/> <!-- only valid for Text Controls -->
|
|
<AttributeType name='NoWrap' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='NoWrap'/> <!-- only valid for Text Controls -->
|
|
<AttributeType name='FormatSize' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='FormatSize'/> <!-- only valid for Text Controls -->
|
|
<AttributeType name='UserLanguage' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='UserLanguage'/> <!-- only valid for Text Controls -->
|
|
<AttributeType name='Multiline' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Multiline'/> <!-- only valid for Edit Controls -->
|
|
<AttributeType name='Password' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Password'/> <!-- only valid for Edit Controls -->
|
|
<AttributeType name='ProgressBlocks' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='ProgressBlocks'/><!-- only valid for Progress Controls -->
|
|
<AttributeType name='Removable' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Removable'/> <!-- only valid for Volume and Directory Controls -->
|
|
<AttributeType name='Fixed' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Fixed'/> <!-- only valid for Volume and Directory Controls -->
|
|
<AttributeType name='Remote' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Remote'/> <!-- only valid for Volume and Directory Controls -->
|
|
<AttributeType name='CDROM' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='CDROM'/> <!-- only valid for Volume and Directory Controls -->
|
|
<AttributeType name='RAMDisk' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='RAMDisk'/> <!-- only valid for Volume and Directory Controls -->
|
|
<AttributeType name='Floppy' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Floppy'/> <!-- only valid for Volume and Directory Controls -->
|
|
<AttributeType name='ShowRollbackCost' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='ShowRollbackCost'/><!-- only valid for VolumeCostList Controls -->
|
|
<AttributeType name='Sorted' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Sorted'/> <!-- only valid for Listbox and ComboBox Controls -->
|
|
<AttributeType name='ComboList' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='ComboList'/> <!-- only valid for ComboBox Controls -->
|
|
<AttributeType name='Image' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Image'/> <!-- only valid for RadioButton, PushButton, and Icon Controls -->
|
|
<AttributeType name='IconSize' dt:type='enumeration' dt:values='16 32 48'/>
|
|
<attribute type ='IconSize'/> <!-- only valid for RadioButton, PushButton, and Icon Controls -->
|
|
<AttributeType name='FixedSize' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='FixedSize'/> <!-- only valid for RadioButton, PushButton, and Icon Controls -->
|
|
<AttributeType name='Icon' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Icon'/> <!-- only valid for RadioButton and PushButton Controls -->
|
|
<AttributeType name='Bitmap' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='Bitmap'/> <!-- only valid for RadioButton and PushButton Controls -->
|
|
<AttributeType name='PushLike' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='PushLike'/> <!-- only valid for RadioButton and Checkbox Controls -->
|
|
<AttributeType name='HasBorder' dt:type='enumeration' dt:values='no yes'/>
|
|
<attribute type ='HasBorder'/> <!-- only valid for RadioButton Controls -->
|
|
<!-- alternative to Text attribute when CDATA is needed to escape XML delimiters -->
|
|
<element type='Text' minOccurs='0' maxOccurs='1'/>
|
|
<!-- child elements affecting operation of this control -->
|
|
<element type='Publish' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Subscribe' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Condition' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Billboard' content='mixed' model='closed'>
|
|
<!-- Element value is internal identifier for the Billboard -->
|
|
<description> Bilboard to display during install of a Feature </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Feature' dt:type='string'/>
|
|
<attribute type ='Feature'/> <!-- Feature whose state determines is Billboard is used -->
|
|
<element type='Control'/> <!-- can only have controls of type: Text, Bitmap, Icon, and custom -->
|
|
</ElementType>
|
|
|
|
<ElementType name='BillboardAction' content='mixed' model='closed'>
|
|
<!-- Element value is sequence Action during which the child Billboards are played -->
|
|
<description> Bilboard action during which child Billboards are displayed </description>
|
|
<element type='Billboard'/> <!-- order of Billboard elements determines order of display -->
|
|
</ElementType>
|
|
|
|
<ElementType name='Dialog' content='mixed' model='closed'>
|
|
<!-- Element value is the Dialog identifier -->
|
|
<attribute type='op'/>
|
|
<AttributeType name='X' dt:type='int' required='no'/>
|
|
<attribute type='X'/><!-- in %, defaults to centered on screen (50) -->
|
|
<AttributeType name='Y' dt:type='int' required='no'/>
|
|
<attribute type='Y'/><!-- in %, defaults to centered on screen (50) -->
|
|
<AttributeType name='Width' dt:type='int' required='yes'/>
|
|
<attribute type='Width'/><!-- in dialog units -->
|
|
<AttributeType name='Height' dt:type='int' required='yes'/>
|
|
<attribute type='Height'/><!-- in dialog units -->
|
|
<AttributeType name='Title' dt:type='string'/>
|
|
<attribute type='Title'/>
|
|
<!-- 'Attributes' column integer value generated from XML attributes below -->
|
|
<AttributeType name='Hidden' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Hidden'/>
|
|
<AttributeType name='Modeless' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Modeless'/>
|
|
<AttributeType name='NoMinimize' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='NoMinimize'/>
|
|
<AttributeType name='SystemModal' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='SystemModal'/>
|
|
<AttributeType name='KeepModeless' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='KeepModeless'/>
|
|
<AttributeType name='TrackDiskSpace' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='TrackDiskSpace'/>
|
|
<AttributeType name='CustomPalette' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='CustomPalette'/>
|
|
<AttributeType name='RightToLeft' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='RightToLeft'/>
|
|
<AttributeType name='RightAligned' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='RightAligned'/>
|
|
<AttributeType name='LeftScroll' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='LeftScroll'/>
|
|
<AttributeType name='ErrorDialog' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='ErrorDialog'/>
|
|
<!-- Control elements belonging to this dialog -->
|
|
<element type='Control' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ProgressText' content='textOnly' model='closed'>
|
|
<!-- Element value is progress message text for action -->
|
|
<attribute type='op'/>
|
|
<AttributeType name='Action' dt:type='string'/>
|
|
<attribute type='Action'/>
|
|
<AttributeType name='Template' dt:type='string'/>
|
|
<attribute type='Template'/><!-- used to format ActionData messages from action processing -->
|
|
</ElementType>
|
|
|
|
<ElementType name='TextStyle' content='textOnly' model='closed'>
|
|
<!-- Element value is the TextStyle identifier, used in Control Text -->
|
|
<description> TextStyle definition </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='FaceName' dt:type='string' required='yes'/>
|
|
<attribute type='FaceName'/>
|
|
<AttributeType name='Size' dt:type='int' required='yes'/>
|
|
<attribute type='Size'/>
|
|
<AttributeType name='Red' dt:type='int'/>
|
|
<attribute type='Red'/> <!-- 0 to 255 -->
|
|
<AttributeType name='Green' dt:type='int'/>
|
|
<attribute type='Green'/> <!-- 0 to 255 -->
|
|
<AttributeType name='Blue' dt:type='int'/>
|
|
<attribute type='Blue'/> <!-- 0 to 255 -->
|
|
<AttributeType name='Bold' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Bold'/>
|
|
<AttributeType name='Italic' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Italic'/>
|
|
<AttributeType name='Underline' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Underline'/>
|
|
<AttributeType name='Strike' dt:type='enumeration' dt:values='no yes' default='no'/>
|
|
<attribute type ='Strike'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='ListItem' content='textOnly' model='closed'>
|
|
<!-- Element value is value assigned to the associated control Property -->
|
|
<description> Text and value associated with Property with Control set to listBox,listView,comboBox</description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Text' dt:type='string'/>
|
|
<attribute type ='Text'/> <!-- defaults to ListItem's value -->
|
|
<AttributeType name='Icon' dt:type='string'/>
|
|
<attribute type ='Icon'/> <!-- only valid in ListView Properties -->
|
|
</ElementType>
|
|
|
|
<ElementType name='ListBox' content='eltOnly' model='closed'>
|
|
<description> Set of items for a particular ListBox control tied to an install Property </description>
|
|
<attribute type='op'/><!-- used only to supply default op for child elements -->
|
|
<AttributeType name='Property' dt:type='string'/>
|
|
<attribute type ='Property' required='yes'/><!-- installer Property tied to this group -->
|
|
<element type='ListItem' minOccurs='0' maxOccurs='*'/><!-- entry for ListBox table-->
|
|
</ElementType>
|
|
|
|
<ElementType name='ComboBox' content='eltOnly' model='closed'>
|
|
<description> Set of items for a particular ComboBox control tied to an install Property </description>
|
|
<attribute type='op'/><!-- used only to supply default op for child elements -->
|
|
<AttributeType name='Property' dt:type='string'/>
|
|
<attribute type ='Property' required='yes'/><!-- installer Property tied to this group -->
|
|
<element type='ListItem' minOccurs='0' maxOccurs='*'/><!-- entry for ComboBox table-->
|
|
</ElementType>
|
|
|
|
<ElementType name='ListView' content='eltOnly' model='closed'>
|
|
<description> Set of items for a particular ListView control tied to an install Property </description>
|
|
<attribute type='op'/><!-- used only to supply default op for child elements -->
|
|
<AttributeType name='Property' dt:type='string'/>
|
|
<attribute type ='Property' required='yes'/><!-- installer Property tied to this group -->
|
|
<element type='ListItem' minOccurs='0' maxOccurs='*'/><!-- entry for ListView table-->
|
|
</ElementType>
|
|
|
|
<ElementType name='RadioButton' content='textOnly' model='closed'>
|
|
<!-- Element value is value assigned to the associated control Property -->
|
|
<description> Text and value associated with Property with Control set to radioGroup </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='X' dt:type='int' required='yes'/>
|
|
<attribute type ='X'/>
|
|
<AttributeType name='Y' dt:type='int' required='yes'/>
|
|
<attribute type ='Y'/>
|
|
<AttributeType name='Width' dt:type='int' required='yes'/>
|
|
<attribute type ='Width'/>
|
|
<AttributeType name='Height' dt:type='int' required='yes'/>
|
|
<attribute type ='Height'/>
|
|
<AttributeType name='Text' dt:type='string'/>
|
|
<attribute type ='Text'/> <!-- mutually exclusive with Icon-->
|
|
<AttributeType name='Icon' dt:type='string'/>
|
|
<attribute type ='Icon'/> <!-- mutually exclusive with Text attribute -->
|
|
<AttributeType name='ToolTip' dt:type='string'/>
|
|
<attribute type ='ToolTip'/>
|
|
<AttributeType name='Help' dt:type='string'/>
|
|
<attribute type ='Help'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='RadioGroup' content='eltOnly' model='closed'>
|
|
<description> Set of radio buttons tied to a particular install Property </description>
|
|
<attribute type='op'/><!-- used only to supply default op for child elements -->
|
|
<AttributeType name='Property' dt:type='string'/>
|
|
<attribute type ='Property' required='yes'/><!-- installer Property tied to this group -->
|
|
<element type='RadioButton' minOccurs='0' maxOccurs='*'/><!-- entry for RadioButton table-->
|
|
</ElementType>
|
|
|
|
<ElementType name='UIText' content='mixed' model='closed'>
|
|
<!-- Element value is name as referenced from controls -->
|
|
<description> Text associated with certain controls </description>
|
|
<attribute type='op'/>
|
|
<AttributeType name='Text' dt:type='string' required='no'/>
|
|
<attribute type='Text'/>
|
|
<!-- alternative to Text attribute when CDATA is needed to escape XML delimiters -->
|
|
<element type='Text' minOccurs='0' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='UI' content='eltOnly' model='closed' order='many'>
|
|
<description> Enclosing tag to compartmentalize UI specifications </description>
|
|
<attribute type='op'/><!-- used only to supply default op for child Property elements -->
|
|
<element type='Dialog' minOccurs='0' maxOccurs='*'/><!-- Dialog specification, called from Sequence -->
|
|
<element type='BillboardAction' minOccurs='0' maxOccurs='*'/><!-- Billboard table item with child Controls -->
|
|
<element type='ListBox' minOccurs='0' maxOccurs='*'/><!-- ListBox table with ListItem children -->
|
|
<element type='ComboBox' minOccurs='0' maxOccurs='*'/><!-- ComboBox table with ListItem children -->
|
|
<element type='ListView' minOccurs='0' maxOccurs='*'/><!-- ListView table with ListItem children -->
|
|
<element type='RadioGroup' minOccurs='0' maxOccurs='*'/><!-- RadioButton table with RadioButton children -->
|
|
<element type='Error' minOccurs='0' maxOccurs='*'/><!-- Error text associated with install error -->
|
|
<element type='ProgressText' minOccurs='0' maxOccurs='*'/><!-- ActionText entry associated with an action -->
|
|
<element type='TextStyle' minOccurs='0' maxOccurs='*'/><!-- TextStyle entry for use in control text -->
|
|
<element type='UIText' minOccurs='0' maxOccurs='*'/><!-- values for UIText property, not installer Property -->
|
|
<!-- elements with identical behavior as under Product key, solely to allow grouping with other UI elements -->
|
|
<element type='Property' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Binary' minOccurs='0' maxOccurs='*'/>
|
|
<element type='InstallUISequence' minOccurs='0' maxOccurs='1'/>
|
|
<element type='AdminUISequence' minOccurs='0' maxOccurs='1'/>
|
|
</ElementType>
|
|
|
|
<!-- - - - - - - - - - - Product Definitions - - - - - - - - - - - - - -->
|
|
|
|
<ElementType name='Package' content='empty' model='closed'>
|
|
<description> Package attributes from SummaryInformation </description>
|
|
<AttributeType name='Id' dt:type='uuid'><description> Package code GUID for SKU </description></AttributeType>
|
|
<attribute type ='Id'/>
|
|
<AttributeType name='Description' dt:type='string'><description> Product full name or description </description></AttributeType>
|
|
<attribute type ='Description'/>
|
|
<AttributeType name='Platforms' dt:type='string'><description> List of platforms supported in package </description></AttributeType>
|
|
<attribute type ='Platforms'/>
|
|
<AttributeType name='Languages' dt:type='string'><description> List of language IDs supported in package </description></AttributeType>
|
|
<attribute type ='Languages'/>
|
|
<AttributeType name='InstallerVersion' dt:type='int'><description> Minimum installer version, major*100 + minor </description></AttributeType>
|
|
<attribute type ='InstallerVersion'/>
|
|
<AttributeType name='Manufacturer' dt:type='string'><description> Vendor releasing the package </description></AttributeType>
|
|
<attribute type ='Manufacturer'/>
|
|
<AttributeType name='Keywords' dt:type='string'><description> Optional keywords for browsing </description></AttributeType>
|
|
<attribute type ='Keywords'/>
|
|
<AttributeType name='Comments' dt:type='string'><description> Optional comments for browsing </description></AttributeType>
|
|
<attribute type ='Comments'/>
|
|
<AttributeType name='SummaryCodepage' dt:type='int'><description> Codepage for summary info strings only </description></AttributeType>
|
|
<attribute type ='SummaryCodepage'/>
|
|
<AttributeType name='ShortNames' dt:type='enumeration' dt:values='no yes'><description> Short filenames on source </description></AttributeType>
|
|
<attribute type ='ShortNames'/>
|
|
<AttributeType name='Compressed' dt:type='enumeration' dt:values='no yes'><description> Compressed files on source </description></AttributeType>
|
|
<attribute type ='Compressed'/>
|
|
<AttributeType name='AdminImage' dt:type='enumeration' dt:values='no yes'><description> Source is an admin image </description></AttributeType>
|
|
<attribute type ='AdminImage'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Product' content='eltOnly' model='open' order='many'>
|
|
<!-- Product attributes from Property table -->
|
|
<attribute type='op'/>
|
|
<AttributeType name='Id' dt:type='uuid'><description> Product code GUID for product </description></AttributeType>
|
|
<attribute type ='Id'/>
|
|
<AttributeType name='Name' dt:type='string'><description> Descriptive name of product </description></AttributeType>
|
|
<attribute type ='Name'/>
|
|
<AttributeType name='Language' dt:type='int'><description> Decimal language ID for product </description></AttributeType>
|
|
<attribute type ='Language'/>
|
|
<AttributeType name='Manufacturer' dt:type='string'><description> Manufacturer of product </description></AttributeType>
|
|
<attribute type ='Manufacturer'/>
|
|
<AttributeType name='Version' dt:type='string'><description> Product version string </description></AttributeType>
|
|
<attribute type ='Version'/>
|
|
<AttributeType name='UpgradeCode' dt:type='uuid'><description> Upgrade code GUID for product </description></AttributeType>
|
|
<attribute type ='UpgradeCode'/>
|
|
<!-- Program-level elements -->
|
|
<element type='Package' minOccurs='0' maxOccurs='1'/><!-- Package properties from summary info -->
|
|
<element type='Condition' minOccurs='0' maxOccurs='*'/><!-- LaunchCondition -->
|
|
<element type='Property' minOccurs='0' maxOccurs='*'/><!-- product Property, parent of bound controls -->
|
|
<element type='Directory' minOccurs='0' maxOccurs='*'/><!-- root of Directory tree -->
|
|
<element type='Feature' minOccurs='0' maxOccurs='*'/><!-- root of Feature tree -->
|
|
<element type='Component' minOccurs='0' maxOccurs='*'/><!-- reference to existing Component -->
|
|
<element type='Media' minOccurs='0' maxOccurs='*'/>
|
|
<element type='AppId' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Upgrade' minOccurs='0' maxOccurs='*'/>
|
|
<element type='CustomAction' minOccurs='0' maxOccurs='*'/>
|
|
<element type='CustomTable' minOccurs='0' maxOccurs='*'/>
|
|
<element type='UI' minOccurs='0' maxOccurs='*'/><!-- encloses UI specifications, may be multiple -->
|
|
<element type='InstallExecuteSequence' minOccurs='0' maxOccurs='1'/>
|
|
<element type='InstallUISequence' minOccurs='0' maxOccurs='1'/>
|
|
<element type='AdminExecuteSequence' minOccurs='0' maxOccurs='1'/>
|
|
<element type='AdminUISequence' minOccurs='0' maxOccurs='1'/>
|
|
<element type='AdvtExecuteSequence' minOccurs='0' maxOccurs='1'/>
|
|
<element type='Binary' minOccurs='0' maxOccurs='*'/>
|
|
<element type='Icon' minOccurs='0' maxOccurs='*'/>
|
|
</ElementType>
|
|
|
|
<ElementType name='Fragment' content='mixed' model='open'/>
|
|
</Schema>
|