Introduction to WiX

What is WiX?

The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database files (MSI and MSM). The WiX tools model the traditional compile and link model used to create executables from source code. For WiX, source code is written in xml files. These files are validated against a schema, wix.xsd, then processed by a preprocessor, compiler, and linker to create the desired result. The WiX platform has been designed to allow for the easy creation of multiple Windows Installer databases from a small set of source files.

  • Schema
  • Authoring
  • Tools
  • WiX Files
  • Getting Help


Authoring

Authoring is the process of writing the WiX source files necessary to create a Windows Installer database. The source files, which usually have the extension .wxs, are XML documents that must conform to the WiX schema (found in wix.xsd).

  • Getting Started
  • Schema


Getting Started

WiX can create Windows Installer databases which include: Windows Installer packages, MSI files, and Merge Modules, MSM files. We’ll start by creating a Windows Installer package so that you’ll have something that you can install and uninstall quickly. Then, we’ll create a Merge Module and merge it into our example Windows Installer package. Finally, I’ll cover a few more advanced topics such as how to define CustomActions and a deeper look into symbols and references.

Topics:
  1. Your first .wxs file
  2. Creating Merge Modules
  3. Adding Custom Actions
  4. Msi Tables to WiX Schema Translation Guide


Authoring Your First .wxs File

Pick your favorite XML editor—for all of the examples, I’ll use notepad--and create a new file called “product.wxs”. Nothing about that name is special, but the .wxs extension lets us know that this is a Windows Installer Xml Source File. Now, let’s add the three lines of text all .wxs files have:

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
</Wix>

That forms the outer skeleton for our source file and, honestly, any other source file we ever want to get compiled. You can feed this empty source file to candle.exe and get out an empty object file. Tell you what, let's do that. Follow the following steps and you should see very similar output:

C:\test> candle product.wxs
Microsoft (R) Windows Installer Xml Compiler version 1.0.1220.15022
Copyright (C) Microsoft Corporation 2003. All rights reserved

C:\test> type product.wixobj
<?xml version="1.0" encoding="utf-8"?><wixObject
xmlns="http://schemas.microsoft.com/wix/2003/04/objects"
src="C:\test\product.wxs" />

C:\test>

Let's notice a couple things before continuing. First, notice that when there is no error candle doesn't print any text other than its header. In fact, you can even suppress the header output by specifying "-nologo" on the command line. In that case, candle will print nothing unless there is a failure. Second, notice that the path to the original source file is stored in the .wixobj file. This can be useful when tracking down where an error is coming from. In fact, the linker uses that "src" attribute to print more informative error messages when it encounters a problem.

Okay, now that we've seen an empty source file create an empty object file, let's create an installable Windows Installer package. Add the following content to your product.wxs file:

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Product Id='12345678-1234-1234-1234-123456789012' Name='Test Package' Language='1033'
            Version='1.0.0.0' Manufacturer='Microsoft Corporation'>
      <Package Id='12345678-1234-1234-1234-123456789012'
               Description='My first Windows Installer package'
               Comments='This is my first attempt at creating a Windows Installer database'
               Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />

      <Directory Id='TARGETDIR' Name='SourceDir'>
         <Component Id='MyComponent' Guid='12345678-1234-1234-1234-123456789012' />
      </Directory>

      <Feature Id='MyFeature' Title='My 1st Feature' Level='1'>
         <ComponentRef Id='MyComponent' />
      </Feature>
   </Product>
</Wix>

This should allow us to create a MSI with a ProductCode of "{12345678-1234-1234-1234-123456789012}" with ProductLanguage of "1033" and a ProductVersion of "1.0.0.0". All of that information is taken from the <Product/> element. The <Package/> element defines all of the information that goes in our MSI's summary information stream. Finally, a simple <Directory/> and <Feature/> tree is created with a single <Component/>. This is enough to get our MSI registered on the machine.

So let's compile, link, and install then take a look at the registered packages for our MSI. Follow the instructions:

C:\test> candle product.wxs
Microsoft (R) Windows Installer Xml Compiler version 1.0.1220.15022
Copyright (C) Microsoft Corporation 2003. All rights reserved

product.wxs

C:\test> light product.wixobj
Microsoft (R) Windows Installer Xml Linker version 1.0.1220.15022
Copyright (C) Microsoft Corporation 2003. All rights reserved

C:\test> msiexec /i product.msi

C:\test> \\delivery\tools\msiconfig.exe
.
.
.
{12345678-1234-1234-1234-123456789012} Test Package
.
.
.

You should see your "Test Package" listed with all the other Windows Installer packages installed on your machine. You can also go to Add/Remove Programs in the Control Panel and see "Test Package" registered there. Go ahead and remove the package now, so we don't forget it later.

Great! Now that we have a package that installs and uninstalls properly, let's actually install something. So, create a new text file called "readme.txt" next to your "product.wxs" file and type a message to yourself in there. "Hello, World!" is a favorite. Then, we need to modify the product.wxs to tell it about the file:

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Product Id='12345678-1234-1234-1234-123456789012' Name='Test Package' Language='1033'
            Version='1.0.0.0' Manufacturer='Microsoft Corporation'>
      <Package Id='12345678-1234-1234-1234-123456789012'
                Description='My first Windows Installer package'
                Comments='This is my first attempt at creating a Windows Installer database'
                Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />

      <Media Id='1' Cabinet='product.cab' EmbedCab='yes' />

      <Directory Id='TARGETDIR' Name='SourceDir'>
         <Directory Id='ProgramFilesFolder' Name='PFiles'>
            <Directory Id='MyDir' Name='TestProg' LongName='Test Program'>
               <Component Id='MyComponent' Guid='12345678-1234-1234-1234-123456789012'>
                  <File Id='readme' Name='readme.txt' DiskId='1' src='readme.txt' />
               </Component>
            </Directory>
         </Directory>
      </Directory>

      <Feature Id='MyFeature' Title='My 1st Feature' Level='1'>
         <ComponentRef Id='MyComponent' />
      </Feature>
   </Product>
</Wix>

You should be able to compile, link, and install that MSI and see that you do get a directory called "Test Program" in your system's "Program Files" folder. In that "Test Program" directory should be the "readme.txt" file you created with the message to yourself. Spiffy, eh? Again, remember to uninstall the MSI so you can rebuild and install it again later.

Believe it or not, that's all there is to creating a Windows Installer package. Sure, you can add UI and things like that now, but we've covered the basics. Everything just comes down to filling in the right XML elements. So, let's move on and look at creating a Merge Module we can incorporate into our spiffy new package.


Creating Merge Modules

Creating a Merge Module is very much like creating a Windows Installer package. So, let's create a new text file called "module.wxs" and put the standard skeleton in it, as so:

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
</Wix>

Then to create a Merge Module, we add the <Module/> element and add the required attributes:

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Module Id='TestModule' Guid='87654321-4321-4321-4321-210987654321' Language='1033' Version='1.0.0.0'>
      <Package Id='87654321-4321-4321-4321-210987654321' Description='My first Merge Module'
                Comments='This is my first attempt at creating a Windows Installer Merge Module'
                Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />

   </Module>
</Wix>

You can, if you wish, compile and link that code. You'll get a very small and not very interesting .msm file from light. So, let's add a text file to this Merge Module like we did to the Windows Installer package above. First, create a text file called "readme2.txt" and put a different message to yourself in there. Then, update the source code to include the new file:

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Module Id='TestModule' Guid='87654321-4321-4321-4321-210987654321' Language='1033' Version='1.0.0.0'>
      <Package Id='87654321-4321-4321-4321-210987654321' Description='My first Merge Module'
                Comments='This is my first attempt at creating a Windows Installer Merge Module'
                Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />

      <Directory Id='TARGETDIR' Name='SourceDir'>
         <Directory Id='MyModuleDirectory' Name='.'>
            <Component Id='MyModuleComponent' Guid='87654321-4321-4321-4321-110987654321'>
               <File Id='readme2' Name='readme2.txt' src='readme2.txt' />
            </Component>
         </Directory>
      </Directory>
   </Module>
</Wix>

That's it! You now have a Merge Module that can be shared with other teams to install your "readme2.txt" file. Now that we have a Merge Module, let's actually use it in a Windows Installer package.

Incorporating a Merge Module into a .wxs file

Merge Modules can only be merged into Windows Installer package. Fortunately, we have a .wxs file that creates a Windows Installer package from our first experiments with WiX. So, let's add the two lines (yes, only two lines are necessary) to merge in your new Module. Open your "product.wxs" source file again, and add:

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Product Id='12345678-1234-1234-1234-123456789012' Name='Test Package' Language='1033'
             Version='1.0.0.0' Manufacturer='Microsoft Corporation'>
      <Package Id='12345678-1234-1234-1234-123456789012' Description='My first Windows Installer package'
               Comments='This is my first attempt at creating a Windows Installer database'
               Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />

      <Media Id='1' Cabinet='product.cab' EmbedCab='yes' />

      <Directory Id='TARGETDIR' Name='SourceDir'>
         <Directory Id='ProgramFilesFolder' Name='PFiles'>
            <Directory Id='MyDir' Name='TestProg' LongName='Test Program'>
               <Component Id='MyComponent' Guid='12345678-1234-1234-1234-123456789012'>
                  <File Id='readme' Name='readme.txt' DiskId='1' src='readme.txt' />
               </Component>

               <Merge Id='MyModule' Language='1033' src='module.msm' DiskId='1' />
            </Directory>
         </Directory>
      </Directory>

      <Feature Id='MyFeature' Title='My 1st Feature' Level='1'>
         <ComponentRef Id='MyComponent' />
         <MergeRef Id='MyModule' />
      </Feature>
   </Product>
</Wix>

Now when you compile your Windows Installer package source file, it will include the installation logic and files from the Merge Module. The next time you install the "product.msi", you should see two text files in the "Test Program" directory instead of one.


Adding Custom Actions

Now that you’re comfortable with the basics for creating Windows Installer packages, let’s take it to the next level and add a CustomAction. Since every release of the Windows Installer XML toolset comes with a drop of the WiX Server CustomActions, we’ll use those for our example. So go now to the wix\bin\ca directory and copy the "sca*.dll" to the same directory as your "product.wxs" and “readme.txt” files. You should have "scasched.dll" and "scaexec.dll".

Rather than put the CustomAction definitions in the same source file as our product definition, let's exercise a little modularity and create a new source file to define the CustomActions called "sca.wxs". Let's begin by adding the immediate CustomAction that reads the custom server tables and schedules the deferred actions.

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Fragment Id="ServerCustomActions">
      <CustomAction Id='ConfigureIIs' BinaryKey='ScaSchedule' DllEntry='ConfigureIIs' Execute='immediate'
                    Return='check'/>
      <CustomAction Id='ConfigureSql' BinaryKey='ScaSchedule' DllEntry='ConfigureSql' Execute='immediate'
                    Return='check'/>

      <Binary Id='ScaSchedule' src='scasched.dll'/>
   </Fragment>
</Wix>

That little bit of code should compile but it will not link. Remember linking requires that you have an entry section and a <Fragment/> alone is not an entry section. We would need to link this source file along with a source file that contained <Product/> or <Module/> to successfully complete. Before we bother getting everything to link properly, let's add the deferred CustomActions to this source file since they are as important as the immediate CustomActions you already added.

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Fragment Id="ServerCustomActions">
      <CustomAction Id='ConfigureIIs' BinaryKey='ScaSchedule' DllEntry='ConfigureIIs' Execute='immediate'
                    Return='check'/>
      <CustomAction Id='ConfigureSql' BinaryKey='ScaSchedule' DllEntry='ConfigureSql' Execute='immediate'
                    Return='check'/>

      <CustomAction Id='ErrorOut' BinaryKey='ScaExecute' DllEntry='ErrorOut' Execute='deferred'
                    Return='check'/>

      <CustomAction Id='StartMetabaseTransaction' BinaryKey='ScaExecute'
                    DllEntry='StartMetabaseTransaction' Execute='deferred' Return='check'/>
      <CustomAction Id='RollbackMetabaseTransaction' BinaryKey='ScaExecute'
                    DllEntry='RollbackMetabaseTransaction' Execute='rollback' Return='check'/>
      <CustomAction Id='CommitMetabaseTransaction' BinaryKey='ScaExecute'
                    DllEntry='CommitMetabaseTransaction' Execute='commit' Return='check'/>

      <CustomAction Id='CreateMetabaseKey' BinaryKey='ScaExecute'
                    DllEntry='CreateMetabaseKey' Execute='deferred' Return='check'/>
      <CustomAction Id='DeleteMetabaseKey' BinaryKey='ScaExecute'
                    DllEntry='DeleteMetabaseKey' Execute='deferred' Return='check'/>
      <CustomAction Id='CreateAspApp' BinaryKey='ScaExecute'
                    DllEntry='CreateAspApp' Execute='deferred' Return='check'/>
      <CustomAction Id='WriteMetabaseValue' BinaryKey='ScaExecute'
                    DllEntry='WriteMetabaseValue' Execute='deferred' Return='check'/>
      <CustomAction Id='WriteMetabaseMultiString' BinaryKey='ScaExecute'
                    DllEntry='WriteMetabaseMultiString' Execute='deferred' Return='check'/>
      <CustomAction Id='DeleteMetabaseMultiString' BinaryKey='ScaExecute'
                    DllEntry='DeleteMetabaseMultiString' Execute='deferred' Return='check'/>

      <CustomAction Id='CreateDatabase' BinaryKey='ScaExecute'
                    DllEntry='CreateDatabase' Execute='deferred' Return='check'/>
      <CustomAction Id='DropDatabase' BinaryKey='ScaExecute'
                    DllEntry='DropDatabase' Execute='deferred' Return='check'/>
      <CustomAction Id='ExecuteSqlStrings' BinaryKey='ScaExecute'
                    DllEntry='ExecuteSqlStrings' Execute='deferred' Return='check'/>
      <CustomAction Id='RollbackExecuteSqlStrings' BinaryKey='ScaExecute'
                    DllEntry='ExecuteSqlStrings' Execute='rollback' Return='check'/>

      <Binary Id='ScaSchedule' src='scasched.dll'/>
      <Binary Id='ScaExecute' src='scaexec.dll'/>
   </Fragment>
</Wix>

Okay, that's it. We're done with editing the "sca.wxs" source file. You have successfully defined all of the entry points into the WiX Server CustomActions. Now, how about we add a call to the WiX Server CustomActions to the example product.wxs source file you've been working with so far. Instead of configuring IIS or SQL Server (and requiring you to have one of them installed), let's just add a call to the CustomAction I use to inject errors into the installation process for testing purposes. That's the "ErrorOut" CustomAction.

<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
   <Product Id='12345678-1234-1234-1234-123456789012' Name='Test Package' Language='1033'
            Version='1.0.0.0' Manufacturer='Microsoft Corporation'>
      <Package Id='12345678-1234-1234-1234-123456789012'
            Description='My first Windows Installer package'
            Comments='This is my first attempt at creating a Windows Installer database'
            Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />

      <Media Id='1' Cabinet='product.cab' EmbedCab='yes' />

      <Directory Id='TARGETDIR' Name='SourceDir'>
         <Directory Id='ProgramFilesFolder' Name='PFiles'>
            <Directory Id='MyDir' Name='TestProg' LongName='Test Program'>
               <Component Id='MyComponent' Guid='12345678-1234-1234-1234-123456789012'>
                  <File Id='readme' Name='readme.txt' DiskId='1' src='readme.txt' />
               </Component>

               <Merge Id='MyModule' Language='1033' src='module.msm' DiskId='1' />
            </Directory>
         </Directory>
      </Directory>

      <Feature Id='MyFeature' Title='My 1st Feature' Level='1'>
         <ComponentRef Id='MyComponent' />
         <MergeRef Id='MyModule' />
      </Feature>

      <InstallExecuteSequence>
         <Custom Action='ErrorOut' After='InstallFiles'/>
      </InstallExecuteSequence>
   </Product>
</Wix>

Those three lines are all you need to add to your Windows Installer package source file to call the "ErrorOut" CustomAction. Now that we have two files to link together our call to light.exe gets a little more complicated. Here are the compile, link, and installation steps.

C:\test> candle product.wxs module.wxs sca.wxs
Microsoft (R) Windows Installer Xml Compiler version 1.0.1256.19889
Copyright (C) Microsoft Corporation 2003. All rights reserved.

product.wxs
module.wxs
sca.wxs

C:\test> light module.wixobj
Microsoft (R) Windows Installer Xml Linker version 1.0.1256.19889
Copyright (C) Microsoft Corporation 2003. All rights reserved.

C:\test> light product.wixobj sca.wixobj –out product.msi
Microsoft (R) Windows Installer Xml Linker version 1.0.1220.15022
Copyright (C) Microsoft Corporation 2003. All rights reserved

C:\test> msiexec /i product.msi

Don't be alarmed when the MSI mysteriously starts rolling back the installation. Remember after installing the files the "ErrorOut" CustomAction is called and that forces the installation to fail. MSI then rolls back the files and silently returns. Adding a success and an error dialog are excercises left to the interested reader.


Msi Tables to WiX Schema

In the WiX schema, its not always entirely obvious how the tables from the Windows Installer schema map to the WiX schema. Below are some helpful hints on how to figure out the relationships between the two schemas.

DuplicateFile Table

This is authored using a CopyFile node nested under a File node. You only need to set the Id, DestinationFolder, and DestinationName attributes.

LaunchCondition Table

This is authored using a Condition node authored under Fragment or Product. You only need to set the Message attribute.

LockPermissions Table

This is authored using Permission.

MoveFile Table

This is authored using a CopyFile node nested under a Component node. You will need to set all attributes except Delete. Set Delete to 'yes' in order to use the msidbMoveFileOptionsMove option.

PublishComponent Table

The PublishComponent functionality is available in WiX by using a Category. Here is a small sample of what a PublishComponent record would look like in MSI, then in WiX notation.

MSI
ComponentId | Qualifier | Component_ | AppData | Feature_
{11111111-2222-3333-4444-5555555555555} | 1033 | MyComponent | Random Data | MyFeature
WiX
<Component Id='MyComponent' Guid='87654321-4321-4321-4321-110987654321'>
     <Category Id='11111111-2222-3333-4444-5555555555555' AppData='Random Data'
               Qualifier='1033'/>
</Component>
.
.
.
<Feature Id='MyFeature' Level='1'>
     <ComponentRef Id='MyComponent'/>
</Feature>

RemoveIniFile

This is authored using IniFile. Just set the Action attribute to 'removeLine' or 'removeTag' as appropriate.

RemoveRegistry Table

This is authored using Registry. Simply set the Action attribute to 'remove' or 'removeKey' (as appropriate) in order to get an entry in the RemoveRegistry table.


Wix Schema

Copyright (c) Microsoft Corporation. All rights reserved.

