1. A system for software product packaging, distribution, and patching, comprising: a product registry for use in storing and distributing information about one or more different versions of a software product, the product registry further comprising install metadata, that defines software components for a plurality of products including a name and a version information for each product and which, for each product, hierarchically links that product to the software components that form that product, feature reference data, which, for each of the software components, hierarchically defines one or more features of that software component, and runtime metadata, that defines modules that can be provisioned at runtime and which, for each feature, hierarchically links that feature to the modules that provide that feature; and wherein the information in the product registry can be changed to include information about a new version of the software product, and wherein the new version of the software product can then be distributed to a customer according to the information in the product registry.