1. A system for software product packaging, distribution, and patching, comprising: a computer including a microprocessor and a storage medium; a product registry for use in storing and distributing information about a plurality of different software products or versions thereof, wherein the product registry includes an install metadata, that defines a product model, including a plurality of software components for use by the software products or versions thereof, including, for each of the plurality of different software products or versions thereof, an indication of those software components that form said each of the plurality of different software products or versions thereof, a product alias element used to reference the plurality of different software products or versions thereof to provide a coupling between an external market-oriented product name and version and a plurality of internal product names associated with the plurality of different software products or versions thereof, a feature model, including feature reference data, including, for each of the software components, an indication of one or more features of that software component, wherein each feature has a version associated therewith, a runtime metadata, that defines a plurality of modules that can be provisioned at runtime including, for each version of a feature, an indication of those modules that provide that version of the feature, wherein the information in the product registry can be updated to include information about a new software product or version thereof, and used, by joining features defined by the feature model to components defined by the product model via the feature reference data, to provision the new software product or version thereof for a customer according to the information in the product registry; and a patch management system which generates a random unique patch identifier (ID) for each of a plurality of patches, whereby the patch management system is configured to support either a one-off or a rolling patch model to enable patching of the plurality of modules that can be provisioned at runtime; wherein, where one or more of the plurality of modules have been patched using the patch management system to generate one or more patched modules, the runtime metadata is modified to reference the one or more patched modules.