The use and distribution terms for this software are covered by the Common Public License 1.0 (http://opensource.org/licenses/cpl.php) which can be found in the file CPL.TXT at the root of this distribution. By using this software in any fashion, you are agreeing to be bound by the terms of this license.

You must not remove this notice, or any other, from this software.

Schema for describing Windows Installer database files (.msi/.msm/.pcp).

Root Element
  • Wix
Target Namespace
http://schemas.microsoft.com/wix/2003/01/wi
Document Should Look Like
  • <?xml version="1.0"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
    .
    .
    .
    </Wix>


AdminExecuteSequence

Description
None
Parents
Fragment, Module, Product
Inner Text (xs:string)
This element may have inner text.
Children
Choice of elements (min: 0, max: unbounded)
  • CostFinalize (min: 0, max: unbounded): Ends the internal installation costing process begun by the CostInitialize action.
  • CostInitialize (min: 0, max: unbounded): Initiates the internal installation costing process.
  • Custom (min: 0, max: unbounded): Use to sequence a custom action.
  • FileCost (min: 0, max: unbounded): Initiates dynamic costing of standard installation actions.
  • InstallAdminPackage (min: 0, max: unbounded): Copies the product database to the administrative installation point.
  • InstallFiles (min: 0, max: unbounded): Copies files specified in the File table from the source directory to the destination directory.
  • InstallFinalize (min: 0, max: unbounded): Marks the end of a sequence of actions that change the system.
  • InstallInitialize (min: 0, max: unbounded): Marks the beginning of a sequence of actions that change the system.
  • InstallValidate (min: 0, max: unbounded): Verifies that all costed volumes have enough space for the installation.
  • LaunchConditions (min: 0, max: unbounded): Queries the LaunchCondition table and evaluates each conditional statement recorded there.
  • ResolveSource (min: 0, max: unbounded): Determines the location of the source and sets the SourceDir property if the source has not been resolved yet.
Attributes
None
See Also
Wix Schema


AdminUISequence

Description
None
Parents
Fragment, Module, Product, UI
Inner Text (xs:string)
This element may have inner text.
Children
Choice of elements (min: 0, max: unbounded)
  • CostFinalize (min: 0, max: unbounded): Ends the internal installation costing process begun by the CostInitialize action.
  • CostInitialize (min: 0, max: unbounded): Initiates the internal installation costing process.
  • Custom (min: 0, max: unbounded): Use to sequence a custom action.
  • ExecuteAction (min: 0, max: unbounded): Initiates the execution sequence.
  • FileCost (min: 0, max: unbounded): Initiates dynamic costing of standard installation actions.
  • InstallAdminPackage (min: 0, max: unbounded): Copies the product database to the administrative installation point.
  • InstallFiles (min: 0, max: unbounded): Copies files specified in the File table from the source directory to the destination directory.
  • InstallFinalize (min: 0, max: unbounded): Marks the end of a sequence of actions that change the system.
  • InstallInitialize (min: 0, max: unbounded): Marks the beginning of a sequence of actions that change the system.
  • InstallValidate (min: 0, max: unbounded): Verifies that all costed volumes have enough space for the installation.
  • LaunchConditions (min: 0, max: unbounded): Queries the LaunchCondition table and evaluates each conditional statement recorded there.
  • Show (min: 0, max: unbounded)
Attributes
None


AdvertiseExecuteSequence

Description
None
Parents
Fragment, Module, Product
Inner Text (xs:string)
This element may have inner text.
Children
Choice of elements (min: 0, max: unbounded)
  • CostFinalize (min: 0, max: unbounded): Ends the internal installation costing process begun by the CostInitialize action.
  • CostInitialize (min: 0, max: unbounded): Initiates the internal installation costing process.
  • CreateShortcuts (min: 0, max: unbounded): Manages the creation of shortcuts.
  • Custom (min: 0, max: unbounded): Use to sequence a custom action. The only custom actions that are allowed in the AdvtExecuteSequence are type 19 (0x013) type 35 (0x023) and type 51 (0x033).
  • InstallFinalize (min: 0, max: unbounded): Marks the end of a sequence of actions that change the system.
  • InstallInitialize (min: 0, max: unbounded): Marks the beginning of a sequence of actions that change the system.
  • InstallValidate (min: 0, max: unbounded): Verifies that all costed volumes have enough space for the installation.
  • MsiPublishAssemblies (min: 0, max: unbounded): Manages the advertisement of CLR and Win32 assemblies.
  • PublishComponents (min: 0, max: unbounded): Manages the advertisement of the components from the PublishComponent table.
  • PublishFeatures (min: 0, max: unbounded): Writes each feature's state into the system registry.
  • PublishProduct (min: 0, max: unbounded): Manages the advertisement of the product information with the system.
  • RegisterClassInfo (min: 0, max: unbounded): Manages the registration of COM class information with the system.
  • RegisterExtensionInfo (min: 0, max: unbounded): Manages the registration of extension related information with the system.
  • RegisterMIMEInfo (min: 0, max: unbounded): Registers MIME-related registry information with the system.
  • RegisterProgIdInfo (min: 0, max: unbounded): Manages the registration of OLE ProgId information with the system.
Attributes
None


AllocateRegistrySpace

Description
Ensures the needed amount of space exists in the registry. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


AppData

Description
Optional way for defining AppData, generally used for complex CDATA.
Parents
Category


AppId

Description
Application ID containing DCOM information for the associated application GUID. If this element is nested under a Fragment, Module, or Product element, it must be advertised.
Parents
Component, File, Fragment, Module, Product, TypeLib
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • Class (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | uuid | Set this value to the AppID GUID that corresponds to the named executable. | required
ActivateAtStorage | YesNoType | Set this value to 'yes' to configure the client to activate on the same system as persistent storage.
Advertise | YesNoType | Set this value to 'yes' in order to create a normal AppId table row. Set this value to 'no' in order to generate Registry rows that perform similar registration (without the often problematic Windows Installer advertising behavior).
Description | xs:string | Set this value to the description of the AppId. It can only be specified when the AppId is not being advertised.
DllSurrogate | xs:string | Set this value to specify that the class is a DLL that is to be activated in a surrogate EXE process, and the surrogate process to be used is the path of a surrogate EXE file specified by the value.
LocalService | xs:string | Set this value to the name of a service to allow the object to be installed as a Win32 service.
RemoteServerName | xs:string | Set this value to the name of the remote server to configure the client to request the object be run at a particular machine whenever an activation function is called for which a COSERVERINFO structure is not specified.
RunAsInteractiveUser | YesNoType | Set this value to 'yes' to configure a class to run under the identity of the user currently logged on and connected to the interactive desktop when activated by a remote client without being written as a Win32 service.
ServiceParameters | xs:string | Set this value to the parameters to be passed to a LocalService on invocation.
Remarks
When being used in unadvertised mode, the attributes in the AppId element correspond to registry keys as follows (values that can be specified in authoring are in bold):
Id
In General
[HKCR\AppID\{Id}]
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
ActivateAtStorage
In General
[HKCR\AppID\{Id}]
ActivateAtStorage="ActivateAtStorage"
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
ActivateAtStorage="Y"
Description
In General
[HKCR\AppID\{Id}]
@="Description"
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
@="My AppId Description"
DllSurrogate
In General
[HKCR\AppID\{Id}]
DllSurrogate="DllSurrogate"
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
DllSurrogate="C:\surrogate.exe"
LocalService
In General
[HKCR\AppID\{Id}]
LocalService="LocalService"
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
LocalService="MyServiceName"
RemoteServerName
In General
[HKCR\AppID\{Id}]
RemoteServerName="RemoteServerName"
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
RemoteServerName="MyRemoteServer"
RunAsInteractiveUser
In General
[HKCR\AppID\{Id}]
RunAs="RunAsInteractiveUser"
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
RunAs="Interactive User"
ServiceParameters
In General
[HKCR\AppID\{Id}]
ServiceParameters="ServiceParameters"
Specific Example
[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
ServiceParameters="-param"
See Also
Wix Schema, AppId


AppSearch

Description
Uses file signatures to search for existing versions of products. The AppSearch action may use this information to determine where upgrades are to be installed. The AppSearch action can also be used to set a property to the existing value of an registry or .ini file entry. AppSearch should be authored into the InstallUISequence table and InstallExecuteSequence table. The installer prevents The AppSearch action from running in the InstallExecuteSequence sequence if the action has already run in InstallUISequence sequence. The AppSearch action searches for file signatures using the CompLocator table first, the RegLocator table next, then the IniLocator table, and finally the DrLocator table. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, ComponentSearch, FileSearch, IniFileSearch, RegistrySearch


AssemblyName

Description
The MsiAssemblyName table specifies the schema for the elements of a strong assembly cache name for a .NET Framework or Win32 assembly. Consider using the Assembly attribute on File element to have the toolset populate these entries automatically.
Parents
File
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Name of the attribute associated with the value specified in the Value column. | required
Value | xs:string | Value associated with the name specified in the Name column.


Billboard

Description
Billboard to display during install of a Feature.
Parents
BillboardAction
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Control (min: 0, max: unbounded): Can only have controls of type: Text, Bitmap, Icon, and custom
Attributes
Name | Type | Description | Usage
Id | xs:string | Unique identifier for the Billboard. | required
Feature | xs:string | Feature whose state determines if the Billboard is shown.


BillboardAction

Description
Billboard action during which child Billboards are displayed.
Parents
UI
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Billboard (min: 1, max: unbounded): Order of Billboard elements determines order of display
Attributes
Name | Type | Description | Usage
Id | xs:string | Action name that determines when the Billboard should be shown. | required


Binary

Description
Binary data used for CustomAction elements and UI controls.
Parents
Fragment, Module, Product, SqlScript, UI
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | The Id cannot by longer than 55 characters. In order to prevent errors in cases where the Id is modularized, it should not be longer than 18 characters. | required
src | xs:string | Path to the binary file. | required


BindImage

Description
Binds each executable or DLL that must be bound to the DLLs imported by it. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Category

Description
Qualified published component for parent Component.
Parents
Component
Inner Text
None
Children
Sequence (min: 0, max: unbounded)
  1. AppData (min: 0, max: unbounded): Optional way for defining AppData, generally used for complex CDATA.
Attributes
Name | Type | Description | Usage
Id | uuid | A string GUID that represents the category of components being grouped together. | required
AppData | xs:string | An optional localizable text describing the category. The string is commonly parsed by the application and can be displayed to the user. It should describe the category.
Feature | xs:string | Feature that controls the advertisement of the category. Defaults to the primary Feature for the parent Component .
Qualifier | xs:string | A text string that qualifies the value in the Id attribute. A qualifier is used to distinguish multiple forms of the same Component, such as a Component that is implemented in multiple languages. | required


CCPSearch

Description
Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. The CCPSearch action should be authored into the InstallUISequence table and InstallExecuteSequence table. The installer prevents the CCPSearch action from running in the InstallExecuteSequence sequence if the action has already run in InstallUISequence sequence. The CCPSearch action must come before the RMCCPSearch action. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, RMCCPSearch, ComplianceCheck


Certificate

Description
SSL Certificates
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
BinaryKey | xs:string
CertificatePath | xs:string
Overwrite | YesNoType
PFXPassword | xs:string
Request | YesNoType
StoreLocation xs:enumeration Possible values: {'currentUser', 'localMachine'}.
 required
StoreName xs:enumeration Possible values: {'ca', 'my', 'request', 'root'}.
 required


Class

Description
COM Class registration for parent Component.
Parents
AppId, Component, File, TypeLib
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • FileTypeMask (min: 0, max: unbounded)
  • Interface (min: 0, max: unbounded): These Interfaces will be registered with the parent Class and TypeLib (if present).
  • ProgId (min: 0, max: unbounded): A ProgId associated with Class must be a child element of the Class element
Attributes
Name | Type | Description | Usage
Id | uuid | The Class identifier (CLSID) of a COM server. | required
Advertise | YesNoType | Set this value to "yes" in order to create a normal Class table row. Set this value to "no" in order to generate Registry rows that perform similar registration (without the often problematic Windows Installer advertising behavior).
AppId | uuid | This attribute is only allowed when a Class is advertised. Using this attribute will reference an Application ID containing DCOM information for the associated application GUID. The value must correspond to an AppId/@Id of an AppId element nested under a Fragment, Module, or Product element. To associate an AppId with a non-advertised class, nest the class within a parent AppId element.
Argument | xs:string | This column is optional only when the Context column is set to "LocalServer" or "LocalServer32" server context. The text is registered as the argument against the OLE server and is used by OLE for invoking the server. Note that the resolution of properties in the Argument field is limited. A property formatted as [Property] in this field can only be resolved if the property already has the intended value when the component owning the class is installed. For example, for the argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the component that owns the class.
Context List of ClassContextType Value is a space-delimited list.
The server context for this server. 		required
Description | xs:string | Localized description associated with the Class ID and Program ID.
Handler | xs:string | The default inproc handler. May be optionally provided only for Context = LocalServer or LocalServer32. Value of "1" creates a 16-bit InprocHandler (appearing as the InprocHandler value). Value of "2" creates a 32-bit InprocHandler (appearing as the InprocHandler32 value). Value of "3" creates 16-bit as well as 32-bit InprocHandlers. A non-numeric value is treated as a system file that serves as the 32-bit InprocHandler (appearing as the InprocHandler32 value).
Icon | xs:string | The file providing the icon associated with this CLSID. Reference to an Icon element (should match the Id attribute of an Icon element). This is currently not supported if the value of the Advertise attribute is "no".
IconIndex | xs:integer | Icon index into the icon file.
Insertable | YesNoType | May only be specified if the value of the Advertise attribute is "no".
Programmable | YesNoType | May only be specified if the value of the Advertise attribute is "no".
RelativePath | YesNoType | When the value is "yes", the bare file name can be used for COM servers. The installer registers the file name only instead of the complete path. This enables the server in the current directory to take precedence and allows multiple copies of the same component.
SafeForInitializing | YesNoType | May only be specified if the value of the Advertise attribute is "no".
SafeForScripting | YesNoType | May only be specified if the value of the Advertise attribute is "no".
Server | xs:string | May only be specified if the value of the Advertise attribute is "no". File Id of the COM server file. If this element is nested under a File element, this value defaults to the value of the parent File/@Id.
ThreadingModel xs:enumeration Possible values: {'apartment', 'free', 'both', 'neutral', 'single', 'rental'}.
May only be specified if the value of the Advertise attribute is "no".
Version | xs:string | May only be specified if the value of the Advertise attribute is "no".
Remarks
When being used in unadvertised mode, the attributes in the Class element correspond to registry keys as follows (values that can be specified in authoring are in bold):
Id/Context/Server
In General
[HKCR\CLSID\{Id}\Context1]
@="[!Server]"
[HKCR\CLSID\{Id}\Context2]
@="[!Server]"
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer]
@="[!comserv.dll]"
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32]
@="[!comserv.dll]"
AppId
In General
[HKCR\CLSID\{Id}]
AppId="{AppId}"
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
AppId="{00000000-89AB-0000-0123-000000000000}"
Argument
In General
[HKCR\CLSID\{Id}\Context]
@="[!Server] Argument"
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32]
@="[!comserv.dll] /arg1 /arg2 /arg3"
Description
In General
[HKCR\CLSID\{Id}]
@="Description"
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}]
@="Description of Example COM Component"
Handler
In General
Value "1" specified:
[HKCR\CLSID\{Id}\InprocHandler]
@="ole.dll"
Value "2" specified:
[HKCR\CLSID\{Id}\InprocHandler32]
@="ole32.dll"
Value "3" specified:
[HKCR\CLSID\{Id}\InprocHandler]
@="ole.dll"
[HKCR\CLSID\{Id}\InprocHandler32]
@="ole32.dll"
Other value specified:
[HKCR\CLSID\{Id}\InprocHandler32]
@="Handler"
Specific Example (for other value)
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\InprocHandler32]
@="handler.dll"
Icon/IconIndex
This is not currently handled properly.
Insertable
In General
Value "no" specified:
[HKCR\CLSID\{Id}\NotInsertable]
Value "yes" specified:
[HKCR\CLSID\{Id}\Insertable]
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Insertable]
Programmable
In General
Value "yes" specified:
[HKCR\CLSID\{Id}\Programmable]
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Programmable]
RelativePath
Unsupported. Please contribute this back to WiX if you know.
SafeForInitializing
In General
Value "yes" specified:
[HKCR\CLSID\{Id}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]
SafeForScripting
In General
Value "yes" specified:
[HKCR\CLSID\{Id}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}]
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}]
ThreadingModel
In General
[HKCR\CLSID\{Id}\Context]
ThreadingModel="ThreadingModel"
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32]
ThreadingModel="Apartment"
TypeLibId (from parent TypeLib/@Id)
In General
[HKCR\CLSID\{Id}\TypeLib]
@="{TypeLibId}"
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\TypeLib]
@="{11111111-89AB-1111-0123-111111111111}"
Version
In General
[HKCR\CLSID\{Id}\Version]
@="Version"
Specific Example
[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Version]
@="1.0.0.0"
See Also
Wix Schema, AppId


Column

Description
Column definition for a Custom Table
Parents
CustomTable
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Identifier for the column. | required
Category xs:enumeration Possible values: {'Text', 'UpperCase', 'LowerCase', 'Integer', 'DoubleInteger', 'TimeDate', 'Identifier', 'Property', 'Filename', 'WildCardFilename', 'Path', 'Paths', 'AnyPath', 'DefaultDir', 'RegPath', 'Formatted', 'Template', 'Condition', 'Guid', 'Version', 'Language', 'Binary', 'CustomSource', 'Cabinet', 'Shortcut'}.
Category of this column.
Description | xs:string | Description of this column.
KeyColumn | xs:integer | Column in the table in KeyTable attribute.
KeyTable | xs:string | Table in which this column is an external key. Can be semicolon delimited.
Localizable | YesNoType | Whether this column can be localized.
MaxValue | xs:integer | Maximum value for a numeric value, date or version in this column.
MinValue | xs:integer | Minimum value for a numeric value, date or version in this column.
Modularize | ModularizeType | How this column should be modularized, if at all.
Nullable | YesNoType | Whether this column can be left null.
PrimaryKey | YesNoType | Whether this column is a primary key.
Set | xs:string | Semicolon delimited list of permissible values.
Type xs:enumeration Possible values: {'binary', 'int', 'string'}.
The type of this column. 		required
Width | xs:integer | Width of this column.


ComboBox

Description
Set of items for a particular ComboBox control tied to an install Property
Parents
UI
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. ListItem (min: 0, max: unbounded): entry for ComboBox table
Attributes
Name | Type | Description | Usage
Property | xs:string | Property tied to this group | required


ComplianceCheck

Description
Adds a row to the CCPSearch table.
Parents
Fragment, Product
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. ComplianceDrive (min: 0, max: 1): Starts searches from the CCP_DRIVE.
  2. ComponentSearch (min: 0, max: unbounded)
  3. RegistrySearch (min: 0, max: unbounded)
  4. IniFileSearch (min: 0, max: unbounded)
  5. DirectorySearch (min: 0, max: unbounded)
  6. FileSearch (min: 0, max: unbounded)
Attributes
None
See Also
Wix Schema, Property


ComplianceDrive

Description
Sets the parent of a nested DirectorySearch element to CCP_DRIVE.
Parents
ComplianceCheck, Property
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. DirectorySearch (min: 1, max: 1)
Attributes
None


Component

Description
Component for parent Directory
Parents
Directory, DirectoryRef
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • AppId (min: 0, max: unbounded)
  • Category (min: 0, max: unbounded)
  • Certificate (min: 0, max: unbounded)
  • Class (min: 0, max: unbounded)
  • Condition (min: 0, max: unbounded)
  • CopyFile (min: 0, max: unbounded)
  • CreateFolder (min: 0, max: unbounded)
  • Environment (min: 0, max: unbounded)
  • Extension (min: 0, max: unbounded)
  • File (min: 0, max: unbounded)
  • FileShare (min: 0, max: unbounded)
  • IniFile (min: 0, max: unbounded)
  • Interface (min: 0, max: unbounded)
  • IsolateComponent (min: 0, max: unbounded)
  • ODBCDataSource (min: 0, max: unbounded)
  • ODBCDriver (min: 0, max: unbounded)
  • ODBCTranslator (min: 0, max: unbounded)
  • ProgId (min: 0, max: unbounded)
  • Registry (min: 0, max: unbounded)
  • RemoveFile (min: 0, max: unbounded)
  • RemoveFolder (min: 0, max: unbounded)
  • ReserveCost (min: 0, max: unbounded)
  • ServiceConfig (min: 0, max: unbounded)
  • ServiceControl (min: 0, max: unbounded)
  • ServiceInstall (min: 0, max: unbounded)
  • Shortcut (min: 0, max: unbounded)
  • SqlDatabase (min: 0, max: unbounded)
  • SqlScript (min: 0, max: unbounded)
  • SqlString (min: 0, max: unbounded)
  • TypeLib (min: 0, max: unbounded)
  • User (min: 0, max: unbounded)
  • WebAppPool (min: 0, max: unbounded)
  • WebDir (min: 0, max: unbounded)
  • WebFilter (min: 0, max: unbounded)
  • WebProperty (min: 0, max: unbounded)
  • WebServiceExtension (min: 0, max: unbounded)
  • WebSite (min: 0, max: unbounded)
  • WebVirtualDir (min: 0, max: unbounded)
  • Any Element namespace='##other' processContents='lax'
