|DisplayName||String||Optional display name of the package. For MSI packages, the ProductName will be used by default.|
|Id||String||Dependency provider identity. If this attribute is not specified, an identifier will be generated automatically.|
|Key||String||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.|
|Version||VersionType||The version of the package. For MSI packages, the ProductVersion will be used by default and this attribute should not be specified.|
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.