Folders and Directories in WixToolset
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>
Weitere Beiträge innerhalb der Kategorie