The source code schema for the Windows Installer XML Toolset Dependency Extension. Describes the information for this product or feature that serves as a dependency of other products or features. This element is required for any product, feature, or bundle that will use the Dependency feature to properly reference count other products or features. It should be authored into a component that is always installed and removed with the product or features that contain it. This guarantees that product dependencies are not removed before those products that depend on them. The @Key attribute should identify a version range for your product that you guarantee will be backward compatible. This key is designed to persist throughout compatible upgrades so that dependent products do not have to be reinstalled and will not prevent your product from being upgraded. If this attribute is not authored, the value is the ProductCode and will not automatically support upgrades. By default this uses the Product/@Id attribute value, which may be automatically generated. How To: Author product dependencies Dependency provider identity. If this attribute is not specified, an identifier will be generated automatically. Optional unique registry key name that identifies a product version range on which other products can depend. This attribute is required in package authoring, but optional for components. The version of the package. For MSI packages, the ProductVersion will be used by default and this attribute should not be specified. Optional display name of the package. For MSI packages, the ProductName will be used by default. Describes a dependency on a provider for the current component or package. This element declares a dependency on any product that uses the Provides element. If that product is uninstalled before a product that requires it, the uninstall will err or warn the user that other products are installed which depend on that product. This behavior can be modified by changing the attribute values on the Requires element. If you do not nest this element under a Provides element, you must specify the @Id attribute so that it can be referenced by a RequiresRef element nested under a Provides element. How To: Author product dependencies Dependency requirement identity. If this attribute is not specified, an identifier will be generated automatically. If this element is not authored under a Provides element, this attribute is required. The unique registry key name for the dependency provider to require during installation of this product. The minimum version of the dependency provider required to be installed. The default is unbound. The maximum version of the dependency provider required to be installed. The default is unbound. Set to "yes" to make the range of dependency provider versions required include the value specified in Minimum. Set to "yes" to make the range of dependency provider versions required include the value specified in Maximum. References existing authoring for a dependency on a provider for the current component or package. This element references a dependency on any product that uses the Provides element. If that product is uninstalled before a product that requires it, the uninstall will err or warn the user that other products are installed which depend on that product. This behavior can be modified by changing the attribute values on the Requires element. How To: Author product dependencies The identifier of the Requires element to reference. Optional attribute to explicitly author the provider key for the entire bundle. This provider key is designed to persist throughout compatible upgrades so that dependent bundles do not have to be reinstalled and will not prevent your product from being upgraded. If this attribute is not authored, the value is the automatically-generated bundle ID and will not automatically support upgrades. Only a single provider key is supported for bundles. To author that your bundle provides additional features via packages, author different provider keys for your packages. Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534. This can also be a preprocessor, binder, or WiX variable. Values of this type will either be "yes" or "no".