1. A method of uninstalling a patch applied to a software product installed on a computer, the method comprising: identifying a current state of a software product; determining a desired state of the software product, the desired state of the software product representing a state of the software product when a patch applied to the software product is removed from the software product; and removing the patch from the software product to transition the software product from the identified current state to the determined desired state.