Attributes
Name | Type | Description | Usage
Id | xs:string | Component identifier; this is the primary key for identifying components. | required
ComPlusFlags | xs:integer | Set this attribute to create a ComPlus entry. The value should be the export flags used during the generation of the .msi file. For more information see the COM+ documentation in the Platform SDK.
DiskId | xs:string | This attribute must be set either on a Component element or all of its children File elements. The value of this attribute should correspond to the Id attribute of a Media element authored elsewhere. By creating this connection between a component (or particular files), you set the packaging options to the values specified in the Media element (values such as compression level, cab embedding, etc...).
DriverAddRemovePrograms | YesNoType | Specifies that the DIFxApp CustomActions should add an entry in the Add/Remove Programs Control Panel applet. The default is 'yes'.
DriverForceInstall | YesNoType | Specifies that the DIFxApp CustomActions should force the installation of a new Plug and Play driver on a device, even if the currently installed driver on the device is a better match than the new driver. Specifying 'no' is an excellent way to ensure the DIFxApp CustomActions recognize the Component contains a driver for installation. The default is null which means the Component does not install a driver via DIFxApp CustomActions. See http://www.microsoft.com/whdc/driver/install/difxtools.mspx for more information.
DriverPlugAndPlayPrompt | YesNoType | Specifies that the DIFxApp CustomActions should prompt the user to connect the Plug and Play device if it is not connected. The default is 'yes'.
DriverSequence | xs:integer | Specifies an optional installation sequence number. DIFxApp CustomActions install the driver packages in an installation package in the order of increasing sequence numbers. The same sequence number can be used for more than one driver; however, the order in which packages with the same sequence number are actually installed cannot be determined.
Guid | uuidorexample | String GUID (without the '{' and '}' braces) that uniquely identifies a component's language, version, and platform. If this attribute is present, the GUID will become the identifier used by the Windows Installer to track this component on the user's machine. If this value is not specified, then the component cannot be removed or repaired by the installer (it is essentially a permanent component). Therefore, a GUID should always be specified for a component which contains any resources that may need to be patched in the future.
KeyPath | YesNoType | If this attribute's value is set to 'yes', then the Directory of this Component is used as the KeyPath. To set a Registry key or File as the KeyPath of a component, set the KeyPath attribute to 'yes' on one of those child elements.
Location xs:enumeration Possible values: {'local', 'source', 'either'}.
This attribute is ignored when the Component is a child of Feature. Set the value to 'local' to prevent the component from running from the source or the network (this is the default behavior if this attribute is not set). Set the value to 'source' to enforce that the component can only be run from the source (it cannot be run from the user's computer). Set the value to 'either' to allow the component to run from source or locally.
NeverOverwrite | YesNoType | If this attribute is set to 'yes', the installer does not install or reinstall the component if a key path file or a key path registry entry for the component already exists. The application does register itself as a client of the component. Use this flag only for components that are being registered by the Registry table. Do not use this flag for components registered by the AppId, Class, Extension, ProgId, MIME, and Verb tables.
Permanent | YesNoType | If this attribute is set to 'yes', the installer does not remove the component during an uninstall. The installer registers an extra system client for the component in the Windows Installer registry settings (which basically just means that at least one product is always referencing this component). Note that this option differs from the behavior of not setting a guid because although the component is permanent, it is still patchable (because Windows Installer still tracks it), it's just not uninstallable.
SharedDllRefCount | YesNoType | If this attribute's value is set to 'yes', the installer increments the reference count in the shared DLL registry of the component's key file. If this bit is not set, the installer increments the reference count only if the reference count already exists.
Transitive | YesNoType | If this attribute is set to 'yes', the installer reevaluates the value of the statement in the Condition upon a reinstall. If the value was previously False and has changed to True, the installer installs the component. If the value was previously True and has changed to False, the installer removes the component even if the component has other products as clients.
Win64 | YesNoType | Set this attribute to 'yes' to mark this as a 64-bit component. This attribute facilitates the installation of packages that include both 32-bit and 64-bit components. If this bit is not set, the component is registered as a 32-bit component. If this is a 64-bit component replacing a 32-bit component, set this bit and assign a new GUID in the Guid attribute.
Any attribute namespace='##other' processContents='lax'
See Also
Wix Schema, ComponentRef, Media


ComponentRef

Description
Create a reference to a Feature element in another Fragment.
Parents
Feature, FeatureRef, Module
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | The identifier of the Component element to reference. | required
Primary | YesNoType | Set this attribute to 'yes' in order to make the parent feature of this component the primary feature for this component. Components may belong to multiple features. By designating a feature as the primary feature of a component, you ensure that whenever a component is selected for install-on-demand (IOD), the primary feature will be the one to install it. This attribute should only be set if a component actually nests under multiple features. If a component nests under only one feature, that feature is the primary feature for the component. You cannot set more than one feature as the primary feature of a given component.
See Also
Wix Schema, Component


ComponentSearch

Description
Searches for file or directory and assigns to value of parent Property
Parents
ComplianceCheck, Property
Inner Text
None
Children
Choice of elements (min: 0, max: 1)
  • DirectorySearch (min: 0, max: 1)
  • DirectorySearchRef (min: 0, max: 1)
  • FileSearch (min: 0, max: 1)
  • FileSearchRef (min: 0, max: 1)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Guid | uuid
Type xs:enumeration Possible values: {'directory', 'file'}.
Must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element
See Also
Wix Schema, IniFileSearch, RegistrySearch


Condition

Description
None
Parents
Component, Control, Feature, Fragment, Product
Inner Text (xs:string)
Conditions for various things. The condition is specified in the inner text of the element. Under a Component element, the condition becomes the condition of the component. Under a Control element, the condition becomes a ControlCondition entry. Under a Feature element, the condition becomes a Condition entry. Under a Fragment or Product element, the condition becomes a LaunchCondition entry.
Children
None
Attributes
Name | Type | Description | Usage
Action xs:enumeration Possible values: {'default', 'enable', 'disable', 'hide', 'show'}.
Used only under Control elements and is required. Allows specific actions to be applied to a control based on the result of this condition.
Level | xs:string | Used only under Feature elements and is required. Allows modifying the level of a Feature based on the result of this condition.
Message | xs:string | Used only under Fragment or Product elements and is required. Set the value to the text to display when the condition fails and the installation must be terminated.


Configuration

Description
Defines the configurable attributes of merge module.
Parents
Module
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
ContextData | xs:string | Specifies a semantic context for the requested data.
DefaultValue | xs:string | Specifies a default value for the item in this record if the merge tool declines to provide a value.
Description | xs:string | Description for authoring.
DisplayName | xs:string | Display name for authoring.
Format xs:enumeration Possible values: {'Text', 'Key', 'Integer', 'Bitfield'}.
Specifies the format of the data being changed. 		required
HelpKeyword | xs:string | Keyword into chm file for authoring.
HelpLocation | xs:string | Location of chm file for authoring.
KeyNoOrphan | YesNoType | Does not merge rule according to rules in MSI SDK.
Name | xs:string | Defines the name of the configurable item. | required
NonNullable | YesNoType | If yes, null is not a valid entry.
Type | xs:string | Specifies the type of the data being changed.


ConfigurationData

Description
Data to use as input to a configurable merge module.
Parents
Merge
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Name | xs:string | Key into the ModuleConfiguration table. | required
Value | xs:string | Value to be passed to configurable merge module. | required


Control

Description
None
Parents
Billboard, Dialog
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Text (min: 0, max: 1): alternative to Text attribute when CDATA is needed to escape XML delimiters
  2. Choice of elements (min: 0, max: unbounded)
    • Condition (min: 0, max: unbounded): Condition to specify actions for this control based on the outcome of the condition.
    • Publish (min: 0, max: unbounded)
    • Subscribe (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Bitmap | YesNoType | only valid for RadioButton and PushButton Controls
Cancel | YesNoType | yes if this is the control invoked on cancel of dialog
CDROM | YesNoType | only valid for Volume and Directory Controls
CheckBoxValue | xs:string | Only for CheckBox control to set Property to a value on check
ComboList | YesNoType | only valid for ComboBox Controls
Default | YesNoType | yes if this control invoked by the return key
Disabled | YesNoType
Fixed | YesNoType | only valid for Volume and Directory Controls
FixedSize | YesNoType | only valid for RadioButton, PushButton, and Icon Controls
Floppy | YesNoType | only valid for Volume and Directory Controls
FormatSize | YesNoType | only valid for Text Controls
HasBorder | YesNoType | only valid for RadioButton Controls
Height | xs:integer | required
Help | xs:string
Hidden | YesNoType
Icon | YesNoType | only valid for RadioButton and PushButton Controls
IconSize xs:enumeration Possible values: {'16', '32', '48'}.
only valid for RadioButton, PushButton, and Icon Controls
Image | YesNoType | only valid for RadioButton, PushButton, and Icon Controls
Indirect | YesNoType
Integer | YesNoType
LeftScroll | YesNoType
Multiline | YesNoType | only valid for Edit Controls
NoPrefix | YesNoType | only valid for Text Controls
NoWrap | YesNoType | only valid for Text Controls
Password | YesNoType | only valid for Edit Controls
ProgressBlocks | YesNoType | only valid for ProgressBar Controls
Property | xs:string
PushLike | YesNoType | only valid for RadioButton and Checkbox Controls
RAMDisk | YesNoType | only valid for Volume and Directory Controls
Remote | YesNoType | only valid for Volume and Directory Controls
Removable | YesNoType | only valid for Volume and Directory Controls
RightAligned | YesNoType
RightToLeft | YesNoType
ShowRollbackCost | YesNoType | only valid for VolumeCostList Controls
Sorted | YesNoType | only valid for Listbox and ComboBox Controls
Sunken | YesNoType
TabSkip | YesNoType | yes if this control is skipped in the tab sequence
Text | xs:string
ToolTip | xs:string
Transparent | YesNoType | only valid for Text Controls
Type | xs:string | required
UserLanguage | YesNoType | only valid for Text Controls
Width | xs:integer | required
X | xs:integer | required
Y | xs:integer | required


CopyFile

Description
Copy or move an existing file on the target machine, or copy a file that is being installed, to another destination. When this element is nested under a File element, the parent file will be installed, then copied to the specified destination if the parent component of the file is selected for installation or removal. When this element is nested under a Component element and no FileId attribute is specified, the file to copy or move must already be on the target machine. When this element is nested under a Component element and the FileId attribute is specified, the specified file is installed, then copied to the specified destination if the parent component is selected for installation or removal (use this option to control the copy of a file in a different component by the parent component's installation state). If the specified destination directory is the same as the directory containing the original file and the name for the proposed source file is the same as the original, then no action takes place.
Parents
Component, File
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Primary key used to identify this particular entry. | required
Delete | YesNoType | This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. In other cases, if the attribute is not specified, the default value is "no" and the file is copied, not moved. Set the value to "yes" in order to move the file (thus deleting the source file) instead of copying it.
DestinationDirectory | xs:string | Set this value to the destination directory where an existing file on the target machine should be moved or copied to. This Directory must exist in the installer database at creation time. This attribute cannot be specified in conjunction with DestinationProperty.
DestinationFolder | xs:string | This attribute is deprecated; use DestinationDirectory or DestinationProperty instead.
DestinationLongName | xs:string | If the destination name of the file needs to be longer than 8.3 format, then this attribute should be specified with the long file name (in addition to the Name attribute which is always required for target systems that might not support long file names).
DestinationName | xs:string | Set this value to the localizable name to be given to the original file after it is moved or copied. If this attribute is not specified, then the destination file is given the same name as the source file.
DestinationProperty | xs:string | Set this value to a property that will have a value that resolves to the full path of the destination directory. The property does not have to exist in the installer database at creation time; it could be created at installation time by a custom action, on the command line, etc. This attribute cannot be specified in conjunction with DestinationDirectory.
FileId | xs:string | This attribute cannot be specified if the element is nested under a File element. Set this attribute's value to the identifier of a file from a different component to copy it based on the install state of the parent component.
SourceDirectory | xs:string | This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set this value to the source directory from which to copy or move an existing file on the target machine. This Directory must exist in the installer database at creation time. This attribute cannot be specified in conjunction with SourceProperty.
SourceFolder | xs:string | This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. This attribute is deprecated; use SourceDirectory or SourceProperty instead.
SourceName | xs:string | This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set this value to the localizable name of the file(s) to be copied or moved. All of the files that match the wild card will be removed from the specified directory. The value is a filename that may also contain the wild card characters "?" for any single character or "*" for zero or more occurrences of any character. If this attribute is not specified (and this element is not nested under a File element or specify a FileId attribute) then the SourceProperty attribute should be set to the name of a property that will resolve to the full path of the source filename. If the value of this attribute contains a "*" wildcard and the DestinationName attribute is specified, all moved or copied files retain the file names from their sources.
SourceProperty | xs:string | This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set this value to a property that will have a value that resolves to the full path of the source directory (or full path including file name if SourceName is not specified). The property does not have to exist in the installer database at creation time; it could be created at installation time by a custom action, on the command line, etc. This attribute cannot be specified in conjunction with SourceDirectory.
See Also
Wix Schema, RemoveFile


CostFinalize

Description
Ends the internal installation costing process begun by the CostInitialize action. Any standard or custom actions that affect costing should be sequenced before the CostInitialize action. Call the FileCost action immediately following the CostInitialize action and then call the CostFinalize action to make all final cost calculations available to the installer through the Component table. The CostFinalize action must be executed before starting any user interface sequence which allows the user to view or modify Feature table selections or directories. The CostFinalize action queries the Condition table to determine which features are scheduled to be installed. Costing is done for each component in the Component table. The CostFinalize action also verifies that all the target directories are writable before allowing the installation to continue. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, AdvertiseExecuteSequence, InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, CostInitialize, FileCost


CostInitialize

Description
Initiates the internal installation costing process. Any standard or custom actions that affect costing should be sequenced before the CostInitialize action. Call the FileCost action immediately following the CostInitialize action. Then call the CostFinalize action following the CostInitialize action to make all final cost calculations available to the installer through the Component table. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, AdvertiseExecuteSequence, InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, FileCost, CostFinalize


CreateFolder

Description
Create folder as part of parent Component.
Parents
Component
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • Permission (min: 0, max: unbounded): ACL permission
  • Shortcut (min: 0, max: unbounded): Non-advertised shortcut to this folder, Shortcut Target is preset to the folder
Attributes
Name | Type | Description | Usage
Directory | xs:string | Identifier of Directory to create. Defaults to Directory of parent Component.
See Also
Wix Schema, RemoveFolder


CreateFolders

Description
Creates empty folders for components that are set to be installed. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


CreateShortcuts

Description
Manages the creation of shortcuts. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Custom

Description
Use to sequence a custom action.
Parents
AdminExecuteSequence, AdminUISequence, AdvertiseExecuteSequence, InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
Action | xs:string | required
After | xs:string
Before | xs:string
OnExit xs:enumeration Possible values: {'success', 'cancel', 'error', 'suspend'}.
mutually exclusive with Before, After, and Sequence attributes
Sequence | xs:integer
See Also
Wix Schema, CustomAction


CustomAction

Description
Specifies a custom action to be added to the MSI CustomAction table. Various combinations of the attributes for this element correspond to different custom action types. For more information about custom actions see the MSDN documentation http://msdn.microsoft.com/library/en-us/msi/setup/summary_list_of_all_custom_action_types.asp for a "Summary List of All Custom Action Types".
Parents
Fragment, Module, Product
Inner Text (xs:string)
The text node is only valid if the Script attribute is specified. In that case, the text node contains the script to embed.
Children
None
Attributes
Name | Type | Description | Usage
BinaryKey | xs:string | This attribute is a reference to a Binary element with matching Id attribute. That binary stream contains the custom action for use during install. The custom action will not be installed into a target directory. This attribute is typically used with the DllEntry attribute to specify the custom action DLL to use for a type 1 custom action, with the ExeCommand attribute to specify a type 17 custom action that runs an embedded executable, or with the VBScriptCall or JScriptCall attributes to specify a type 5 or 6 custom action.
Directory | xs:string | This attribute specifies a reference to a Directory element with matching Id attribute containing a directory path. This attribute is typically used with the ExeCommand attribute to specify the source executable for a type 34 custom action, or with the Value attribute to specify a formatted string to place in the specified Directory table entry in a type 35 custom action.
DllEntry | xs:string | This attribute specifies the name of a function in a custom action to execute. This attribute is used with the BinaryKey attribute to create a type 1 custom action, or with the FileKey attribute to create a type 17 custom action.
Error | xs:string | This attribute specifies an index in the MSI Error table to use as an error message for a type 19 custom action that displays the error message and aborts a product's installation.
ExeCommand | xs:string | This attribute specifies the command line parameters to supply to an externally run executable. This attribute is typically used with the FileKey attribute for a type 2 custom action, the BinaryKey attribute for a type 17 custom action, the Property attribute for a type 50 custom action, or the Directory attribute for a type 34 custom action that specify the executable to run.
Execute xs:enumeration Possible values: {'commit', 'deferred', 'firstSequence', 'immediate', 'oncePerProcess', 'rollback', 'secondSequence'}.
Set this attribute to indicate the scheduling of the custom action. Value of 'commit' indicates that the custom action will run after successful completion of the installation script (at the end of the installation). Value of 'deferred' indicates that the custom action runs in-script (possibly with elevated privileges). Value of 'firstSequence' indicates that the custom action will only run in the first sequence that runs it. Value of 'immediate' means that the custom action will occur during normal processing time with user privileges. Value of 'oncePerProcess' indicates that the custom action will only run in the first sequence that runs it in the same process. Value of 'rollback' indicates that a custom action will run in the rollback sequence when a failure occurs during installation, usually to undo changes made by a deferred custom action. Value of 'secondSequence' indicates that a custom action should be run a second time if it was previously run in an earlier sequence. If this attribute is not specified the value will be defaulted to 'immediate'.
FileKey | xs:string | This attribute specifies a reference to a File element with matching Id attribute that will execute the custom action code in the file after the file is installed. This attribute is typically used with the ExeCommand attribute to specify a type 18 custom action that runs an installed executable, with the DllEntry attribute to specify an installed custom action DLL to use for a type 17 custom action, or with the VBScriptCall or JScriptCall attributes to specify a type 21 or 22 custom action.
HideTarget | YesNoType | Ensures the installer does not log the CustomActionData for the deferred custom action.
Id | xs:string | The identifier of the custom action.
Impersonate | YesNoType | This attribute specifies whether the Windows Installer, which executes as LocalSystem, should impersonate the user context of the installing user when executing this custom action. Typically the value should be 'yes', except when the custom action needs elevated privileges to apply changes to the machine.
InstallProperties | xs:string | Creates a nested install custom action. Specifies the Properties to pass to the nested installation. Use in conjunction with a PackageProductCode, PackagePath, or PackageSubstorage attribute.
JScriptCall | xs:string | Set this attribute to indicate that the custom action is written in JScript. The source should be indicated using one of the target attributes.
PackagePath | xs:string | Creates a type 23 custom action. Specifies the Formatted path to the source package for the nested installation.
PackageProductCode | uuid | Creates a type 39 custom action. Specifies the ProductCode of the nested install to locate.
PackageSubstorage | xs:string | Creates a type 7 custom action. Specifies the name of the substorage to store nested installation package.
Property | xs:string | This attribute specifies a reference to a Property element with matching Id attribute that specifies the Property to be used or updated on execution of this custom action. This attribute is typically used with the Value attribute to create a type 51 custom action that parses the text in Value and places it into the specified Property. This attribute is also used with the ExeCommand attribute to create a type 50 custom action that uses the value of the given property to specify the path to the executable. Type 51 custom actions are often useful to pass values to a deferred custom action. See http://msdn.microsoft.com/library/en-us/msi/setup/obtaining_context_information_for_deferred_execution_custom_actions.asp for more information.
Return xs:enumeration Possible values: {'asyncNoWait', 'asyncWait', 'check', 'ignore'}.
Set this attribute to set the return behavior of the custom action. Value of 'check' is default and indicates that the custom action will run synchronously and the return code will be checked for success. Value of 'ignore' indicates that the custom action will run synchronously and the return code will not be checked. Value of 'asyncNoWait' indicates that the custom action will run asyncronously and execution may continue after the installer terminates. Value of 'asyncWait' indicates that the custom action will run asynchronously but the installer will wait for the return code at sequence end.
Script xs:enumeration Possible values: {'jscript', 'vbscript'}.
Creates a type 37 or 38 custom action. The text of the element should contain the script to be embedded in the package.
TerminalServerAware | YesNoType | This attribute specifies controls whether the custom action will impersonate the installing user during per-machine installs on Terminal Server machines. Deferred execution custom actions that do not specify this attribute, or explicitly set it 'no', will run with no user impersonation on Terminal Server machines during per-machine installations. This attribute is only applicable when installing on the Windows Server 2003 family.
TSAware | YesNoType | Deprecated, use the TerminalServerAware attribute instead.
Value | xs:string | This attribute specifies a string value to use in the custom action. This attribute is typically used with the Property attribute to set the property as part of a type 51 custom action, with the Directory attribute to set a directory path in that table in a type 35 custom action, or by itself to create a type 19 error message custom action. The value can be a literal value or derived from a Property element using the formatted syntax.
VBScriptCall | xs:string | Set this attribute to indicate that the custom action is written in VBScript. The source should be indicated using one of the target attributes.
Win64 | YesNoType | Specifies that a custom action targets a 64-bit platform.
See Also
Wix Schema, Custom


CustomProperty

Description
A custom property for the PatchMetadata table.
Parents
PatchMetadata
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Company | xs:string | required
Property | xs:string | required
Value | xs:string | required


CustomTable

Description
Defines a custom table for use from a custom action.
Parents
Fragment, Module, Product
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Column (min: 0, max: unbounded): Column definition for the custom table.
  2. Row (min: 0, max: unbounded): Row definition for the custom table.
Attributes
Name | Type | Description | Usage
Id | xs:string | Identifier for the custom table. | required


Data

Description
Data item for a row of a Custom Table
Parents
Row
Inner Text (xs:string)
Element value is data the data value
Children
None
Attributes
Name | Type | Description | Usage
Column | xs:string | required


DeleteServices

Description
Stops a service and removes its registration from the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Dependency

Description
Declares a dependency on another merge module.
Parents
Module
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
RequiredId | xs:string | Identifier of the merge module required by the merge module. | required
RequiredLanguage | xs:integer | Numeric language ID of the merge module in RequiredID. | required
RequiredVersion | xs:string | Version of the merge module in RequiredID.


Dialog

Description
None
Parents
UI
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Control (min: 0, max: unbounded): Control elements belonging to this dialog
Attributes
Name | Type | Description | Usage
Id | xs:string | required
CustomPalette | YesNoType
ErrorDialog | YesNoType
Height | xs:integer | in dialog units | required
Hidden | YesNoType
KeepModeless | YesNoType
LeftScroll | YesNoType
Modeless | YesNoType
NoMinimize | YesNoType
RightAligned | YesNoType
RightToLeft | YesNoType
SystemModal | YesNoType
Title | xs:string
TrackDiskSpace | YesNoType
Width | xs:integer | in dialog units | required
X | xs:integer | in %, defaults to centered on screen (50)
Y | xs:integer | in %, defaults to centered on screen (50)


DigitalCertificate

Description
Adds a digital certificate
Parents
DigitalSignature
Inner Text (xs:string)
Element value can be hex-encoded certificate value
Children
None
Attributes
Name | Type | Description | Usage
Name | xs:string
src | xs:string | path to certificate file


DigitalSignature

Description
Adds a digital signature
Parents
Media
Inner Text (xs:string)
Element value can be hex-encoded hash value
Children
Choice of elements (min: 0, max: unbounded)
  • DigitalCertificate (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
src | xs:string | path to signature's hash file


Directory

Description
Directory layout for the product. Also specifies the mappings between source and target directories.
Parents
Directory, DirectoryRef, Fragment, Module, Product
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • Component (min: 0, max: unbounded)
  • Directory (min: 0, max: unbounded)
  • Merge (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | This value is the unique identifier of the directory entry. | required
LongName | xs:string | Set this value to the non-8.3 name for the directory. This attribute cannot be specified unless the Name attribute is used to set the short name for this directory.
LongSource | xs:string | Set this value to the non-8.3 name of the directory on the source media for systems supporting long names. This attribute cannot be specified unless the SourceName attribute sets the short source name for this directory.
Name | xs:string | The 8.3 name of the directory. Do not specify this attribute (or the LongName attribute) if this directory represents the same directory as the parent (see the Windows Installer SDK's
SourceName | xs:string | The 8.3 name of the directory on the source media. If this attribute is note specified, the Windows Installer will default to the Name attribute.
src | xs:string | Used to set the file system source for this directory's child elements.
See Also
Wix Schema, DirectoryRef


DirectoryRef

Description
Create a reference to a Directory element in another Fragment.
Parents
Fragment, Module, Product
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • Component (min: 0, max: unbounded)
  • Directory (min: 0, max: unbounded)
  • Merge (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | The identifier of the Directory element to reference. | required
src | xs:string | Used to set the file system source for this directory ref's child elements.
See Also
Wix Schema, Directory


DirectorySearch

Description
Searches for directory and assigns to value of parent Property.
Parents
ComplianceCheck, ComplianceDrive, ComponentSearch, DirectorySearch, DirectorySearchRef, IniFileSearch, Property, RegistrySearch
Inner Text
None
Children
Choice of elements (min: 0, max: 1)
  • DirectorySearch (min: 0, max: 1)
  • DirectorySearchRef (min: 0, max: 1)
  • FileSearch (min: 0, max: 1)
  • FileSearchRef (min: 0, max: 1)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Depth | xs:integer
Path | xs:string
See Also
Wix Schema, ComponentSearch, IniFileSearch, RegistrySearch


DirectorySearchRef

Description
References an existing DirectorySearch element.
Parents
ComponentSearch, DirectorySearch, DirectorySearchRef, IniFileSearch, Property, RegistrySearch
Inner Text
None
Children
Choice of elements (min: 0, max: 1)
  • DirectorySearch (min: 0, max: 1)
  • DirectorySearchRef (min: 0, max: 1)
  • FileSearch (min: 0, max: 1)
  • FileSearchRef (min: 0, max: 1)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Path | xs:string
See Also
Wix Schema, ComponentSearch, IniFileSearch, RegistrySearch


DisableRollback

Description
Disables rollback for the remainder of the installation. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize.
Parents
InstallExecuteSequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


DuplicateFiles

Description
Duplicates files installed by the InstallFiles action. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


EnsureTable

Description
Use this element to ensure that a table appears in the installer database, even if its empty.
Parents
Fragment, Module, Product
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | The name of the table. | required
Remarks
This element is particularly useful for two problems that may occur while merging merge modules:
  1. The first likely problem is that in order to properly merge you need to have certain tables present prior to merging. Using this element is one way to ensure those tables are present prior to the merging.
  2. The other common problem is that a merge module has incorrect validation information about some tables. By ensuring these tables prior to merging, you can avoid this problem because the correct validation information will go into the installer database before the merge module has a chance to set it incorrectly.


Environment

Description
Environment variables added or removed for parent Component.
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Unique identifier for environment entry. | required
Action xs:enumeration Possible values: {'create', 'set', 'remove'}.
Name | xs:string | Name of the environment variable. | required
Part xs:enumeration Possible values: {'all', 'first', 'last'}.
Permanent | YesNoType | Specifies that the environment variable should not be removed on uninstall.
Separator | xs:string | Optional attribute to change the separator used between values. By default a semi-colon is used.
System | YesNoType | Specifies that the environment variable should be added to the system environment space. The default is 'no' which indicates the environment variable is added to the user environment space.
Value | xs:string | Value to set into the environment variable.


Error

Description
None
Parents
UI
Inner Text (xs:string)
Element value is Message, use CDATA if message contains delimiter characters
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:integer


Exclusion

Description
Declares a merge module with which this merge module is incompatible.
Parents
Module
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
ExcludedId | xs:string | Identifier of the merge module that is incompatible. | required
ExcludedMaxVersion | xs:string | Maximum version excluded from a range. If not set, all versions after min are excluded. If neither max nor min, no exclusion based on version.
ExcludedMinVersion | xs:string | Minimum version excluded from a range. If not set, all versions before max are excluded. If neither max nor min, no exclusion based on version.
ExcludeExceptLanguage | xs:integer | Numeric language ID of the merge module in ExcludedID. All except this language will be excluded. Only one of ExcludeExceptLanguage and ExcludeLanguage may be specified.
ExcludeLanguage | xs:integer | Numeric language ID of the merge module in ExcludedID. The specified language will be excluded. Only one of ExcludeExceptLanguage and ExcludeLanguage may be specified.


ExecuteAction

Description
Initiates the execution sequence. The condition for this action may be specified in the element's inner text.
Parents
AdminUISequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Extension

Description
Extension for Component
Parents
Component, ProgId
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • MIME (min: 0, max: unbounded)
  • Verb (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | This is simply the file extension, like "doc" or "xml". Do not include the preceding period. | required
Advertise | YesNoType
ContentType | xs:string


ExternalFile

Description
Contains information about specific files that are not part of a regular target image.
Parents
Family
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. ProtectRange (min: 1, max: unbounded)
  2. SymbolPath (min: 1, max: unbounded)
  3. Choice of elements (min: 0, max: unbounded)
    • IgnoreRange (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
File | xs:string | Foreign key into the File table. | required
Order | xs:int | Specifies the order of the external files to use when creating the patch. | required
src | xs:string | Full path of the external file. | required


Family

Description
Group of one or more upgraded images of a product.
Parents
PatchCreation
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. UpgradeImage (min: 1, max: unbounded)
  2. Choice of elements (min: 0, max: unbounded)
    • ExternalFile (min: 0, max: unbounded)
    • ProtectFile (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
DiskId | xs:int | Entered into the DiskId field of the new Media table record. | required
DiskPrompt | xs:string | Entered into the DiskPrompt field of the new Media table record.
MediaSrcProp | xs:string | Entered into the Source field of the new Media table entry of the upgraded image. | required
Name | xs:string | Identifier for the family. | required
SequenceStart | xs:int | Sequence number for the starting file. | required
VolumeLabel | xs:string | Entered into the VolumeLabel field of the new Media table record.


Feature

Description
A feature for the Feature table. Features are the smallest installable unit. See msi.chm for more detailed information on the myriad installation options for a feature.
Parents
Feature, FeatureRef, Fragment, Product
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • ComponentRef (min: 0, max: unbounded)
  • Condition (min: 0, max: unbounded)
  • Feature (min: 0, max: unbounded)
  • FeatureRef (min: 0, max: unbounded)
  • MergeRef (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | Unique identifier of the feature. | required
Absent xs:enumeration Possible values: {'allow', 'disallow'}.
This attribute determines if a user will have the option to set a feature to absent in the user interface. Value of 'allow' will allow the user interface to display an option to change the feature state to Absent. Value of 'disallow' will prevent the user interface from displaying an option to change the feature state to Absent by setting the msidbFeatureAttributesUIDisallowAbsent attribute. This will force the feature to the installation state, whether or not the feature is visible in the UI.
AllowAdvertise xs:enumeration Possible values: {'no', 'system', 'yes'}.
This attribute determins the possible advertise states for this feature. Value of 'no' will prevent this feature from being advertised by settting the msidbFeatureAttributesDisallowAdvertise attribute. Value of 'system' will prevent advertising for this feature if the operating system shell does not support Windows Installer descriptors by setting the msidbFeatureAttributesNoUnsupportedAdvertise attribute. Value of 'yes' will allow the feature to be advertised.
ConfigurableDirectory | xs:string | Specify the Id of a Directory that can be configured by the user at installation time. This identifier must be a public property and therefore completely uppercase.
Description | xs:string | Longer string of text describing the feature. This localizable string is displayed by the Text Control of the Selection Dialog.
Display xs:enumeration Possible values: {'collapse', 'expand', 'hidden'}.
Determines the initial display of this feature in the feature tree. Value of 'collapse' will initially show the feature collapsed. Value of 'expand' will initially show the feature expanded. Value of 'hidden' will prevent the feature from displaying in the user interface.
FollowParent | YesNoType | This attribute has been deprecated; please use InstallDefault='followParent' instead. This attribute determines if a feature will follow the installation state of its parent feature. Value of 'yes' sets the state of the feature the same as the state of the feature's parent by setting the msidbFeatureAttributesFollowParent attribute. You cannot use this option if the feature is located at the root of a feature tree.
InstallDefault xs:enumeration Possible values: {'followParent', 'local', 'source'}.
This attribute determines the default install/run location of a feature. This attribute cannot be specified if the value of the FollowParent attribute is 'yes' since that would ask the installer to force this feature to follow the parent installation state and simultaneously favor a particular installation state just for this feature. Value of 'followParent' will force the feature to follow the same installation state as its parent feature. Value of 'local' will favor installing this feature locally by setting the msidbFeatureAttributesFavorLocal attribute. Value of 'source' will favor running this feature from source by setting the msidbFeatureAttributesFavorSource attribute.
Level | xs:integer | Sets the install level of this feature. A value of 0 will disable the feature. Processing the Condition Table can modify the level value (this is set via the Condition child element). | required
Title | xs:string | Short string of text identifying the feature. This string is listed as an item by the SelectionTree control of the Selection Dialog.
TypicalDefault xs:enumeration Possible values: {'advertise', 'install'}.
This attribute determines the default advertise state of the feature. This attribute's value cannot be 'advertise' if the value of the AllowAdvertise attribute is 'no' since that would ask the installer to disallow the advertised state for this feature while at the same time favoring it. Value of 'advertise' will set the feature to be advertised by setting the msidbFeatureAttributesFavorAdvertise attribute. Value of 'install' will set the feature to the default non-advertised installation option.
See Also
Wix Schema, FeatureRef


FeatureRef

Description
Create a reference to a Feature element in another Fragment.
Parents
Feature, Fragment, Product
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • ComponentRef (min: 0, max: unbounded)
  • Feature (min: 0, max: unbounded)
  • MergeRef (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | The identifier of the Feature element to reference. | required
See Also
Wix Schema, Feature


File

Description
File specification for File table, must be child node of Component.
Parents
Component, SFPCatalog
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • AppId (min: 0, max: unbounded)
  • AssemblyName (min: 0, max: unbounded)
  • Class (min: 0, max: unbounded)
  • CopyFile (min: 0, max: unbounded): to DuplicateFile table
  • ODBCDriver (min: 0, max: unbounded)
  • ODBCTranslator (min: 0, max: unbounded)
  • Patch (min: 0, max: unbounded): to Patch table
  • PerfCounter (min: 0, max: unbounded)
  • Permission (min: 0, max: unbounded)
  • Shortcut (min: 0, max: unbounded): Target is preset to this file
  • TypeLib (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Assembly xs:enumeration Possible values: {'no', 'win32', '.net'}.
Specifies if this File is a Win32 Assembly or .NET Assembly; default is neither. The File must also be the KeyPath of the Component.
AssemblyApplication | xs:string | Specifies the File where this Assembly will be privatized. If this attribute is absent, the Assembly will be installed to the Global Assembly Cache.
AssemblyManifest | xs:string | Specifies the File that contains the manifest for this Assembly. The File must also be the KeyPath of the Component. The Value of this attribute should not be the KeyPath of any Component.
AssemblyRegisterComInterop | YesNoType | Set to "yes" to generate entries in the Registry table to register this .NET assembly for COM interop.
BindPath | xs:string | generates BindImage table row, value my be empty string
Checksum | YesNoType | This attribute should be set to "yes" for every executable file in the installation that has a valid checksum stored in the Portable Executable (PE) file header. Only those files that have this attribute set will be verified for valid checksum during a reinstall.
CompanionFile | xs:string | Set this attribute to make this file a companion child of another file. The installation state of a companion file depends not on its own file versioning information, but on the versioning of its companion parent. A file that is the key path for its component can not be a companion file (that means this attribute cannot be set if KeyPath="yes" for this file). The Version attribute cannot be set along with this attribute since companion files are not installed based on their own version.
Compressed | YesNoDefaultType | Sets the file's source type compression. A setting of "yes" or "no" will override the setting in the Word Count Summary Property.
DefaultLanguage | xs:string | This is the default language of this file. The linker will replace this value from the value in the file if the suppress files option is not used.
DefaultSize | xs:integer | This is the default size of this file. The linker will replace this value from the value in the file if the suppress files option is not used.
DefaultVersion | xs:string | This is the default version of this file. The linker will replace this value from the value in the file if the suppress files option is not used.
DiskId | xs:string | Specifies the Media this File should be sourced on. This attribute must be set on this File element or its parent Component.
FontTitle | xs:string | generates entries in Font table with the FontTitle
Hidden | YesNoType | Set to yes in order to have the file's hidden attribute set when it is installed on the target machine.
KeyPath | YesNoType | Set yes to force this File to be key path for parent Component.
LongName | LongFileNameType | Long file name; set this attribute if preferred name is not in 8.3 format.
Name | ShortFileNameType | File name of the file in 8.3 format, required for backwards compatibility. | required
PatchAdded | YesNoType | This attribute must only be set by a patch and if the file is being added by the patch.
ProcessorArchitecture xs:enumeration Possible values: {'neutral', 'msil', 'x86', 'x64', 'ia64'}.
Specifies the architecture for this assembly. This attribute should only be used on .NET Assemblies for the CLR 2.0.
ReadOnly | YesNoType | Set to yes in order to have the file's read-only attribute set when it is installed on the target machine.
SelfRegCost | xs:integer | generates SelfReg table row
src | xs:string | Specifies the path to the File in the build process. This attribute must be set if no source information can be gathered from parent directories.
System | YesNoType | Set to yes in order to have the file's system attribute set when it is installed on the target machine.
TrueType | YesNoType | generates entries in Font table with no FontTitle
Vital | YesNoType | If a file is vital, then installation cannot proceed unless the file is successfully installed. The user will have no option to ignore an error installing this file. If an error occurs, they can merely retry to install the file or abort the installation.


FileCost

Description
Initiates dynamic costing of standard installation actions. Any standard or custom actions that affect costing should sequenced before the CostInitialize action. Call the FileCost action immediately following the CostInitialize action. Then call the CostFinalize action following the FileCost action to make all final cost calculations available to the installer through the Component table. The CostInitialize action must be executed before the FileCost action. The installer then determines the disk-space cost of every file in the File table, on a per-component basis, taking both volume clustering and the presence of existing files that may need to be overwritten into account. All actions that consume or release disk space are also considered. If an existing file is found, a file version check is performed to determine whether the new file actually needs to be installed or not. If the existing file is of an equal or greater version number, the existing file is not overwritten and no disk-space cost is incurred. In all cases, the installer uses the results of version number checking to set the installation state of each file. The FileCost action initializes cost calculation with the installer. Actual dynamic costing does not occur until the CostFinalize action is executed. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, CostInitialize, CostFinalize


FileSearch

Description
Searches for file and assigns to fullpath value of parent Property
Parents
ComplianceCheck, ComponentSearch, DirectorySearch, DirectorySearchRef, IniFileSearch, Property, RegistrySearch
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Specify the Id when you want to find the path to a file. Leave the Id absent if you want to find the parent directory of a file.
Languages | xs:string
MaxDate | xs:dateTime
MaxSize | xs:int
MaxVersion | xs:string
MinDate | xs:dateTime
MinSize | xs:int
MinVersion | xs:string
Name | xs:string | required
See Also
Wix Schema, ComponentSearch, DirectorySearch, DirectorySearchRef, FileSearchRef, IniFileSearch, RegistrySearch


FileSearchRef

Description
References an existing FileSearch element.
Parents
ComponentSearch, DirectorySearch, DirectorySearchRef, IniFileSearch, RegistrySearch
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Specify the Id to the FileSearch to reference.
See Also
Wix Schema, FileSearch


FileShare

Description
Creates a file share out of the component's directory.
Parents
Component
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Permission (min: 1, max: unbounded): ACL permission
Attributes
Name | Type | Description | Usage
Description | xs:string
Name | xs:string | required


FileTypeMask

Description
FileType data for class Id registration.
Parents
Class
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Mask | HexType | Hex value that is AND'd against the bytes in the file at Offset. | required
Offset | xs:integer | Offset into file. If positive, offset is from the beginning; if negative, offset is from the end. | required
Value | HexType | If the result of the AND'ing of Mask with the bytes in the file is Value, the file is a match for this File Type. | required


FindRelatedProducts

Description
Runs through each record of the Upgrade table in sequence and compares the upgrade code, product version, and language in each row to products installed on the system. When FindRelatedProducts detects a correspondence between the upgrade information and an installed product, it appends the product code to the property specified in the ActionProperty column of the UpgradeTable. The FindRelatedProducts action only runs the first time the product is installed. The FindRelatedProducts action does not run during maintenance mode or uninstallation. FindRelatedProducts should be authored into the InstallUISequence table and InstallExecuteSequence tables. The installer prevents FindRelated Products from running in InstallExecuteSequence if the action has already run in InstallUISequence. The FindRelatedProducts action must come before the MigrateFeatureStates action and the RemoveExistingProducts action. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, Upgrade


ForceReboot

Description
Prompts the user for a restart of the system during the installation. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize.
Parents
InstallExecuteSequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Fragment

Description
The Fragment element is the building block of creating an installer database in WiX. Once defined, the Fragment becomes an immutable, atomic unit which can either be completely included or excluded from a product. The contents of a Fragment element can be linked into a product by utilizing one of the many *Ref elements. When linking in a Fragment, it will be necessary to link in all of its individual units. For instance, if a given Fragment contains two Component elements, you must link both under features using ComponentRef for each linked Component. Otherwise, you will get a linker warning and have a floating Component that does not appear under any Feature.
Parents
Wix
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Choice of elements (min: 0, max: unbounded)
    • AppId (min: 0, max: unbounded)
    • Binary (min: 0, max: unbounded)
    • ComplianceCheck (min: 0, max: unbounded)
    • Condition (min: 0, max: unbounded)
    • CustomAction (min: 0, max: unbounded)
    • CustomTable (min: 0, max: unbounded)
    • Directory (min: 0, max: unbounded)
    • DirectoryRef (min: 0, max: unbounded)
    • EnsureTable (min: 0, max: unbounded)
    • Feature (min: 0, max: unbounded)
    • FeatureRef (min: 0, max: unbounded)
    • FragmentRef (min: 0, max: unbounded)
    • Group (min: 0, max: unbounded)
    • Icon (min: 0, max: unbounded)
    • IgnoreModularization (min: 0, max: unbounded)
    • Media (min: 0, max: unbounded)
    • Property (min: 0, max: unbounded)
    • PropertyRef (min: 0, max: unbounded)
    • SFPCatalog (min: 0, max: unbounded)
    • SqlDatabase (min: 0, max: unbounded)
    • UI (min: 0, max: unbounded)
    • Upgrade (min: 0, max: unbounded)
    • User (min: 0, max: unbounded)
    • WebApplication (min: 0, max: unbounded)
    • WebAppPool (min: 0, max: unbounded)
    • WebDirProperties (min: 0, max: unbounded)
    • WebLog (min: 0, max: unbounded)
    • WebSite (min: 0, max: unbounded)
    • Sequence (min: 1, max: 1)
      1. InstallExecuteSequence (min: 0, max: 1)
      2. InstallUISequence (min: 0, max: 1)
      3. AdminExecuteSequence (min: 0, max: 1)
      4. AdminUISequence (min: 0, max: 1)
      5. AdvertiseExecuteSequence (min: 0, max: 1)
    • Any Element namespace='##other' processContents='lax'
Attributes
Name | Type | Description | Usage
Id | xs:string | Optional identifier for a Fragment. Should only be used if you plan to refer to this Fragment via a FragmentRef element elsewhere.
See Also
Wix Schema, FragmentRef


FragmentRef

Description
Reference to a Fragment. This will force the entire referenced Fragment's contents to be included in the installer database.
Parents
Fragment, Module, Product
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | The identifier of the Fragment to reference. | required
See Also
Wix Schema, Fragment


Group

Description
Group for all kinds of things
Parents
Fragment, Module, Product
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Domain | xs:string
Name | xs:string | required


GroupRef

Description
Used to join a user to a group
Parents
User
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required


Icon

Description
Icon used for Shortcut, ProgId, or Class elements (but not UI controls).
Parents
Fragment, Module, Product
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | The Id cannot by longer than 55 characters. In order to prevent errors in cases where the Id is modularized, it should not be longer than 18 characters. | required
src | xs:string | Path to the icon file. | required


IgnoreModularization

Description
Use this to Ignore Modularization of particular values. This feature is intended to be used in very rare situations. Before using this feature, contact your support alias to verify your use is supported.
Parents
Fragment, Module
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Name | xs:string | required
Type xs:enumeration Possible values: {'Action', 'Property', 'Directory'}.


IgnoreRange

Description
Specifies part of a file that is to be ignored during patching.
Parents
ExternalFile, TargetFile
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Length | xs:int | Length of the range. | required
Offset | xs:int | Offset of the start of the range. | required


IniFile

Description
Adds or removes .ini file entries
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Action xs:enumeration Possible values: {'addLine', 'createLine', 'addTag', 'removeLine', 'removeTag'}.
 required
Directory | xs:string
Key | xs:string
Name | xs:string
Section | xs:string
Value | xs:string


IniFileSearch

Description
Searches for file, directory or registry key and assigns to value of parent Property
Parents
ComplianceCheck, Property
Inner Text
None
Children
Choice of elements (min: 0, max: 1)
  • DirectorySearch (min: 0, max: 1)
  • DirectorySearchRef (min: 0, max: 1)
  • FileSearch (min: 0, max: 1)
  • FileSearchRef (min: 0, max: 1)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Field | xs:integer
File | xs:string | required
Key | xs:string | required
Section | xs:string | required
Type xs:enumeration Possible values: {'directory', 'file', 'registry'}.
Must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element
See Also
Wix Schema, ComponentSearch, RegistrySearch


InstallAdminPackage

Description
Copies the product database to the administrative installation point. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


InstallExecute

Description
Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize.
Parents
InstallExecuteSequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


InstallExecuteAgain

Description
Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action. Should only be used after InstallExecute. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize.
Parents
InstallExecuteSequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


InstallExecuteSequence

Description
None
Parents
Fragment, Module, Product
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • AllocateRegistrySpace (min: 0, max: unbounded): Ensures the needed amount of space exists in the registry.
  • AppSearch (min: 0, max: unbounded): Uses file signatures to search for existing versions of products.
  • BindImage (min: 0, max: unbounded): Binds each executable or DLL that must be bound to the DLLs imported by it.
  • CCPSearch (min: 0, max: unbounded): Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed.
  • CostFinalize (min: 0, max: unbounded): Ends the internal installation costing process begun by the CostInitialize action.
  • CostInitialize (min: 0, max: unbounded): Initiates the internal installation costing process.
  • CreateFolders (min: 0, max: unbounded): Creates empty folders for components that are set to be installed.
  • CreateShortcuts (min: 0, max: unbounded): Manages the creation of shortcuts.
  • Custom (min: 0, max: unbounded): Use to sequence a custom action.
  • DeleteServices (min: 0, max: unbounded): Stops a service and removes its registration from the system.
  • DisableRollback (min: 0, max: unbounded): Disables rollback for the remainder of the installation.
  • DuplicateFiles (min: 0, max: unbounded): Duplicates files installed by the InstallFiles action.
  • FileCost (min: 0, max: unbounded): Initiates dynamic costing of standard installation actions.
  • FindRelatedProducts (min: 0, max: unbounded): Runs through each record of the Upgrade table in sequence and compares the upgrade code, product version, and language in each row to products installed on the system.
  • ForceReboot (min: 0, max: unbounded): Prompts the user for a restart of the system during the installation. Not fixed sequence.
  • InstallExecute (min: 0, max: unbounded): Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action.
  • InstallExecuteAgain (min: 0, max: unbounded): Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action.
  • InstallFiles (min: 0, max: unbounded): Copies files specified in the File table from the source directory to the destination directory.
  • InstallFinalize (min: 0, max: unbounded): Marks the end of a sequence of actions that change the system.
  • InstallInitialize (min: 0, max: unbounded): Marks the beginning of a sequence of actions that change the system.
  • InstallODBC (min: 0, max: unbounded): Installs the drivers, translators, and data sources in the ODBCDriver table, ODBCTranslator table, and ODBCDataSource table.
  • InstallServices (min: 0, max: unbounded): Registers a service for the system.
  • InstallValidate (min: 0, max: unbounded): Verifies that all costed volumes have enough space for the installation.
  • IsolateComponents (min: 0, max: unbounded): Installs a copy of a component (commonly a shared DLL) into a private location for use by a specific application (typically an .exe).
  • LaunchConditions (min: 0, max: unbounded): Queries the LaunchCondition table and evaluates each conditional statement recorded there.
  • MigrateFeatureStates (min: 0, max: unbounded): Used for upgrading or installing over an existing application.
  • MoveFiles (min: 0, max: unbounded): Locates existing files on the system and moves or copies those files to a new location.
  • MsiPublishAssemblies (min: 0, max: unbounded): Manages the advertisement of CLR and Win32 assemblies.
  • MsiUnpublishAssemblies (min: 0, max: unbounded): Manages the unadvertisement of CLR and Win32 assemblies that are being removed.
  • PatchFiles (min: 0, max: unbounded): Queries the Patch table to determine which patches are to be applied.
  • ProcessComponents (min: 0, max: unbounded): Registers and unregisters components, their key paths, and the component clients.
  • PublishComponents (min: 0, max: unbounded): Manages the advertisement of the components from the PublishComponent table.
  • PublishFeatures (min: 0, max: unbounded): Writes each feature's state into the system registry.
  • PublishProduct (min: 0, max: unbounded): Manages the advertisement of the product information with the system.
  • RegisterClassInfo (min: 0, max: unbounded): Manages the registration of COM class information with the system.
  • RegisterComPlus (min: 0, max: unbounded): Registers COM+ applications.
  • RegisterExtensionInfo (min: 0, max: unbounded): Manages the registration of extension related information with the system.
  • RegisterFonts (min: 0, max: unbounded): Registers installed fonts with the system.
  • RegisterMIMEInfo (min: 0, max: unbounded): Registers MIME-related registry information with the system.
  • RegisterProduct (min: 0, max: unbounded): Registers the product information with the installer.
  • RegisterProgIdInfo (min: 0, max: unbounded): Manages the registration of OLE ProgId information with the system.
  • RegisterTypeLibraries (min: 0, max: unbounded): Registers type libraries with the system.
  • RegisterUser (min: 0, max: unbounded): Registers the user information with the installer to identify the user of a product.
  • RemoveDuplicateFiles (min: 0, max: unbounded): Deletes files installed by the DuplicateFiles action.
  • RemoveEnvironmentStrings (min: 0, max: unbounded): Modifies the values of environment variables.
  • RemoveExistingProducts (min: 0, max: unbounded): Goes through the product codes listed in the ActionProperty column of the Upgrade table and removes the products in sequence.
  • RemoveFiles (min: 0, max: unbounded): Removes files previously installed by the InstallFiles action.
  • RemoveFolders (min: 0, max: unbounded): Removes any folders linked to components set to be removed or run from source.
  • RemoveIniValues (min: 0, max: unbounded): Removes .ini file information specified for removal in the RemoveIniFile table if the component is set to be installed locally or run from source.
  • RemoveODBC (min: 0, max: unbounded): Removes the data sources, translators, and drivers listed for removal during the installation.
  • RemoveRegistryValues (min: 0, max: unbounded): Removes a registry value that has been authored into the registry table if the associated component was installed locally or as run from source, and is now set to be uninstalled.
  • RemoveShortcuts (min: 0, max: unbounded): Manages the removal of an advertised shortcut whose feature is selected for uninstallation or a nonadvertised shortcut whose component is selected for uninstallation.
  • ResolveSource (min: 0, max: unbounded): Determines the location of the source and sets the SourceDir property if the source has not been resolved yet. Not fixed sequence.
  • RMCCPSearch (min: 0, max: unbounded): Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed.
  • ScheduleReboot (min: 0, max: unbounded): Prompts the user to restart the system at the end of installation. Not fixed sequence.
  • SelfRegModules (min: 0, max: unbounded): Processes all modules listed in the SelfReg table and registers all installed modules with the system.
  • SelfUnregModules (min: 0, max: unbounded): Unregisters all modules listed in the SelfReg table that are scheduled to be uninstalled.
  • SetODBCFolders (min: 0, max: unbounded): Checks for existing ODBC drivers and sets the target directory for each new driver to the location of an existing driver.
  • StartServices (min: 0, max: unbounded): Starts system services.
  • StopServices (min: 0, max: unbounded): Stops system services.
  • UnpublishComponents (min: 0, max: unbounded): Manages the unadvertisement of components listed in the PublishComponent table.
  • UnpublishFeatures (min: 0, max: unbounded): Removes selection-state and feature-component mapping information from the registry.
  • UnregisterClassInfo (min: 0, max: unbounded): Manages the removal of COM class information from the system registry.
  • UnregisterComPlus (min: 0, max: unbounded): Removes COM+ applications from the registry.
  • UnregisterExtensionInfo (min: 0, max: unbounded): Manages the removal of extension-related information from the system registry.
  • UnregisterFonts (min: 0, max: unbounded): Removes registration information about installed fonts from the system.
  • UnregisterMIMEInfo (min: 0, max: unbounded): Unregisters MIME-related registry information from the system.
  • UnregisterProgIdInfo (min: 0, max: unbounded): Manages the unregistration of OLE ProgId information with the system.
  • UnregisterTypeLibraries (min: 0, max: unbounded): Unregisters type libraries from the system.
  • ValidateProductID (min: 0, max: unbounded): Sets the ProductID property to the full product identifier.
  • WriteEnvironmentStrings (min: 0, max: unbounded): Modifies the values of environment variables.
  • WriteIniValues (min: 0, max: unbounded): Writes the .ini file information that the application needs written to its .ini files.
  • WriteRegistryValues (min: 0, max: unbounded): Sets up an application's registry information.
Attributes
None


InstallFiles

Description
Copies files specified in the File table from the source directory to the destination directory. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


InstallFinalize

Description
Marks the end of a sequence of actions that change the system. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, InstallInitialize


InstallInitialize

Description
Marks the beginning of a sequence of actions that change the system. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, InstallFinalize


InstallODBC

Description
Installs the drivers, translators, and data sources in the ODBCDriver table, ODBCTranslator table, and ODBCDataSource table. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


InstallServices

Description
Registers a service for the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


InstallUISequence

Description
None
Parents
Fragment, Module, Product, UI
Inner Text (xs:string)
This element may have inner text.
Children
Choice of elements (min: 0, max: unbounded)
  • AppSearch (min: 0, max: unbounded): Uses file signatures to search for existing versions of products.
  • CCPSearch (min: 0, max: unbounded): Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed.
  • CostFinalize (min: 0, max: unbounded): Ends the internal installation costing process begun by the CostInitialize action.
  • CostInitialize (min: 0, max: unbounded): Initiates the internal installation costing process.
  • Custom (min: 0, max: unbounded): Use to sequence a custom action.
  • ExecuteAction (min: 0, max: unbounded): Initiates the execution sequence.
  • FileCost (min: 0, max: unbounded): Initiates dynamic costing of standard installation actions.
  • FindRelatedProducts (min: 0, max: unbounded): Runs through each record of the Upgrade table in sequence and compares the upgrade code, product version, and language in each row to products installed on the system.
  • IsolateComponents (min: 0, max: unbounded): Installs a copy of a component (commonly a shared DLL) into a private location for use by a specific application (typically an .exe).
  • LaunchConditions (min: 0, max: unbounded): Queries the LaunchCondition table and evaluates each conditional statement recorded there.
  • MigrateFeatureStates (min: 0, max: unbounded): Used for upgrading or installing over an existing application.
  • ResolveSource (min: 0, max: unbounded): Determines the location of the source and sets the SourceDir property if the source has not been resolved yet.
  • RMCCPSearch (min: 0, max: unbounded): Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed.
  • ScheduleReboot (min: 0, max: unbounded): Prompts the user to restart the system at the end of installation. Not fixed sequence.
  • Show (min: 0, max: unbounded)
  • ValidateProductID (min: 0, max: unbounded): Sets the ProductID property to the full product identifier.
Attributes
None


InstallValidate

Description
Verifies that all costed volumes have enough space for the installation. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Interface

Description
COM Interface registration for parent Typelib.
Parents
Class, Component, TypeLib
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | uuid | GUID identifier for COM Interface. | required
Name | xs:string | Name for COM Interface. | required
NumMethods | xs:integer | Number of methods implemented on COM Interface.
ProxyStubClassId | uuid | GUID CLSID for proxy stub to COM Interface.
ProxyStubClassId32 | uuid | GUID CLSID for 32-bit proxy stub to COM Interface.
Versioned | YesNoType | Determines whether a Typelib version entry should be created with the other COM Interface registry keys. Default is 'yes'.


IsolateComponent

Description
Shared Component to be privately replicated in folder of parent Component
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Shared | xs:string | Shared Component for this application Component | required


IsolateComponents

Description
Installs a copy of a component (commonly a shared DLL) into a private location for use by a specific application (typically an .exe). This isolates the application from other copies of the component that may be installed to a shared location on the computer. The action refers to each record of the IsolatedComponent table and associates the files of the component listed in the Component_Shared field with the component listed in the Component_Application field. The installer installs the files of Component_Shared into the same directory as Component_Application. The installer generates a file in this directory, zero bytes in length, having the short filename name of the key file for Component_Application (typically this is the same file name as the .exe) appended with .local. The IsolatedComponent action does not affect the installation of Component_Application. Uninstalling Component_Application also removes the Component_Shared files and the .local file from the directory. The IsolateComponents action can be used only in the InstallUISequence table and the InstallExecuteSequence table. This action must come after the CostInitialize action and before the CostFinalize action. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, IsolateComponent


LaunchConditions

Description
Queries the LaunchCondition table and evaluates each conditional statement recorded there. If any of these conditional statements fail, an error message is displayed to the user and the installation is terminated. The LaunchConditions action is optional. This action is normally the first in the sequence, but the AppSearch Action may be sequenced before the LaunchConditions action. If there are launch conditions that do not apply to all installation modes, the appropriate installation mode property should be used in a conditional expression in the appropriate sequence table. The condition for this action may be specified in the element's inner text.
Parents
AdminExecuteSequence, AdminUISequence, InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, Condition


ListBox

Description
Set of items for a particular ListBox control tied to an install Property
Parents
UI
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. ListItem (min: 0, max: unbounded): entry for ListBox table
Attributes
Name | Type | Description | Usage
Property | xs:string | Property tied to this group | required


ListItem

Description
Text and value associated with Property with Control set to listBox,listView,comboBox
Parents
ComboBox, ListBox, ListView
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Text (min: 0, max: 1): Alternative to Text attribute when CDATA is needed to escape XML delimiters.
Attributes
Name | Type | Description | Usage
Id | xs:string | Deprecated. Old way to assign a value to the associated control Property | required
Icon | xs:string | Only valid in ListView Properties
Text | xs:string | Defaults to ListItem's value
Value | xs:string | Value assigned to the associated control Property.


ListView

Description
Set of items for a particular ListView control tied to an install Property
Parents
UI
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. ListItem (min: 0, max: unbounded): entry for ListView table
Attributes
Name | Type | Description | Usage
Property | xs:string | Property tied to this group | required


Media

Description
Media element describes a disk that makes up the source media for the installation.
Parents
Fragment, Product
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. DigitalSignature (min: 0, max: 1)
  2. PatchPackage (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:integer | Disk identifier for Media table. This number must be equal to or greater than 1. | required
Cabinet | xs:string | The name of the cabinet if some or all of the files stored on the media are compressed into a cabinet file. If no cabinets are used, this attribute must be blank.
CompressionLevel xs:enumeration Possible values: {'high', 'low', 'medium', 'mszip', 'none'}.
Indicates the compression level for the Media's cabinet. This attribute can only be used in conjunction with the Cabinet attribute. The default is 'mszip'.
DiskPrompt | xs:string | The disk name, which is usually the visible text printed on the disk. This localizable text is used to prompt the user when this disk needs to be inserted.
EmbedCab | YesNoType | Instructs the binder to embed the cabinet in the product if 'yes'. This attribute can only be specified in conjunction with the Cabinet attribute.
src | xs:string | This attribute specifies the root directory for the uncompressed files that are a part of this Media element. By default, the src will be the output directory for the final image. The default value ensures the binder generates an installable image. If a relative path is specified in the src attribute, the value will be appended to the image's output directory. If an absolute path is provided, that path will be used without modification. The latter two options are provided to ease the layout of an image onto multiple medias (CDs/DVDs).
VolumeLabel | xs:string | The label attributed to the volume. This is the volume label returned by the GetVolumeInformation function. If the SourceDir property refers to a removable (floppy or CD-ROM) volume, then this volume label is used to verify that the proper disk is in the drive before attempting to install files. The entry in this column must match the volume label of the physical media.


Merge

Description
Merge directive to bring in a Merge Module to be redirected to parent Directory
Parents
Directory, DirectoryRef
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • ConfigurationData (min: 0, max: unbounded): Data to use as input to a configurable merge module.
Attributes
Name | Type | Description | Usage
Id | xs:string | The unique identifier for the Merge element in the source code. Referenced by the MergeRef/@Id. | required
Directory | xs:integer | This attribute has been deprecated and should not be used. It actually never provided any value.
DiskId | xs:string | The value of this attribute should correspond to the Id attribute of a Media element authored elsewhere. By creating this connection between the Merge Module and Media element, you set the packaging options to the values specified in the Media element (values such as compression level, cab embedding, etc...). | required
FileCompression | YesNoType
Language | xs:integer | Specifies the decimal LCID for the language to merge the Module in as. | required
src | xs:string | required
See Also
Wix Schema, MergeRef


MergeRef

Description
Merge reference to connect a Merge Module to parent Feature
Parents
Feature, FeatureRef
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | The unique identifier for the Merge element to be referenced. | required
Language | xs:integer | This attribute has been deprecated and should not be used. It actually never provided any value.
Primary | YesNoType
See Also
Wix Schema, Merge


MigrateFeatureStates

Description
Used for upgrading or installing over an existing application. Reads feature states from existing application and sets these feature states for the pending installation. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


MIME

Description
MIME content-type for an Extension
Parents
Extension
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Class | uuid
ContentType | xs:string | This is the identifier for the MIME content. It is commonly written in the form of type/format. | required
Default | YesNoType | If 'yes', become the content type for the parent Extension. The default value is 'no'.


MimeMap

Description
MimeMap definition for IIS resources.
Parents
WebVirtualDir
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Id for the MimeMap. | required
Extension | xs:string | Extension covered by the MimeMap. Must begin with a dot. | required
Type | xs:string | Mime-type covered by the MimeMap. | required


Module

Description
The Module element is analogous to the main function in a C program. When linking, only one Module section can be given to the linker to produce a successful result. Using this element creates an msm file.
Parents
Wix
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Package (min: 1, max: 1)
  2. Choice of elements (min: 0, max: unbounded)
    • AppId (min: 0, max: unbounded)
    • Binary (min: 0, max: unbounded)
    • ComponentRef (min: 0, max: unbounded)
    • Configuration (min: 0, max: unbounded)
    • CustomAction (min: 0, max: unbounded)
    • CustomTable (min: 0, max: unbounded)
    • Dependency (min: 0, max: unbounded)
    • Directory (min: 0, max: unbounded)
    • DirectoryRef (min: 0, max: unbounded)
    • EnsureTable (min: 0, max: unbounded)
    • Exclusion (min: 0, max: unbounded)
    • FragmentRef (min: 0, max: unbounded)
    • Group (min: 0, max: unbounded)
    • Icon (min: 0, max: unbounded)
    • IgnoreModularization (min: 0, max: unbounded)
    • Property (min: 0, max: unbounded)
    • PropertyRef (min: 0, max: unbounded)
    • SFPCatalog (min: 0, max: unbounded)
    • SqlDatabase (min: 0, max: unbounded)
    • Substitution (min: 0, max: unbounded)
    • UI (min: 0, max: unbounded)
    • User (min: 0, max: unbounded)
    • WebApplication (min: 0, max: unbounded)
    • WebAppPool (min: 0, max: unbounded)
    • WebDirProperties (min: 0, max: unbounded)
    • WebLog (min: 0, max: unbounded)
    • WebSite (min: 0, max: unbounded)
    • Sequence (min: 1, max: 1)
      1. InstallExecuteSequence (min: 0, max: 1)
      2. InstallUISequence (min: 0, max: 1)
      3. AdminExecuteSequence (min: 0, max: 1)
      4. AdminUISequence (min: 0, max: 1)
      5. AdvertiseExecuteSequence (min: 0, max: 1)
    • Any Element namespace='##other' processContents='lax'
Attributes
Name | Type | Description | Usage
Id | xs:string | The name of the merge module (not the file name). | required
Codepage | xs:integer | The codepage of the merge module.
Guid | uuid | The product code GUID of the merge module. | required
Language | LocalizableInteger | The decimal language ID (LCID) of the merge module. | required
Version | xs:string | The product version string of the merge module. | required


MoveFiles

Description
Locates existing files on the system and moves or copies those files to a new location. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


MsiPublishAssemblies

Description
Manages the advertisement of CLR and Win32 assemblies. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


MsiUnpublishAssemblies

Description
Manages the unadvertisement of CLR and Win32 assemblies that are being removed. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


ODBCDataSource

Description
ODBCDataSource for a Component
Parents
Component, ODBCDriver
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Property (min: 0, max: unbounded): Translates into ODBCSourceAttributes
Attributes
Name | Type | Description | Usage
Id | xs:string | required
DriverName | xs:string | Required if not found as child of ODBCDriver element
KeyPath | YesNoType | Set 'yes' to force this file to be key path for parent Component
Name | xs:string | required
Registration xs:enumeration Possible values: {'machine', 'user'}.
 required


ODBCDriver

Description
ODBCDriver for a Component
Parents
Component, File
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Property (min: 0, max: unbounded): Translates into ODBCSourceAttributes
  2. ODBCDataSource (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
File | xs:string | Required if not found as child of File element
Name | xs:string | required
SetupFile | xs:string | Required if not found as child of File element or different from File attribute above


ODBCTranslator

Description
ODBCTranslator for a Component
Parents
Component, File
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
File | xs:string | Required if not found as child of File element
Name | xs:string | required
SetupFile | xs:string | Required if not found as child of File element or different from File attribute above


Package

Description
Properties about the package to be placed in the Summary Information Stream. These are visible from COM through the IStream interface, and these properties can be seen on the package in Explorer.
Parents
Module, Product
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
AdminImage | YesNoType | Set to 'yes' if the source is an admin image.
Comments | xs:string | Optional comments for browsing.
Compressed | YesNoType | Set to 'yes' to have compressed files in the source.
Description | xs:string | The product full name or description.
Id | autogenuuid | Package code GUID for SKU.
InstallerVersion | xs:integer | The minimum installer version (major*100 + minor).
Keywords | xs:string | Optional keywords for browsing.
Languages | xs:string | The list of language IDs (LCIDs) supported in the package.
Manufacturer | xs:string | The vendor releasing the package.
Platforms | xs:string | The list of platforms supported in the package.
ShortNames | YesNoType | Set to 'yes' to have short filenames in the source.
SummaryCodepage | xs:integer | The codepage for summary info strings only.


Patch

Description
Patch information for parent File element
Parents
File
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Header | xs:string | stream in Binary table | required
PatchSize | xs:integer | may be defaulted if build tools supply actual size
Sequence | xs:integer | may be defaulted if not in cabinet if build tools supply sequence
Vital | YesNoType


PatchCreation

Description
The PatchCreation element is analogous to the main function in a C program. When linking, only one PatchCreation section can be given to the linker to produce a successful result. Using this element creates a pcp file.
Parents
Wix
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. PatchInformation (min: 1, max: 1)
  2. PatchMetadata (min: 0, max: 1)
  3. Family (min: 1, max: unbounded)
  4. Choice of elements (min: 0, max: unbounded)
    • PatchProperty (min: 0, max: unbounded)
    • PatchSequence (min: 0, max: unbounded)
    • ReplacePatch (min: 0, max: unbounded)
    • TargetProductCode (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | uuid | Guid for this patch. | required
AllowMajorVersionMismatches | YesNoType | True if ProductVersion property may differ by a major version.
AllowProductCodeMismatches | YesNoType | ProductCode property may differ between UpgradedImages table and TargetImages table.
CleanWorkingFolder | YesNoType | Whether patchwiz should clean the temp folder when finished.
OptionFlags | xs:int | Option flags.
OutputPath | xs:string | Output patch for patchwiz.
SourceList | xs:string | Used to locate the .msp file for the patch if the cached copy is unavailable.
SymbolFlags | xs:int | Symbol flags.
WholeFilesOnly | YesNoType | Changing files should be included in their entirety.


PatchFiles

Description
Queries the Patch table to determine which patches are to be applied. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


PatchInformation

Description
Properties about the patch to be placed in the Summary Information Stream. These are visible from COM through the IStream interface, and these properties can be seen on the package in Explorer.
Parents
PatchCreation
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
AdminImage | YesNoType | Source is an admin image
Comments | xs:string | Optional comments for browsing
Compressed | YesNoType | Compressed files on source
Description | xs:string | Product full name or description
Keywords | xs:string | Optional keywords for browsing
Languages | xs:string | List of language IDs supported in package
Manufacturer | xs:string | Vendor releasing the package
Platforms | xs:string | List of platforms supported in package
ShortNames | YesNoType | Short filenames on source
SummaryCodepage | xs:integer | Codepage for summary info strings only


PatchMetadata

Description
Properties about the patch to be placed in the PatchMetadata table.
Parents
PatchCreation
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. CustomProperty (min: 0, max: 1): A custom property that extends the standard set.
Attributes
Name | Type | Description | Usage
AllowRemoval | YesNoType | Whether this is an uninstallable patch.
Classification xs:enumeration Possible values: {'Hotfix', 'Security Rollup', 'Critical Update', 'Update', 'Service Pack', 'Update Rollup'}.
Category of updates. 		required
CreationTimeUTC | xs:string | Creation time of the .msp file in the form mm:dd:yy:HH:MM (month: day : year : hour : minute).
Description | xs:string | Description of the patch.
DisplayName | xs:string | A title for the patch that is suitable for public display. In Add/Remove Programs from XP SP2 on.
ManufacturerName | xs:string | Name of the manufacturer.
MoreInfoURL | xs:string | A URL that provides information specific to this patch. In Add/Remove Programs from XP SP2 on.
TargetProductName | xs:string | Name of the application or target product suite.


PatchPackage

Description
PatchPackage found on parent Media element
Parents
Media
Inner Text (uuid)
Element value is PatchId GUID
Children
None
Attributes
None


PatchProperty

Description
A property for this patch database.
Parents
PatchCreation
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Name | xs:string | required
Value | xs:string | required


PatchSequence

Description
Sequence information for this patch database. Sequence information is generated automatically in most cases, and rarely needs to be set explicitly.
Parents
PatchCreation
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
PatchFamily | xs:string | Identifier which indicates one of the sequence families to which this patch belongs. | required
Sequence | xs:string | Used to populate the sequence column of the MsiPatchSequence table in the final MSP file. Specified in x.x.x.x format. See documentation for Sequence column of MsiPatchSequence table in MSI SDK.
Supersede | xs:integer | Non-NULL value indicates that this patch supersedes earlier patches in this family. See documentation for Attributes column of MsiPatchSequence table in MSI SDK.
Target | xs:string | Used to determine the product code filtering for the patch family.


PerfCounter

Description
Used to install Perfmon counters.
Parents
File
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Name | xs:string


Permission

Description
Sets ACLs on File, Registry, or CreateFolder. When under a Registry element, this cannot be used if the Action attribute's value is remove or removeKeyOnInstall.
Parents
CreateFolder, File, FileShare, Registry, ServiceInstall
Inner Text
No Id attribute, table and key taken from parent element
Children
None
Attributes
Name | Type | Description | Usage
Append | YesNoType
ChangePermission | YesNoType
CreateChild | YesNoType | For a directory, the right to create a subdirectory. Only valid under a 'CreateFolder' parent.
CreateFile | YesNoType | For a directory, the right to create a file in the directory. Only valid under a 'CreateFolder' parent.
CreateLink | YesNoType
CreateSubkeys | YesNoType
Delete | YesNoType
DeleteChild | YesNoType | For a directory, the right to delete a directory and all the files it contains, including read-only files. Only valid under a 'CreateFolder' parent.
Domain | xs:string
EnumerateSubkeys | YesNoType
Execute | YesNoType
GenericAll | YesNoType
GenericExecute | YesNoType
GenericRead | YesNoType | specifying this will fail to grant read access
GenericWrite | YesNoType
Notify | YesNoType
Read | YesNoType
ReadAttributes | YesNoType
ReadExtendedAttributes | YesNoType
ReadPermission | YesNoType
ServiceChangeConfig | YesNoType | Required to call the ChangeServiceConfig or ChangeServiceConfig2 function to change the service configuration. Only valid under a 'ServiceInstall' parent.
ServiceEnumerateDependents | YesNoType | Required to call the EnumDependentServices function to enumerate all the services dependent on the service. Only valid under a 'ServiceInstall' parent.
ServiceInterrogate | YesNoType | Required to call the ControlService function to ask the service to report its status immediately. Only valid under a 'ServiceInstall' parent.
ServicePauseContinue | YesNoType | Required to call the ControlService function to pause or continue the service. Only valid under a 'ServiceInstall' parent.
ServiceQueryConfig | YesNoType | Required to call the QueryServiceConfig and QueryServiceConfig2 functions to query the service configuration. Only valid under a 'ServiceInstall' parent.
ServiceQueryStatus | YesNoType | Required to call the QueryServiceStatus function to ask the service control manager about the status of the service. Only valid under a 'ServiceInstall' parent.
ServiceStart | YesNoType | Required to call the StartService function to start the service. Only valid under a 'ServiceInstall' parent.
ServiceStop | YesNoType | Required to call the ControlService function to stop the service. Only valid under a 'ServiceInstall' parent.
ServiceUserDefinedControl | YesNoType | Required to call the ControlService function to specify a user-defined control code. Only valid under a 'ServiceInstall' parent.
Synchronize | YesNoType
TakeOwnership | YesNoType
Traverse | YesNoType | For a directory, the right to traverse the directory. By default, users are assigned the BYPASS_TRAVERSE_CHECKING privilege, which ignores the FILE_TRAVERSE access right. Only valid under a 'CreateFolder' parent.
User | xs:string | required
Write | YesNoType
WriteAttributes | YesNoType
WriteExtendedAttributes | YesNoType


ProcessComponents

Description
Registers and unregisters components, their key paths, and the component clients. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Product

Description
The Product element is analogous to the main function in a C program. When linking, only one Product section can be given to the linker to produce a successful result. Using this element creates an msi file.
Parents
Wix
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Package (min: 1, max: 1)
  2. Choice of elements (min: 0, max: unbounded)
    • AppId (min: 0, max: unbounded)
    • Binary (min: 0, max: unbounded)
    • ComplianceCheck (min: 0, max: unbounded)
    • Condition (min: 0, max: unbounded)
    • CustomAction (min: 0, max: unbounded)
    • CustomTable (min: 0, max: unbounded)
    • Directory (min: 0, max: unbounded)
    • DirectoryRef (min: 0, max: unbounded)
    • EnsureTable (min: 0, max: unbounded)
    • Feature (min: 0, max: unbounded)
    • FeatureRef (min: 0, max: unbounded)
    • FragmentRef (min: 0, max: unbounded)
    • Group (min: 0, max: unbounded)
    • Icon (min: 0, max: unbounded)
    • Media (min: 0, max: unbounded)
    • Property (min: 0, max: unbounded)
    • PropertyRef (min: 0, max: unbounded)
    • SFPCatalog (min: 0, max: unbounded)
    • SqlDatabase (min: 0, max: unbounded)
    • UI (min: 0, max: unbounded)
    • Upgrade (min: 0, max: unbounded)
    • User (min: 0, max: unbounded)
    • WebApplication (min: 0, max: unbounded)
    • WebAppPool (min: 0, max: unbounded)
    • WebDirProperties (min: 0, max: unbounded)
    • WebLog (min: 0, max: unbounded)
    • WebSite (min: 0, max: unbounded)
    • Sequence (min: 1, max: 1)
      1. InstallExecuteSequence (min: 0, max: 1)
      2. InstallUISequence (min: 0, max: 1)
      3. AdminExecuteSequence (min: 0, max: 1)
      4. AdminUISequence (min: 0, max: 1)
      5. AdvertiseExecuteSequence (min: 0, max: 1)
    • Any Element namespace='##other' processContents='lax'
Attributes
Name | Type | Description | Usage
Id | autogenuuid | The product code GUID for the product. | required
Codepage | xs:integer | The codepage for the resulting MSI.
Language | LocalizableInteger | The decimal language ID (LCID) for the product. | required
Manufacturer | xs:string | The manufacturer of the product. | required
Name | xs:string | The descriptive name of the product. | required
UpgradeCode | uuid | The upgrade code GUID for the product.
Version | xs:string | The product's version string. | required
Any attribute namespace='##other' processContents='lax'


ProgId

Description
ProgId registration for parent Component. If ProgId has an associated Class, it must be a child of that element
Parents
Class, Component, ProgId
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. ProgId (min: 0, max: 1): Version-independent ProgId must be child element of actual ProgId
  2. Extension (min: 0, max: unbounded): extensions that refer to this ProgId
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Advertise | YesNoType
Description | xs:string
Icon | xs:string | reference to Icon element
IconIndex | xs:integer


ProgressText

Description
None
Parents
UI
Inner Text (xs:string)
Element value is progress message text for action
Children
None
Attributes
Name | Type | Description | Usage
Action | xs:string | required
Template | xs:string | used to format ActionData messages from action processing


Property

Description
Property value for a Product or Module.
Parents
Fragment, Module, ODBCDataSource, ODBCDriver, Product, UI
Inner Text (xs:string)
This element may have inner text.
Children
Sequence (min: 1, max: 1)
  1. ComplianceDrive (min: 0, max: 1): Starts searches from the CCP_DRIVE.
  2. ComponentSearch (min: 0, max: unbounded)
  3. RegistrySearch (min: 0, max: unbounded)
  4. RegistrySearchRef (min: 0, max: unbounded)
  5. IniFileSearch (min: 0, max: unbounded)
  6. DirectorySearch (min: 0, max: unbounded)
  7. DirectorySearchRef (min: 0, max: unbounded)
  8. FileSearch (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Admin | YesNoType
ComplianceCheck | YesNoType | Adds a row to the CCPSearch table. This attribute is only valid when this Property contains a search element.
Hidden | YesNoType
Secure | YesNoType
Value | xs:string | Sets a default value for the property. The value will be overwritten if the Property is used for a search.
See Also
Wix Schema, PropertyRef


PropertyRef

Description
Reference to Property value
Parents
Fragment, Module, Product, UI
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
See Also
Wix Schema, Property


ProtectFile

Description
Specifies a file to be protected.
Parents
Family
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • ProtectRange (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
File | xs:string | Foreign key into the File table. | required


ProtectRange

Description
Specifies part of a file that cannot be overwritten during patching.
Parents
ExternalFile, ProtectFile, TargetFile
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Length | xs:int | Length of the range. | required
Offset | xs:int | Offset of the start of the range. | required


Publish

Description
None
Parents
Control
Inner Text (xs:string)
Element value is the optional Condition expression
Children
None
Attributes
Name | Type | Description | Usage
Event | xs:string | must be one of the standard control events'
Property | xs:string | mutually exclusive with 'Event'
Value | xs:string | required


PublishComponents

Description
Manages the advertisement of the components from the PublishComponent table. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


PublishFeatures

Description
Writes each feature's state into the system registry. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


PublishProduct

Description
Manages the advertisement of the product information with the system. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RadioButton

Description
Text or Icon plus Value that is assigned to the Property of the parent Control (RadioGroup).
Parents
RadioGroup
Inner Text (xs:string)
Deprecated. Use the Value attribute instead.
Children
None
Attributes
Name | Type | Description | Usage
Height | xs:integer | required
Help | xs:string
Icon | xs:string | Icon displayed with the radio button. This attribute is mutually exclusive with the Text attribute.
Text | xs:string | Text displayed with the radio button. This attribute is mutually exclusive with the Icon attribute.
ToolTip | xs:string
Value | xs:string | Value assigned to the associated control Property when this radio button is selected.
Width | xs:integer | required
X | xs:integer | required
Y | xs:integer | required
See Also
Wix Schema, RadioGroup


RadioGroup

Description
Set of radio buttons tied to the specified Property
Parents
UI
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. RadioButton (min: 1, max: unbounded)
Attributes
Name | Type | Description | Usage
Property | xs:string | Property tied to this group. | required


RecycleTime

Description
IIS6 Application Pool Recycle Times on 24 hour clock.
Parents
WebAppPool
Inner Text
None
Children
None
Attributes
Name Type Description Usage
Value xs:string Pattern: '\d{1,2}:\d{2}'.
 required


RegisterClassInfo

Description
Manages the registration of COM class information with the system. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterComPlus

Description
Registers COM+ applications. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterExtensionInfo

Description
Manages the registration of extension related information with the system. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterFonts

Description
Registers installed fonts with the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterMIMEInfo

Description
Registers MIME-related registry information with the system. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterProduct

Description
Registers the product information with the installer. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterProgIdInfo

Description
Manages the registration of OLE ProgId information with the system. The condition for this action may be specified in the element's inner text.
Parents
AdvertiseExecuteSequence, InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterTypeLibraries

Description
Registers type libraries with the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RegisterUser

Description
Registers the user information with the installer to identify the user of a product. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Registry

Description
This element allows you to add or remove registry keys (depending upon the value of the action attribute). Please note that for removal, there are 4 options: you can remove a particular registry name, an entire registry key when the parent component is installed, an entire registry key when the parent component is uninstalled, or create a key when the parent component is installed, then remove it when the parent component is uninstalled.
Parents
Component
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • Permission (min: 0, max: unbounded)
  • RegistryValue (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Action xs:enumeration Possible values: {'append', 'createKey', 'createKeyAndRemoveKeyOnUninstall', 'prepend', 'remove', 'removeKey', 'removeKeyOnInstall', 'removeKeyOnUninstall', 'write'}.
This is the action that will be taken for this registry key. Value of 'append' will append the specified value(s) to a multiString registry key. Value of 'createKey' will create the key, if absent, when the parent component is installed. Value of 'createKeyAndRemoveKeyOnUninstall' will create the key, if absent, when the parent component is installed then remove the key with all its values and subkeys when the parent component is uninstalled. Value of 'prepend' will prepend the specified value(s) to a multiString registry key. Value of 'remove' will remove a registry name when the parent component in installed. Value of 'removeKey' is deprecated; please use 'removeKeyOnInstall' to match the previous behavior. Value of 'removeKeyOnInstall' will remove a key with all its values and subkeys when the parent component is installed. Value of 'removeKeyOnUninstall' will remove a key with all its values and subkeys when the parent component is uninstalled. Value of 'write' will write a registry key.
Id | xs:string | Primary key used to identify this particular entry. If this attribute is not specified, an identifier will be generated by hashing the parent Component identifier, Root, Key, and Name.
Key | xs:string | The localizable key for the registry value. | required
KeyPath | YesNoType | Set this attribute to 'yes' to make this registry key the KeyPath of the parent component. Only one resource (registry, file, etc) can be the KeyPath of a component.
Name | xs:string | The localizable registry value name. The Windows Installer allows several special values to be set for this attribute. You should not use them in WiX. Instead use appropriate values in the Action attribute to get the desired behavior.
Root xs:enumeration Possible values: {'HKMU', 'HKCR', 'HKCU', 'HKLM', 'HKU'}.
The predefined root key for the registry value. If the attribute's value is 'HKMU', a per-user installation will write the value under HKCU, a per-machine installation will write the value under HKLM. Note that it is recommended that registry entries written to the HKCU hive set the KeyPath attribute to 'yes'. This ensures that the installer writes the necessary registry entries when there are multiple users on the same computer. 		required
Type xs:enumeration Possible values: {'string', 'integer', 'binary', 'expandable', 'multiString'}.
Set this attribute to the type of the desired registry key. This attribute must be specified whenever the Value attribute or a child RegistryValue element is specified. Please note that setting the attribute's value to 'multiString' will only result in a multiString value if there is more than one registry value or the Action attribute's value is 'append' or 'prepend'. Otherwise a string registry value will be created. This attribute should only be set when the value of the Action attribute does not include the word 'remove'.
Value | xs:string | Set this attribute to the localizable registry value. This value is formatted. The Windows Installer allows several special values to be set for this attribute. You should not use them in WiX. Instead use appropriate values in the Type attribute to get the desired behavior. This attribute cannot be specified if the Action attribute's value contains the word 'remove'.


RegistrySearch

Description
Searches for file, directory or registry key and assigns to value of parent Property
Parents
ComplianceCheck, Property
Inner Text
None
Children
Choice of elements (min: 0, max: 1)
  • DirectorySearch (min: 0, max: 1)
  • DirectorySearchRef (min: 0, max: 1)
  • FileSearch (min: 0, max: 1)
  • FileSearchRef (min: 0, max: 1)
Attributes
Name | Type | Description | Usage
Id | xs:string | Signature to be used for the file, directory or registry key being search for. | required
Key | xs:string | Key for the registry value. | required
Name | xs:string | Registry value name.
Root xs:enumeration Possible values: {'HKCR', 'HKCU', 'HKLM', 'HKU'}.
Root key for the registry value. 		required
Type xs:enumeration Possible values: {'directory', 'file', 'registry'}.
must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element
Win64 | YesNoType | Instructs the search to look in the 64-bit registry when the value is 'yes'. Default is 'no' and search looks in the 32-bit registry.
See Also
Wix Schema, ComponentSearch, IniFileSearch


RegistrySearchRef

Description
References an existing RegistrySearch element.
Parents
Property
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Specify the Id to the RegistrySearch to reference.
See Also
Wix Schema, RegistrySearch


RegistryValue

Description
Use several of these elements to specify each registry value in a multiString registry value. This element cannot be used if the Value attribute is specified unless the Type attribute is set to 'multiString'. The values should go in the text area of the RegistryValue element.
Parents
Registry


RemoveDuplicateFiles

Description
Deletes files installed by the DuplicateFiles action. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveEnvironmentStrings

Description
Modifies the values of environment variables. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveExistingProducts

Description
Goes through the product codes listed in the ActionProperty column of the Upgrade table and removes the products in sequence. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize.
Parents
InstallExecuteSequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveFile

Description
Remove a file(s) if the parent component is selected for installation or removal. Multiple files can be removed by specifying a wildcard for the value of the Name attribute. By default, the source directory of the file is the directory of the parent component. This can be overridden by specifying the Directory attribute with a value corresponding to the Id of the source directory, or by specifying the Property attribute with a value corresponding to a property that will have a value that resolves to the full path to the source directory.
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Primary key used to identify this particular entry. | required
Directory | xs:string | Overrides the directory of the parent component with a specific Directory. This Directory must exist in the installer database at creation time. This attribute cannot be specified in conjunction with the Property attribute.
LongName | xs:string | If the name of the file(s) to be removed need to be longer than 8.3 format, then this attribute should be specified with the long file name (in addition to the Name attribute which is always required for target systems that might not support long file names). All of the files that match the wild card will be removed from the specified directory. The value is a filename that may also contain the wild card characters "?" for any single character or "*" for zero or more occurrences of any character.
Name | xs:string | This value should be set to the localizable name of the file(s) to be removed. All of the files that match the wild card will be removed from the specified directory. The value is a filename that may also contain the wild card characters "?" for any single character or "*" for zero or more occurrences of any character.
On xs:enumeration Possible values: {'install', 'uninstall', 'both'}.
This value determines the time at which the file(s) may be removed. Value of "install" will remove only when the parent component is being installed (msiInstallStateLocal or msiInstallStateSource). Value of "uninstall" will remove only when the parent component is being removed (msiInstallStateAbsent). Value of "both" will remove in either of the above cases. 		required
Property | xs:string | Overrides the directory of the parent component with the value of the specified property. The property should have a value that resolves to the full path of the source directory. The property does not have to exist in the installer database at creation time; it could be created at installation time by a custom action, on the command line, etc. This attribute cannot be specified in conjunction with the Directory attribute.
See Also
Wix Schema, CopyFile


RemoveFiles

Description
Removes files previously installed by the InstallFiles action. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveFolder

Description
Remove an empty folder if the parent component is selected for installation or removal. By default, the folder is the directory of the parent component. This can be overridden by specifying the Directory attribute with a value corresponding to the Id of the directory, or by specifying the Property attribute with a value corresponding to a property that will have a value that resolves to the full path of the folder.
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Primary key used to identify this particular entry. | required
Directory | xs:string | Overrides the directory of the parent component with a specific Directory. This Directory must exist in the installer database at creation time. This attribute cannot be specified in conjunction with the Property attribute.
On xs:enumeration Possible values: {'install', 'uninstall', 'both'}.
This value determines the time at which the folder may be removed. Value of "install" will remove only when the parent component is being installed (msiInstallStateLocal or msiInstallStateSource). Value of "uninstall" will remove only when the parent component is being removed (msiInstallStateAbsent). Value of "both" will remove in either of the above cases. 		required
Property | xs:string | Overrides the directory of the parent component with the value of the specified property. The property should have a value that resolves to the full path of the source directory. The property does not have to exist in the installer database at creation time; it could be created at installation time by a custom action, on the command line, etc. This attribute cannot be specified in conjunction with the Directory attribute.
See Also
Wix Schema, CreateFolder


RemoveFolders

Description
Removes any folders linked to components set to be removed or run from source. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveIniValues

Description
Removes .ini file information specified for removal in the RemoveIniFile table if the component is set to be installed locally or run from source. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveODBC

Description
Removes the data sources, translators, and drivers listed for removal during the installation. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveRegistryValues

Description
Removes a registry value that has been authored into the registry table if the associated component was installed locally or as run from source, and is now set to be uninstalled. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RemoveShortcuts

Description
Manages the removal of an advertised shortcut whose feature is selected for uninstallation or a nonadvertised shortcut whose component is selected for uninstallation. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


ReplacePatch

Description
A patch that is deprecated by this patch.
Parents
PatchCreation
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | uuid | required


ReserveCost

Description
Disk cost to reserve in a folder for running locally and/or from source
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Directory | xs:string | Defaults to Directory of parent Component
RunFromSource | xs:integer | required
RunLocal | xs:integer | required


ResolveSource

Description
Determines the location of the source and sets the SourceDir property if the source has not been resolved yet. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize.
Parents
AdminExecuteSequence, InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


RMCCPSearch

Description
Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. The RMCCPSearch action should be authored into the InstallUISequence table and InstallExecuteSequence table. The installer prevents RMCCPSearch from running in the InstallExecuteSequence sequence if the action has already run in InstallUISequence sequence. The RMCCPSearch action requires the CCP_DRIVE property to be set to the root path on the removable volume that has the installation for any of the qualifying products. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.
See Also
Wix Schema, CCPSearch, ComplianceCheck


Row

Description
Row data for a Custom Table
Parents
CustomTable
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Data (min: 1, max: unbounded)
Attributes
None


ScheduleReboot

Description
Prompts the user to restart the system at the end of installation. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
Text node specifies the condition of the action.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string | The name of an action that this action should come after.
Before | xs:string | The name of an action that this action should come before.
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


SelfRegModules

Description
Processes all modules listed in the SelfReg table and registers all installed modules with the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


SelfUnregModules

Description
Unregisters all modules listed in the SelfReg table that are scheduled to be uninstalled. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


ServiceArgument

Description
Argument used in ServiceControl parent
Parents
ServiceControl


ServiceConfig

Description
Service configuration information for failure actions.
Parents
Component, ServiceInstall
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
FirstFailureActionType xs:enumeration Possible values: {'none', 'reboot', 'restart', 'runCommand'}.
 required
ProgramCommandLine | xs:string
RebootMessage | xs:string
ResetPeriodInDays | xs:integer
RestartServiceDelayInSeconds | xs:integer
SecondFailureActionType xs:enumeration Possible values: {'none', 'reboot', 'restart', 'runCommand'}.
 required
ServiceName | xs:string | Required if not under a ServiceInstall element.
ThirdFailureActionType xs:enumeration Possible values: {'none', 'reboot', 'restart', 'runCommand'}.
 required
Remarks
Nesting a ServiceConfig element under a ServiceInstall element will result in the service being installed to be configured.
Nesting a ServiceConfig element under a component element will result in an already installed service to be configured. If the service does not exist prior to the install of the MSI package, the install will fail.


ServiceControl

Description
Starts, stops, and removes services for parent Component. This element is used to control the state of a service installed by the MSI or MSM file by using the start, stop and remove attributes. For example, Start='install' Stop='both' Remove='uninstall' would mean: start the service on install, remove the service when the product is uninstalled, and stop the service both on install and uninstall.
Parents
Component
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. ServiceArgument (min: 0, max: unbounded): ordered list of arguments when modifying services
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Name | xs:string | required
Remove xs:enumeration Possible values: {'install', 'uninstall', 'both'}.
Start xs:enumeration Possible values: {'install', 'uninstall', 'both'}.
Stop xs:enumeration Possible values: {'install', 'uninstall', 'both'}.
Wait | YesNoType


ServiceDependency

Description
Service or group of services that are dependencies for services in ServiceInstall
Parents
ServiceInstall
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Group | YesNoType


ServiceInstall

Description
Adds and removes services for parent Component
Parents
Component
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Permission (min: 0, max: unbounded): Permissions for this service.
  2. ServiceConfig (min: 0, max: 1): Service Config: failure actions for service
  3. ServiceDependency (min: 0, max: unbounded): ordered list of dependencies when installing services
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Account | xs:string | valid only when ServiceType is ownProcess
Arguments | xs:string | not available for Windows Install v1.0
Description | xs:string
DisplayName | xs:string
EraseDescription | YesNoType | yes will cause Description attribute to be ignored
ErrorControl xs:enumeration Possible values: {'ignore', 'normal', 'critical'}.
 required
Interactive | YesNoType
LocalGroup | xs:string
Name | xs:string | required
Password | xs:string | valid only when Account has password
Start xs:enumeration Possible values: {'auto', 'demand', 'disabled', 'boot', 'system'}.
Windows installer (v1.2) does not currently support boot or system 		required
Type xs:enumeration Possible values: {'ownProcess', 'shareProcess', 'kernelDriver', 'systemDriver'}.
Windows Installer does not currently support kernelDriver or systemDriver 		required
Vital | YesNoType


SetODBCFolders

Description
Checks for existing ODBC drivers and sets the target directory for each new driver to the location of an existing driver. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


SFPCatalog

Description
Adds a system file protection update catalog file
Parents
Fragment, Module, Product, SFPCatalog
Inner Text (xs:string)
Element value can be hex-encoded hash value
Children
Choice of elements (min: 0, max: unbounded)
  • File (min: 0, max: unbounded): Only specify File's element text (primary key)
  • SFPCatalog (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Dependency | xs:string | used to define dependency outside of the package
Name | xs:string | filename for catalog file when installed
src | xs:string | path to catalog file in binary


Shortcut

Description
Shortcut, default target is parent File, CreateFolder, or Component's Directory
Parents
Component, CreateFolder, File
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Advertise | YesNoType
Arguments | xs:string
Description | xs:string
Directory | xs:string | Directory Id where shortcut is to be created | required
Hotkey | xs:integer
Icon | xs:string | Reference to Icon element
IconIndex | xs:integer
LongName | LongFileNameType | Required if preferred name not 8.3 format
Name | ShortFileNameType | required
Show xs:enumeration Possible values: {'normal', 'minimized', 'maximized'}.
Target | xs:string | Default value taken from parent
WorkingDirectory | xs:string


Show

Description
None
Parents
AdminUISequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
After | xs:string
Before | xs:string
Dialog | xs:string | required
OnExit xs:enumeration Possible values: {'success', 'cancel', 'error', 'suspend'}.
mutually exclusive with Before, After, and Sequence attributes
Sequence | xs:integer


SqlDatabase

Description
SQL Database
Parents
Component, Fragment, Module, Product
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • SqlFileSpec (min: 0, max: unbounded)
  • SqlLogFileSpec (min: 0, max: unbounded)
  • SqlScript (min: 0, max: unbounded)
  • SqlString (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
ConfirmOverwrite | YesNoType
ContinueOnError | YesNoType
CreateOnInstall | YesNoType
CreateOnUninstall | YesNoType
Database | xs:string | required
DropOnInstall | YesNoType
DropOnUninstall | YesNoType
Instance | xs:string
Server | xs:string | required
User | xs:string
Remarks
Nesting SqlDatabase under a Component element will result in a SqlDatabase being installed to the machine as the package is installed.
Nesting SqlDatabase under Product, Fragment, or Module results in a database "locator" record being created in the SqlDatabase table. This means that the database itself is neither installed nor uninstalled by the MSI package. It does make the database available for referencing from a SqlString or SqlScript record. This allows MSI to install SqlScripts or SqlStrings to already existing databases on the machine. The install will fail if the database does not exist in these cases.


SqlFileSpec

Description
File specification for a Sql database.
Parents
SqlDatabase
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Filename | xs:string | ID of the file specification.
GrowthSize | xs:string | ID of the file specification.
Id | xs:string | ID of the file specification.
MaxSize | xs:string | ID of the file specification.
Name | xs:string | ID of the file specification.
Size | xs:string | ID of the file specification.


SqlLogFileSpec

Description
File specification for a Sql database.
Parents
SqlDatabase
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Filename | xs:string | ID of the file specification.
GrowthSize | xs:string | ID of the file specification.
Id | xs:string | ID of the file specification.
MaxSize | xs:string | ID of the file specification.
Name | xs:string | ID of the file specification.
Size | xs:string | ID of the file specification.


SqlScript

Description
SQL Script
Parents
Component, SqlDatabase
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. Binary (min: 0, max: 1)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
BinaryKey | xs:string | only valid if no Binary child element
ContinueOnError | YesNoType
ExecuteOnInstall | YesNoType
ExecuteOnUninstall | YesNoType
RollbackOnInstall | YesNoType
RollbackOnUninstall | YesNoType
Sequence | xs:integer
SqlDb | xs:string | required when not child of SqlDatabase
User | xs:string


SqlString

Description
SQL String
Parents
Component, SqlDatabase
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
ContinueOnError | YesNoType
ExecuteOnInstall | YesNoType
ExecuteOnUninstall | YesNoType
RollbackOnInstall | YesNoType
RollbackOnUninstall | YesNoType
Sequence | xs:integer
SQL | xs:string | required
SqlDb | xs:string
User | xs:string


StartServices

Description
Starts system services. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


StopServices

Description
Stops system services. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Subscribe

Description
Sets attributes for events in the EventMapping table
Parents
Control
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Attribute | xs:string | if not present can only handle enable, disable, hide, unhide events
Event | xs:string | must be one of the standard control events'


Substitution

Description
Specifies the configurable fields of a module database and provides a template for the configuration of each field.
Parents
Module
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Column | xs:string | Specifies the target column in the row named in the Row column. | required
Row | xs:string | Specifies the primary keys of the target row in the table named in the Table column. If multiple keys, separated by semicolons. | required
Table | xs:string | Specifies the name of the table being modified in the module database. | required
Value | xs:string | Provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column.


SymbolPath

Description
A path to symbols.
Parents
ExternalFile, TargetFile, TargetImage, UpgradeFile, UpgradeImage
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Path | xs:string | The path. | required


TargetFile

Description
Information about specific files in a target image.
Parents
TargetImage
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. SymbolPath (min: 0, max: 1)
  2. Choice of elements (min: 0, max: unbounded)
    • IgnoreRange (min: 0, max: unbounded)
    • ProtectRange (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | Foreign key into the File table. | required


TargetImage

Description
Contains information about the target images of the product.
Parents
UpgradeImage
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • SymbolPath (min: 0, max: unbounded)
  • TargetFile (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | Identifier for the target image. | required
IgnoreMissingFiles | YesNoType | Files missing from the target image are ignored by the installer.
Order | xs:int | Relative order of the target image. | required
src | xs:string | Full path to the location of the msi file for the target image. | required
Validation | xs:string | Product checking to avoid applying irrelevant transforms.


TargetProductCode

Description
A product code for a product that may receive this patch. (Or '*' for all products.)
Parents
PatchCreation
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required


Text

Description
Alternative to Text attributes when CDATA is needed to escape XML delimiters.
Parents
Control, ListItem
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
src | xs:string | Instructs the text to be imported from a file instead of the element value during the binding process.


TextStyle

Description
TextStyle definition
Parents
UI
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Blue | xs:integer | 0 to 255
Bold | YesNoType
FaceName | xs:string | required
Green | xs:integer | 0 to 255
Italic | YesNoType
Red | xs:integer | 0 to 255
Size | xs:integer | required
Strike | YesNoType
Underline | YesNoType


TypeLib

Description
Register a type library (TypeLib). Please note that in order to properly use this non-advertised, you will need use this element with Advertise='no' and also author the appropriate child Interface elements by extracting them from the type library itself.
Parents
Component, File
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • AppId (min: 0, max: unbounded)
  • Class (min: 0, max: unbounded)
  • Interface (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | uuid | The GUID that identifes the type library. | required
Advertise | YesNoType | Value of 'yes' will create a row in the TypeLib table. Value of 'no' will create rows in the Registry table.
Control | YesNoType | Value of 'yes' means the type library describes controls, and should not be displayed in type browsers intended for nonvisual objects. This attribute can only be set if Advertise='no'.
Cost | xs:int | The cost associated with the registration of the type library in bytes. This attribute cannot be set if Advertise='no'.
Description | xs:string | The localizable description of the type library.
HasDiskImage | YesNoType | Value of 'yes' means the type library exists in a persisted form on disk. This attribute can only be set if Advertise='no'.
HelpDirectory | xs:string | The identifier of the Directory element for the help directory.
Hidden | YesNoType | Value of 'yes' means the type library should not be displayed to users, although its use is not restricted. Should be used by controls. Hosts should create a new type library that wraps the control with extended properties. This attribute can only be set if Advertise='no'.
Language | xs:integer | The language of the type library. This must be a non-negative integer. | required
MajorVersion | xs:string | The major version of the type library. The value should be an integer from 0 - 255.
MinorVersion | xs:string | The minor version of the type library. The value should be an integer from 0 - 255.
Restricted | YesNoType | Value of 'yes' means the type library is restricted, and should not be displayed to users. This attribute can only be set if Advertise='no'.


UI

Description
Enclosing element to compartmentalize UI specifications
Parents
Fragment, Module, Product
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • BillboardAction (min: 0, max: unbounded): Billboard table item with child Controls
  • Binary (min: 0, max: unbounded)
  • ComboBox (min: 0, max: unbounded): ComboBox table with ListItem children
  • Dialog (min: 0, max: unbounded): Dialog specification, called from Sequence
  • Error (min: 0, max: unbounded): Error text associated with install error
  • ListBox (min: 0, max: unbounded): ListBox table with ListItem children
  • ListView (min: 0, max: unbounded): ListView table with ListItem children
  • ProgressText (min: 0, max: unbounded): ActionText entry associated with an action
  • Property (min: 0, max: unbounded)
  • PropertyRef (min: 0, max: unbounded)
  • RadioGroup (min: 0, max: unbounded): RadioButton table with RadioButton children
  • TextStyle (min: 0, max: unbounded): TextStyle entry for use in control text
  • UIText (min: 0, max: unbounded): values for UIText property, not installer Property
  • Sequence (min: 1, max: 1)
    1. AdminUISequence (min: 0, max: 1)
    2. InstallUISequence (min: 0, max: 1)
Attributes
None


UIText

Description
Text associated with certain controls
Parents
UI
Inner Text (xs:string)
Element value is text, may use CDATA if needed to escape XML delimiters
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required


UnpublishComponents

Description
Manages the unadvertisement of components listed in the PublishComponent table. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnpublishFeatures

Description
Removes selection-state and feature-component mapping information from the registry. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnregisterClassInfo

Description
Manages the removal of COM class information from the system registry. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnregisterComPlus

Description
Removes COM+ applications from the registry. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnregisterExtensionInfo

Description
Manages the removal of extension-related information from the system registry. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnregisterFonts

Description
Removes registration information about installed fonts from the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnregisterMIMEInfo

Description
Unregisters MIME-related registry information from the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnregisterProgIdInfo

Description
Manages the unregistration of OLE ProgId information with the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


UnregisterTypeLibraries

Description
Unregisters type libraries from the system. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Upgrade

Description
Upgrade info for a particular UpgradeCode.
Parents
Fragment, Product
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. UpgradeVersion (min: 1, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | uuid | This value specifies the upgrade code for the products that are to be detected by the FindRelatedProducts action. | required


UpgradeFile

Description
Specifies files to either ignore or to specify optional data about a file.
Parents
UpgradeImage
Inner Text
None
Children
Choice of elements (min: 0, max: unbounded)
  • SymbolPath (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
AllowIgnoreOnError | YesNoType | Specifies whether patching this file is vital.
File | xs:string | Foreign key into the File table. | required
Ignore | YesNoType | If yes, the file is ignored during patching, and the next two attributes are ignored. | required
WholeFile | YesNoType | Whether the whole file should be installed, rather than creating a binary patch.


UpgradeImage

Description
Contains information about the upgraded images of the product.
Parents
Family
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. TargetImage (min: 1, max: unbounded)
  2. Choice of elements (min: 0, max: unbounded)
    • SymbolPath (min: 0, max: unbounded)
    • UpgradeFile (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | Identifier to connect target images with upgraded image. | required
src | xs:string | Full path to location of msi file for upgraded image. | required
srcPatch | xs:string | Modified copy of the upgraded installation database that contains additional authoring specific to patching.


UpgradeVersion

Description
None
Parents
Upgrade
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
ExcludeLanguages | YesNoType | Set to "yes" to detect all languages, excluding the languages listed in the Language attribute.
IgnoreRemoveFailure | YesNoType | Set to "yes" to continue installation upon failure to remove a product or application.
IncludeMaximum | YesNoType | Set to "yes" to make the range of versions detected include the value specified in Maximum.
IncludeMinimum | YesNoType | Set to "yes" to make the range of versions detected include the value specified in Minimum. This attribute is "yes" by default.
Language | xs:string | Specifies the set of languages detected by FindRelatedProducts. Enter a list of numeric language identifiers (LANGID) separated by commas (,). Leave this value null to specify all languages. Set ExcludeLanguages to "yes" in order detect all languages, excluding the languages listed in this value.
Maximum | xs:string | Specifies the upper boundary of the range of product versions detected by FindRelatedProducts.
MigrateFeatures | YesNoType | Set to "yes" to migrate feature states from upgraded products by enabling the logic in the MigrateFeatureStates action.
Minimum | xs:string | Specifies the lower bound on the range of product versions to be detected by FindRelatedProducts.
OnlyDetect | YesNoType | Set to "yes" to detect products and applications but do not install.
Property | xs:string | When the FindRelatedProducts action detects a related product installed on the system, it appends the product code to the property specified in this field. The property specified in this field must be a public property and the package author must add the property to the SecureCustomProperties Property. Each UpgradeVersion must have a unique Property value. After FindRelatedProducts the value of this property is a list product codes, separated by semicolons (;), detected on the system.
RemoveFeatures | xs:string | The installer sets the REMOVE property to features specified in this column. The features to be removed can be determined at run time. The Formatted string entered in this field must evaluate to a comma-delimited list of feature names. For example: [Feature1],[Feature2],[Feature3]. No features are removed if the field contains formatted text that evaluates to an empty string. The installer sets REMOVE=ALL only if the Remove field is empty.


User

Description
User for all kinds of things. When it is not nested under a component it is included in the MSI so it can be referenced by other elements such as the User attribute in the AppPool element. When it is nested under a Component element, the User will be created on install and can also be used for reference.
Parents
Component, Fragment, Module, Product
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. GroupRef (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
CanNotChangePassword | YesNoType
CreateUser | YesNoType | Indicates whether or not to create the user. User creation can be skipped if all that is desired is to join a user to groups.
Disabled | YesNoType
Domain | xs:string
FailIfExists | YesNoType | Indicates if the install should fail if the user already exists.
Name | xs:string | required
Password | xs:string | Usually a Property that is passed in on the command-line to keep it more secure.
PasswordExpired | YesNoType | Indicates whether the user must change their password on their first login.
PasswordNeverExpires | YesNoType
RemoveOnUninstall | YesNoType | Indicates whether the user account should be left behind on uninstall.
UpdateIfExists | YesNoType | Indicates if the user account properties should be updated if the user already exists.
See Also
Wix Schema, Group, GroupRef


ValidateProductID

Description
Sets the ProductID property to the full product identifier. This action must be sequenced before the user interface wizard in the InstallUISequence table and before the RegisterUser action in the InstallExecuteSequence table. If the product identifier has already been validated successfully, the ValidateProductID action does nothing. The ValidateProductID action always returns a success, whether or not the product identifier is valid, so that the product identifier can be entered on the command line the first time the product is run. The product identifier can be validated without having the user reenter this information by setting the PIDKEY property on the command line or by using a transform. The display of the dialog box requesting the user to enter the product identifier can then be made conditional upon the presence of the ProductID property, which is set when the PIDKEY property is validated. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence, InstallUISequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Verb

Description
Verb definition for an Extension
Parents
Extension
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Argument | xs:string
Command | xs:string
Sequence | xs:integer | Used only for advertised Verbs
Target | xs:string


WebAddress

Description
WebAddress for WebSite
Parents
WebSite
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Header | xs:string
IP | xs:string | For IP address "All Unassigned", do not specify this attribute or specify its value as "*".
KeyPath | YesNoType
Port | xs:string | required
Secure | YesNoType


WebApplication

Description
Defines properties for a web application. These properties can be used for more than one application defined in a web site, directory, or vroot, by defining this element in a common location and referring to it by setting the WebApplication attribute of the WebSite, WebDir, and WebVirtualDir elements.
Parents
Fragment, Module, Product, WebSite, WebVirtualDir
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. WebApplicationExtension (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
AllowSessions | YesNoDefaultType | Sets the Enable Session State option. When enabled, you can set the session timeout using the SessionTimeout attribute.
Buffer | YesNoDefaultType | Sets the option that enables response buffering in the application, which allows ASP script to set response headers anywhere in the script.
ClientDebugging | YesNoDefaultType | Enable ASP client-side script debugging.
DefaultScript xs:enumeration Possible values: {'VBScript', 'JScript'}.
Sets the default script language for the site.
Isolation xs:enumeration Possible values: {'low', 'medium', 'high'}.
Sets the application isolation level for this application for pre-IIS 6 applications. Low means the application executes within the IIS process, medium executes pooled in a separate process, and high means execution alone in a separate process.
Name | xs:string | Sets the name of this application. | required
ParentPaths | YesNoDefaultType | Sets the parent paths option, which allows a client to use relative paths to reach parent directories from this application.
ScriptTimeout | xs:integer | Sets the timeout value for executing ASP scripts.
ServerDebugging | YesNoDefaultType | Enable ASP server-side script debugging.
SessionTimeout | xs:integer | Sets the timeout value for sessions in minutes.
WebAppPool | xs:string | References the Id attribute of a WebAppPool element to use as the application pool for this application in IIS 6 applications.


WebApplicationExtension

Description
Extension for WebApplication
Parents
WebApplication
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
CheckPath | YesNoType
Executable | xs:string | usually a Property that resolves to short file name path | required
Script | YesNoType
Verbs | xs:string


WebAppPool

Description
IIS6 Application Pool
Parents
Component, Fragment, Module, Product
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. RecycleTime (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | Id of the AppPool. | required
CpuAction xs:enumeration Possible values: {'none', 'shutdown'}.
Action taken when CPU exceeds maximum CPU use (as defined with MaxCpuUsage and RefreshCpu).
Identity xs:enumeration Possible values: {'networkService', 'localService', 'localSystem', 'other'}.
Identity you want the AppPool to run under. Use the 'other' value in conjunction with the User attribute to specify non-standard user.
IdleTimeout | xs:integer | Shutdown worker process after being idle for (time in minutes).
MaxCpuUsage | PercentType | Maximum CPU usage (percent).
MaxWorkerProcesses | xs:integer | Maximum number of worker processes.
Name | xs:string | Name of the AppPool to be shown in IIs. | required
QueueLimit | xs:integer | Limit the kernel request queue (number of requests).
RecycleMinutes | xs:integer | How often, in minutes, you want the AppPool to be recycled.
RecycleRequests | xs:integer | How often, in requests, you want the AppPool to be recycled.
RefreshCpu | xs:integer | Refresh CPU usage numbers (in minutes).
User | xs:string | User account to run the AppPool as. To use this, you must set the Identity attribute to 'other'.


WebDir

Description
Defines a subdirectory within an IIS web site. When this element is a child of WebSite, the web directory is defined within that web site. Otherwise the web directory must reference a WebSite element via the WebSite attribute.
Parents
Component, WebSite
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
DirProperties | xs:string | References the Id attribute for a WebDirProperties element that specifies the security and access properties for this web directory. | required
Path | xs:string | Specifies the name of this web directory. | required
WebApplication | xs:string | References the Id attribute for a WebApplication element that specifies web application settings for this web directory. If a WebApplication child is not specified, the web directory does not host web applications.
WebSite | xs:string | References the Id attribute for a WebSite element in which this directory belongs. Required when this element is not a child of a WebSite element.


WebDirProperties

Description
WebDirProperites used by one or more WebSites. Lists properties common to IIS web sites and vroots. Corresponding properties can be viewed through the IIS Manager snap-in. One property entry can be reused by multiple sites or vroots using the Id field as a reference, using WebVirtualDir.DirProperties, WebSite.DirProperties, or WebDir.DirProperties.
Parents
Fragment, Module, Product
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
AccessSSL | YesNoType | A value of true indicates that file access requires SSL file permission processing, with or without a client certificate. This corresponds to AccessSSL flag for AccessSSLFlags IIS metabase property.
AccessSSL128 | YesNoType | A value of true indicates that file access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate. This corresponds to AccessSSL128 flag for AccessSSLFlags IIS metabase property.
AccessSSLMapCert | YesNoType | This corresponds to AccessSSLMapCert flag for AccessSSLFlags IIS metabase property.
AccessSSLNegotiateCert | YesNoType | This corresponds to AccessSSLNegotiateCert flag for AccessSSLFlags IIS metabase property.
AccessSSLRequireCert | YesNoType | This corresponds to AccessSSLRequireCert flag for AccessSSLFlags IIS metabase property.
AnonymousAccess | YesNoType | Sets the Enable Anonymous Access checkbox, which maps anonymous users to a Windows user account. When setting this to 'yes' you should also provide the user account using the AnonymousUser attribute, and determine what setting to use for the IIsControlledPassword attribute. Defaults to 'no.'
AnonymousUser | xs:string | Reference to the Id attribute on the User element to be used as the anonymous user for the directory. See the User element for more information.
AspDetailedError | YesNoType | Sets the option for whether to send detailed ASP errors back to the client on script error. Default is 'no.'
BasicAuthentication | YesNoType | Sets the Basic Authentication option, which allows clients to provide credentials in plaintext over the wire. Defaults to 'no.'
CacheControlCustom | xs:string | Custom HTTP 1.1 cache control directives.
CacheControlMaxAge | xs:integer | Integer value specifying the cache control maximum age value.
ClearCustomError | YesNoType | Specifies whether IIs will return custom errors for this directory.
DefaultDocuments | xs:string | The list of default documents to set for this web directory, in comma-delimited format.
DigestAuthentication | YesNoType | Sets the Digest Authentication option, which allows using digest authentication with domain user accounts. Defaults to 'no.'
Execute | YesNoType
HttpExpires | xs:string | Value to set the HttpExpires attribute to for a Web Dir in the metabase.
IIsControlledPassword | YesNoType | Sets whether IIS should control the password used for the Windows account specified in the AnonymousUser attribute. Defaults to 'no.'
Index | YesNoType | Sets the Index Resource option, which specifies whether this web directory should be indexed. Defaults to 'no.'
LogVisits | YesNoType | Sets whether visits to this site should be logged. Defaults to 'no.'
PassportAuthentication | YesNoType | Sets the Passport Authentication option, which allows clients to provide credentials via a .Net Passport account. Defaults to 'no.'
Read | YesNoType
Script | YesNoType
WindowsAuthentication | YesNoType | Sets the Windows Authentication option, which enables integrated Windows authentication to be used on the site. Defaults to 'no.'
Write | YesNoType


WebError

Description
WebError used by WebSites and VirtualDirs
Parents
WebSite, WebVirtualDir
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
ErrorCode | xs:integer | required
Path | xs:string
SubCode | xs:integer | required
Type xs:enumeration Possible values: {'default', 'file', 'url'}.
 required


WebFilter

Description
IIs Filter for a Component
Parents
Component, WebSite
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | The unique Id for the web filter. | required
Description | xs:string | Description of the filter.
Flags | xs:integer | Sets the MD_FILTER_FLAGS metabase key for the filter. This must be an integer. See MSDN 'FilterFlags' documentation for more details.
LoadOrder | xs:string | Allowed values: "first", "last", number
Name | xs:string | The name of the filter to be used in IIS. | required
Path | xs:string | Usually a Property that resolves to short file name path | required
WebSite | xs:string | Required if not found as child of WebSite element


WebLog

Description
WebLog definition.
Parents
Fragment, Module, Product
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | Identifier for the WebLog. | required
Type xs:enumeration Possible values: {'IIS', 'NCSA', 'ODBC', 'W3C'}.
IIS - Microsoft IIS Log File Format, NCSA - NCSA Common Log File Format, ODBC - ODBC Logging, W3C - W3C Extended Log File Format 		required


WebProperty

Description
IIsProperties
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id xs:enumeration Possible values: {'IIs5IsolationMode', 'MaxGlobalBandwidth', 'LogInUTF8'}.
Value | xs:string


WebServiceExtension

Description
The WebServiceExtension property is used by the Web server to determine whether a Web service extension is permitted to run.
Parents
Component
Inner Text
None
Children
None
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Allow | YesNoType | Indicates if the extension is allowed or denied. | required
Description | xs:string | Description of the extension.
File | xs:string | Usually a Property that resolves to short file name path | required
Group | xs:string | String used to identify groups of extensions.
UIDeletable | YesNoType | Indicates if the UI is allowed to delete the extension from the list of not. Default: Not deletable.


WebSite

Description
IIs Web Site
Parents
Component, Fragment, Module, Product
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. WebAddress (min: 1, max: unbounded)
  2. WebApplication (min: 0, max: 1)
  3. Choice of elements (min: 0, max: unbounded)
    • WebDir (min: 0, max: unbounded)
    • WebError (min: 0, max: unbounded)
    • WebFilter (min: 0, max: unbounded)
    • WebVirtualDir (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | Identifier for the WebSite. Used within the MSI package only. | required
AutoStart | YesNoType | Specifies whether to automatically start the web site.
ConfigureIfExists | YesNoType | Specifies whether to configure the web site if it already exists. Note: This will not affect uninstall behavior. If the web site exists on uninstall, it will be removed.
Description | xs:string | This is the name of the web site that will show up in the IIS management console. | required
Directory | xs:string | Root directory of the web site. Resolved to a directory in the Directory table at install time by the server custom actions.
DirProperties | xs:string | Reference to WebDirProperties element.
Sequence | xs:integer | Sequence that the web site is to be created in.
StartOnInstall | YesNoType | Specifies whether to start the web site on install.
WebApplication | xs:string | Reference to a WebApplication that is to be installed as part of this web site.
WebLog | xs:string | Reference to WebLog definition.
Remarks
Nesting WebSite under a Component element will result in a WebSite being installed to the machine as the package is installed.
Nesting WebSite under Product, Fragment, or Module results in a web site "locator" record being created in the IIsWebSite table. This means that the web site itself is neither installed nor uninstalled by the MSI package. It does make the database available for referencing from a WebApplication, WebVirtualDir or WebDir record. This allows an MSI to install WebApplications, WebVirtualDirs or WebDirs to already existing web sites on the machine. The install will fail if the web site does not exist in these cases.


WebVirtualDir

Description
Defines an IIS virtual directory. When this element is a child of WebSite element, the virtual directory is defined within that web site. Otherwise this virtual directory must reference a WebSite element via the WebSite attribute
Parents
Component, WebSite
Inner Text
None
Children
Sequence (min: 1, max: 1)
  1. WebApplication (min: 0, max: 1)
  2. WebError (min: 0, max: unbounded)
  3. MimeMap (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
Id | xs:string | required
Alias | xs:string | Sets the application name, which is the URL relative path used to access this virtual directory | required
Directory | xs:string | References the Id attribute for a Directory element that points to the content for this virtual directory. | required
DirProperties | xs:string | References the Id attribute for a WebDirProperties element that specifies the security and access properties for this virtual directory.
WebApplication | xs:string | References the Id attribute for a WebApplication element that specifies web application settings for this virtual directory. If a WebApplication child is not specified, the virtual directory does not host web applications.
WebSite | xs:string | References the Id attribute for a WebSite in which this virtual directory belongs. Required when this element is not a child of WebSite element.


Wix

Description
This is the top-level container element for every wxs file. Amongst the possible children, the Product, Module, and PatchCreation elements are analogous to the main function in a C program. There can only be one of these present when linking occurs. Product compiles into an msi file, Module compiles into an msm file, PatchCreation compiles into a pcp file. The Fragment element is an atomic unit which ultimately links into either a Product, Module, or PatchCreation. The Fragment can either be completely included or excluded during linking.
Parents
None
Inner Text
None
Children
Choice of elements (min: 0, max: 1)
  • PatchCreation (min: 0, max: 1)
  • Sequence (min: 1, max: 1)
    1. Choice of elements (min: 0, max: 1)
      • Module (min: 0, max: 1)
      • Product (min: 0, max: 1)
    2. Fragment (min: 0, max: unbounded)
Attributes
Name | Type | Description | Usage
RequiredVersion | xs:string | Required version of the WiX toolset to compile this input file.


WriteEnvironmentStrings

Description
Modifies the values of environment variables. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


WriteIniValues

Description
Writes the .ini file information that the application needs written to its .ini files. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


WriteRegistryValues

Description
Sets up an application's registry information. The condition for this action may be specified in the element's inner text.
Parents
InstallExecuteSequence
Inner Text (xs:string)
This element may have inner text.
Children
None
Attributes
Name | Type | Description | Usage
Sequence | xs:integer | A value used to indicate the position of this action in a sequence.
Suppress | YesNoType | If yes, this action will not occur.


Tools

  • Preprocessor
  • Compiler (candle)
  • Linker (light)
  • Decompiler (dark)


Preprocessor

Introduction

Often you will need to add different pieces of your setup during build time depending on many factors such as the SKU being built. This is done by using conditional statements that will filter the xml before it is sent to the WiX compiler (candle). If the statement evaluates to true, the block of xml will be sent to candle. If the statement evaluates to false, candle will never see that section of xml.

The conditional statements are Boolean expressions based on environment variables, variables defined in the xml, literal values, and more.

Example

Let’s start with an example. Say you want to include a file if you’re building the “Enterprise SKU.” Your build uses an environment variable %MySku%=Enterprise to specify this sku.

When you build the enterprise sku, this file will be included in the xml passed on to candle. When you build a different sku, the xml from EnterpriseFeature.wxs will be ignored.

<?if $(env.MySku) = Enterprise ?>
  <?include EnterpriseFeature.wxs ?>
<?endif ?>

Include Files <?include?>

As shown in the example above, files can be included by using the include tag. The filename referenced in the tag will be processed as if it were part of this file.

The root element of the include file must be <Include>. There are no other requirements beyond the expected wix schema. For example,

<Include>
   <Feature Id='MyFeature' Title='My 1st Feature' Level='1'>
      <ComponentRef Id='MyComponent' />
   </Feature>
</Include>

Variables

Any variable can be tested for its value or simply its existence. Custom variables can also be defined in your xml.

Three types of variables are supported:
$(env._NtPostBld)
Gets the environment variable %_NtPostBld%
$(sys.CurrentDir)
Gets the system variable for the current directory
$(var.A)
Gets the variable A that was defined in this xml

The preprocessor evaluates variables throughout the entire document, including in <?if?> expressions and attribute values.

Environment Variables

Any environment variable can be referenced with the syntax $(env.VarName). For example, if you want to retrieve the environment variable %_BuildArch%, you would use $(env._BuildArch). Environment variable names are case-insensitive.

System Variables

WiX has some built-in variables. They are referenced with the syntax $(sys.VARNAME) and are always in upper case.

  • CURRENTDIR - the current directory where the build process is running
  • SOURCEFILEPATH – the full path to the file being processed
  • SOURCEFILEDIR – the directory containing the file being processed
NOTE: All built-in directory variables are “” terminated.

Custom variables <? define ?>

If you want to define custom variables, you need to use the <?define?> statement. Later, the variables are referred to in the <?if?> statements with the syntax $(var.VarName). Variable names are case-sensitive.

How to define the existence of a variable:
<?define MyVariable ?>

How to define the value of a variable (Quotes are only required if it contains spaces):
<?define MyVariable = “Hello World” >

The right side of the definition can also refer to another variable:
<?define MyVariable = $(var.BuildPath)\x86\bin\ ?>

How to undefine a variable:
<?undef MyVariable ?>

Conditional Statements

There are several conditional statements, they include:
  • <?if ?>
  • <?ifdef ?>
  • <?ifndef ?>
  • <?else?>
  • <?elseif ?>
  • <?endif?>

The purpose of the conditional statement is to allow you to include or exclude a segment of xml at build time. If the expression evaluates to true, it will be included. If it evaluates to false, it will be ignored.

The conditional statements always begin with either the <?if ?>, <?ifdef ?>, or <?ifndef ?> tags. They are followed by an xml block, an optional <?else?> or <?elseif ?> tag, and must end with an <?endif?> tag.

Expressions (used in <?if ?> and <?elseif ?>)

For example: <?if [expression]?>

The expression found inside the <?if ?> and <?elseif ?> tags is a Boolean expression. It adheres to a simple grammar that follows these rules:

  • The expression is evaluated left to right
  • Expressions are case-sensitive with the following exceptions:
    • Environmental variable names
    • These keywords: and, or, not
  • All variables must use the $() syntax or else they will be considered a literal value.
  • If you want to use a literal $(, escape the dollar sign with a second one. For example, $$(
  • Variables can be used to check for existence
  • Variables can be compared to a literal or another variable
    • Comparisons with = and != are string comparisons.
    • Comparisons with inequality operators (<, <=, >, >=) must be done on integers.
    • If the variable doesn’t exist, the comparison will always evaluate to false
  • The operator precedence is as follows. Note that “and” and “or” have the same precedence:
    • ""
    • (), $( )
    • <, >, <=, >=, =, !=
    • Not
    • And, Or
  • Nested parenthesis are allowed.
  • Literals can be surrounded by quotes, although quotes are not required.
  • Quotes, leading, and trailing white space are stripped off literal values.
  • Invalid expressions will cause an exception to be thrown.

Variables (used in <ifdef ?> and <ifndef ?>)

For example: <?ifdef [variable] ?>

For <ifdef ?>, if the variable has been defined, this statement will be true. <ifndef ?> works in the exact opposite way.

More Examples

Note that these examples will actually each be a no-op because there aren’t any tags between the if and endif tags.
   <?define myValue  = "3"?>
   <?define system32=$(env.windir)\system32  ?>
   <?define B = "good var" ?>
   <?define C =3 ?>
   <?define IExist ?>

   <?if $(var.Iexist)       ?><?endif?> <!-- true -->
   <?if $(var.myValue) = 6  ?><?endif?> <!-- false -->
   <?if $(var.myValue)!=3   ?><?endif?> <!-- false -->
   <?if not "x"= "y"?>              <?endif?> <!-- true -->
   <?if $(env.systemdrive)=a?><?endif?> <!-- false -->
   <?if 3 < $(var.myValue)?>   <?endif?> <!-- false -->
   <?if $(var.B) = "good VAR"?> <?endif?> <!-- false -->
   <?if $(var.A) and not $(env.MyEnvVariable)      ?> <?endif?> <!-- false -->
   <?if $(var.A) Or ($(var.B) And $(var.myValue) >=3)?><?endif?> <!-- true -->
   <?ifdef IExist ?> <!-- true -->
     <?else?> <!-- false -->
   <?endif?>

Iteration Statements

There is a single iteration statement, <?foreach variable-name in semi-colon-delimited-list ?> <?endforeach>. When this occurs the preprocessor will
  • create a private copy of the variable context
  • set the variable in the foreach statement to an iteration on the semicolon delimited list
  • generate a fragment with the variable substituted
The affect of this process is that the fragment authored is just template forwhich the preprocessor will do the iteration to generate the literal of fragments. WiX natively only supports using LCID as a variable name in the ?foreach statement however, one can use the preprocessor extensions (more below) to provide custom support. The variable name in the ?foreach statement can be proceeded with a "var.". When the variable is used in the fragment, it must be proceeded with a "var."

An few examples:

<?foreach LCID in "1033;1041;1055"?>
    <Fragment Id='Fragment.$(var.LCID)'>
        <DirectoryRef Id='TARGETDIR'>
            <Component Id='MyComponent.$(var.LCID)' />
        </DirectoryRef>
    </Fragment>
<?endforeach?>
or
<?define LcidList=1033;1041;1055?>
<?foreach LCID in $(var.LcidList)?>
    <Fragment Id='Fragment.$(var.LCID)'>
        <DirectoryRef Id='TARGETDIR'>
            <Component Id='MyComponent.$(var.LCID)' />
        </DirectoryRef>
    </Fragment>
<?endforeach?>
or
filename: ExtentOfLocalization.wxi
<Include>
    <?define LcidList=1033;1041;1055?>
</Include>

and

<?include ExtentOfLocalization.wxi ?>
<?foreach LCID in $(var.LcidList)?>
    <Fragment Id='Fragment.$(var.LCID)'>
        <DirectoryRef Id='TARGETDIR'>
            <Component Id='MyComponent.$(var.LCID)' />
        </DirectoryRef>
    </Fragment>
<?endforeach?>

An alternative to the foreach process would be to write the template WiX fragment into a separate file and have another process generate the authoring that will be passed to WiX. The greatest merit of this alternative is that it's easier to debug.

Extensions

WiX has support for preprocessor extensions via the ProprocessorExtension class. The PreprocessorExtension can provide callbacks with context at foreach initialization, variable evaluation, and the last call before invoking the compiler (for full custom preprocessing). See the preprocessor.cs source file and the preprocessorextension.cs source file for more information.


Compiler (candle)

The Windows Installer XML compiler is exposed by candle.exe. candle is responsible for preprocessing the input .wxs files into valid well-formed XML documents against the WiX schema, wix.xsd. Then, each post-processed source file is compiled into a .wixobj file.

The compilation process is relatively straight forward. The WiX schema lends itself to a simple recursive descent parser. The compiler processes each element in turn creating new symbols, calculating the necessary references and generating the raw data for the .wixobj file.

The second version of candle is not significantly different from the first implementation. Any changes were either made to enable the new symbol/reference linking or based on feedback from customers. Some of the differences between versions include: the new object file format is XML instead of MSI, modularization of primary keys now happens at link time, and binary streams are imported at link time.


Linker (light)

The Windows Installer XML linker is exposed by light.exe. light is responsible for processing one or more .wixobj files, retrieving metadata from various external files and creating a Windows Installer database (MSI or MSM). When necessary, light will also create cabinets and embed streams in the created Windows Installer database.

The linker begins by searching the set of object files provided on the command line to find the entry section. If more than one entry section is found, light fails with an error. This failure is necessary because the entry section defines what type of Windows Installer database is being created, a MSI () or MSM (). It is not possible to create two databases from a single link operation.

While the linker was determining the entry section, the symbols defined in each object file are stored in a symbol table. After the entry section is found, the linker attempts to resolve all of the references in the section by finding symbols in the symbol table. When a symbol is found in a different section, the linker recursively attempts to resolve references in the new section. This process of gathering the sections necessary to resolve all of the references continues until all references are satisfied. If a symbol cannot be found in any of the provided object files, the linker aborts processing with an error indicating the undefined symbol.

After all of the sections have been found, complex and reverse references are processed. This processing is where Components and Merge Modules are hooked to their parent Features or, in the case of Merge Modules, Components are added to the ModuleComponents table. The reverse reference processing adds the appropriate Feature identifier to the necessary fields for elements like, Shortcut, Class, and TypeLib.

Once all of the references are resolved, the linker processes all of the rows retrieving the language, version, and hash for referenced files, calculating the media layout, and including the necessary standard actions to ensure a successful installation sequence. This part of the processing typically ends up generating additional rows that get added associated with the entry section to ensure they are included in the final Windows Installer database.

Finally, light works through the mechanics of generating IDT files and importing them into the Windows Installer database. After the database is fully created, the final post processing is done to merge in any Merge Modules and create a cabinet if necessary. The result is a fully functional Windows Installer database.


Dark

Dark is a tool for converting an MSI or MSM file into a WiX source file. This tool is very useful for getting all your authoring into a WiX source file when you have an existing MSI or MSM. However, you will then need to tweak this file to accomodate different languages and breaking things into fragments.


WiX Files

All input files and intermediate files for WiX are xml files. Output is in the form of standard Windows Installer database files.

Source files (.wxs and .wxi) are compiled, producing object files (.wixobj). These objects files are then consumed by the linker which produces Windows Installer database files (.msi or .msm). This is analogous to the C++ model of compiling source code to object files, then linking to produce executables.

Input Files
  • Include Files (.wxs)
  • Source Files (.wxs)
Intermediate Files
  • Object Files (.wixobj)
Output Files
  • Installer Database (.msi)
  • Merge Module (.msm)


Include Files (.wxi)

A .wxi file is analogous to .h files for C++. The root element of this file is <Include/>. Everything under the root element will be inserted when this file is included in another source or include file.


Source Files (.wxs)

All .wxs files are well-formed XML documents that contain a single root element named . The rest of the source file may or may not adhere to the WiX schema before preprocessing. However, after being preprocessed all source files must conform to the WiX schema or they will fail to compile.

The root element can contain at most one of the following two elements as children: , . However, there can be an unbounded number elements as children of the root element. When a source file is compiled into an object file, each instance of these elements creates a new section in the object file. Therefore, these three elements are often referred to as section elements.

It is important to note, that there can be only one or section element per source file because they are compiled into special sections called entry sections. Entry sections are used as starting points in the linking process. Sections, entry sections, and the entire linking process are described in greater detail later in this document.

The children of the section elements define the contents of the Windows Installer database. You’ll recognize elements that map to entries in the Property table and a hierarchy of elements that build up the Directory table. Most elements contain an “Id” attribute that will act as the primary key for the resulting row in the Windows Installer database. Note, in the first release of the WiX schema the primary key was represented by the text of the element. This location for the primary key was undesirable for several reasons and has been moved to the “Id” attribute. In most cases, the “Id” attribute also defines a symbol when the source file is compiled into an object file.


Object Files (.wixobj)

A .wixobj file is created by the compiler for each source file compiled. The .wixobj file is an XML document that follows the objects.xsd schema defined in the WiX project. As stated above the .wixobj file contains one or more sections that, in turn, contain symbols and references to other symbols.

While the symbols and references are arguably the most important pieces of data in the .wixobj file, they are rarely the bulk of the information. Instead, the majority of most .wixobj files are composed of , and elements that provide the raw data to be placed in the Windows Installer database. In many cases, the linker will not only process the symbols and references but also use and update the raw data from the .wixobj file.

It is interesting to note that the object file schema, objects.xsd, uses camel casing where the source file schema, wix.xsd, uses Pascal casing. This was a conscious choice to indicate that the object files are not intended to be edited by the user. In fact, all schemas that defines data to be processed only by the WiX tools use camel casing.


Windows Installer Installation Packages

The installation package file (.msi) is the basis for vehicle for delivering setup logic to the Windows Installer. For more information on msi files, please see the Windows Installer help file (msi.chm) or visit online at MSDN.


Windows Installer Merge Modules

The merge module file (.msm) is used for sharing setup logic amongst different groups. Basically, a merge module can be created by one group, then merged into another group's installation package. For more information on msi files, please see the Windows Installer help file (msi.chm) or visit online at MSDN.


Building WiX

Simply run "make.bat" in the root of the WiX project. This will build into a release\debug directory by default. Specifying "make.bat ship" will create ship binaries in release\ship. If you installed VS.NET to a non standard directory, specify "make.bat debug fullpathto\devenv.com" to build.


Getting Help

Please see sourceforge.net/projects/wix for more information.


Extensions

WiX has support for three classes of extensions

Introduction

  • Preprocessor Extensions allow clients to modify authoring files before they are processed by the compiler.
  • Compiler Extensions allow clients to custom compile authored XML into internal table representation before it's written to binary form.
  • Binder Extensions allow clients to the feed the interlace image processing and data finalization.
Through these extensions one can extend WiX to support custom preprocessing, XML syntax compilation, or binding semantics for ones particular layout generation process.

Common Requirements

How to use each should start in the source code but they all have a few things in common
  • Implemented in same version of .NET 1.1 as the rest of WiX
  • Build a subclass of the appropriate extension object giving it a easily distinguishable name.
  • Build a schema of the appropriate syntax to provide validation checking where possible.
  • Build internal table definitions and register them with the compiler.
  • Build overrides for extendable methods and virtual members which will get invoked at the approriate location during the single pass compile.
  • Build extension into a DLL.
  • Place extension DLL next to WiX EXEs.
  • Registered with WiX via command line argument to the compiler

Considerations

Before investing in an extension, one should evaluate whether an external tool and the ?include syntax (from the preprocessor) will provide the needed flexability for your technical needs. Multiple extensions and extension types are supported but there is no guarentee of the order a particular class of extensions will be processes so there should be no sequencing dependencies between extensions within the same extension class.


autogenuuid (Simple Type)

Description
Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF". A GUID can be auto-generated by writing all question marks like this: "????????-????-????-????-????????????". Also allows "PUT-GUID-HERE" for use in examples.
Pattern Type
Must match the regular expression: '[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}|\?{8}\-\?{4}\-\?{4}\-\?{4}\-\?{12}|PUT\-GUID\-HERE'.


ClassContextType (Simple Type)

Description
Enum type for the Class element's Context attribute list.
Enumeration Type
Possible values: {LocalServer, LocalServer32, InprocServer, InprocServer32}


HexType (Simple Type)

Description
This type supports any hexadecimal number. Both upper and lower case is acceptable for letters appearing in the number. This type also includes the empty string: "".
Pattern Type
Must match the regular expression: '[0-9A-Fa-f]*'.


LocalizableInteger (Simple Type)

Description
Values of this type must be an integer or the value can be a localization variable with the format $(loc.VARIABLE).
Pattern Type
Must match the regular expression: '[0-9][0-9]*|\$\(loc\.[_A-Za-z][0-9A-Za-z_]*\)'.


LongFileNameType (Simple Type)

Description
Values of this type will look like: "Long File Name.extension". The following characters are not allowed: \ ? | > : / * " or less-than. The name must be shorter than 260 characters. The value could also be a localization variable with the format $(loc.VARIABLE).
Pattern Type
Must match the regular expression: '[^\\\?|><:/\*"]{1,259}|\$\(loc\.[_A-Za-z][0-9A-Za-z_]*\)'.


ModularizeType (Simple Type)

Description
None
Enumeration Type
Possible values: {None, Column, Property, Condition, CompanionFile, SemicolonDelimited}


PercentType (Simple Type)

Description
Values of this type are any integers between 0 and 100, inclusive.
xs:nonNegativeInteger Type
  • xs:maxInclusive value='100'


ShortFileNameType (Simple Type)

Description
Values of this type will look like: "FileName.ext". The following characters are not allowed: \ ? | > : / * " + , ; = [ ] less-than, or whitespace. The name cannot be longer than 8 characters and the extension cannot exceed 3 characters. The value could also be a localization variable with the format $(loc.VARIABLE).
Pattern Type
Must match the regular expression: '[^\\\?|><:/\*"\+,;=\[\] ]{1,8}(\.[^\\\?|><:/\*"\+,;=\[\] ]{0,3})?|\$\(loc\.[_A-Za-z][0-9A-Za-z_]*\)'.


uuid (Simple Type)

Description
Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF".
Pattern Type
Must match the regular expression: '[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}'.


uuidorexample (Simple Type)

Description
Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF", but also allows "PUT-GUID-HERE" for use in examples.
Pattern Type
Must match the regular expression: '[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}|PUT\-GUID\-HERE'.


YesNoDefaultType (Simple Type)

Description
Values of this type will either be "default", "yes", or "no".
Enumeration Type
Possible values: {default, no, yes}


YesNoType (Simple Type)

Description
Values of this type will either be "yes" or "no".
Enumeration Type
Possible values: {no, yes}