Author a Bundle Package Manifest
In order for any package to be consumable by a Bundle, a package definition needs to be authored that describes the package. This authoring can either go directly under the Chain element in the Bundle authoring, or in a Fragment which can then be consumed by a Bundle by putting a PackageGroupRef inside the Chain. The latter method enables sharing of the same package definition across different Bundle packages.
The WiX schema supports the following chained package types:
Here is an example of authoring an ExePackage in a sharable fragment:
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<PackageGroup Id="MyPackage">
<ExePackage
SourceFile="[sources]\packages\shared\MyPackage.exe"
DetectCondition="ExeDetectedVariable"
DownloadUrl="http://example.com/?mypackage.exe"
InstallCommand="/q /ACTION=Install"
RepairCommand="/q ACTION=Repair /hideconsole"
UninstallCommand="/q ACTION=Uninstall /hideconsole" />
</PackageGroup>
</Fragment>
</Wix>
Now you can add an install condition to the package so that it only installs on x86 Windows XP and above. There are built-in variables that can be used to construct these condition statements. The highlighted section shows how to leverage the built-in variables to create that condition:
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<PackageGroup Id="MyPackage">
<ExePackage
SourceFile="[sources]\packages\shared\MyPackage.exe"
DetectCondition="ExeDetectedVariable"
DownloadUrl="http://example.com/?mypackage.exe"
InstallCommand="/q /ACTION=Install"
RepairCommand="/q ACTION=Repair /hideconsole"
UninstallCommand="/q ACTION=Uninstall /hideconsole"
InstallCondition="NOT VersionNT64 AND VersionNT >= v5.1" />
</PackageGroup>
</Fragment>
</Wix>
The VersionNT property takes up to a four-part version number ([Major].[Minor].[Build].[Revision]). For a list of major and minor versions of the Windows operating system, see Operating System Version.
You can also define your own variables and store search results in them. See Define Searches using Variables.