Components in Wixtoolset have to be linked to a Directory. All used Directories have to be registered in a DirectoryTable. An overview of the reserved folders are on MSDN.

The code of this blog post and many more examples are hosted on GitHub.

To avoid the repeating manufacture and product name, these values are stored in variables.

<?xml version="1.0" encoding="utf-8"?>

<Include>
  <?define Manufacturer = "KargWare" ?>
  <?define ProductName = "MyDemoProduct" ?>
</Include>

The simplest directory table, with just the entry for program files

<?xml version="1.0" encoding="UTF-8"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment Id="FragDirectories">
    <Directory Id="TARGETDIR" Name="SourceDir">

      <!-- C:\Program Files (x86)\MANUFACTURER\PRODUCT -->
      <Directory Id="ProgramFilesFolder">
        <Directory Id="ManufacturerFolder" Name="KargWare">
          <Directory Id="APPLICATIONFOLDER" Name="MyDemoProduct">
          </Directory>
        </Directory>
      </Directory>

    </Directory>
    </Fragment>
</Wix>

A table of some special folders

Wix name Environment name Path
LocalAppDataFolder %LocalAppData% C:\Users{USERNAME}\AppData\Local
AppDataFolder %AppData% C:\Users{USERNAME}\AppData\Roaming
CommonAppDataFolder %AllUsersProfile% C:\ProgramData
DesktopFolder   C:\Users{USERNAME}\Desktop
ProgramMenuFolder   C:\ProgramData\Microsoft\Windows\Start Menu\Programs
StartMenuFolder   C:\ProgramData\Microsoft\Windows\Start Menu
StartupFolder   C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
ProgramFilesFolder   C:\Program Files (x86)\MANUFACTURER\PRODUCT
ProgramFiles64Folder   C:\Program Files\MANUFACTURER\PRODUCT

An example with many folders and directories for wixtoolset which is using the variables file

<?xml version="1.0" encoding="UTF-8"?>

<?include ..\_SolutionItems\Variables.wxi ?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment Id="FragDirectories">
    <Directory Id="TARGETDIR" Name="SourceDir">

      <!-- %LocalAppData%, C:\Users\{USERNAME}\AppData\Local -->
      <Directory Id="LocalAppDataFolder">
        <Directory Id="LocalAppDataManufacturerFolder" Name="$(var.Manufacturer)">
          <Directory Id="LocalAppDataProductDatabaseFolder" Name="$(var.ProductName)" />
        </Directory>
      </Directory>

      <!-- %AppData%, C:\Users\{USERNAME}\AppData\Roaming -->
      <Directory Id="AppDataFolder">
        <Directory Id="AppDataManufacturerFolder" Name="$(var.Manufacturer)">
          <Directory Id="AppDataProductDatabaseFolder" Name="$(var.ProductName)" />
        </Directory>
      </Directory>

      <!-- %AllUsersProfile%, C:\ProgramData -->
      <Directory Id="CommonAppDataFolder">
        <Directory Id="CommonAppDataManufacturerFolder" Name="$(var.Manufacturer)">
          <Directory Id="CommonAppDataProductDatabaseFolder" Name="$(var.ProductName)" />
        </Directory>
      </Directory>

      <Directory Id="DesktopFolder"/>

      <!-- C:\ProgramData\Microsoft\Windows\Start Menu\Programs -->
      <Directory Id="ProgramMenuFolder">
        <Directory Id="ApplicationProgramsFolder" Name="$(var.Manufacturer)"/>
      </Directory>

      <!-- C:\ProgramData\Microsoft\Windows\Start Menu -->
      <!-- C:\Users\{USERNAME}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs -->
      <Directory Id="StartMenuFolder">
        <Directory Id="StartMenuProductFolder" Name="$(var.ProductName)"/>
      </Directory>

      <!-- C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp -->
      <Directory Id="StartupFolder"/>

      <!-- C:\Program Files (x86)\MANUFACTURER\PRODUCT -->
      <Directory Id="ProgramFilesFolder">
        <Directory Id="ManufacturerFolder" Name="$(var.Manufacturer)">
          <Directory Id="APPLICATIONFOLDER" Name="$(var.ProductName)">
          </Directory>
        </Directory>
      </Directory>

    </Directory>
    </Fragment>
</Wix>