1. A method of deploying software in a system where multiple versions of the software are available, comprising the steps of: distributing to the system upgrade software of system software without foreknowledge of a present version of the system software currently installed on the system, wherein the system software comprises an operating system and one or more applications; deploying a software update, wherein the upgrade software includes the software update, an information file, a command file, and an error information file; storing on a storage device of the system, in response to executing the upgrade software, information of the information file representing a version of software that is being installed on the system, the version of software being installed by the software update adding a new feature to the system software or having an update to an existing feature of the system software, wherein the information file comprises a table that lists a number of characteristics of at least one of the software or the feature of the software, and wherein the new feature or existing feature resides across a stack including the operating system and one or more applications of the system software; storing on a storage device of the system, in response to executing the upgrade software, the command file including a plurality of groups of commands, one or more of the groups of commands enabling a transition from the present version of the system software currently installed on the system to another version of software having the new feature or another version of the existing feature, wherein each group of commands of the plurality of groups of commands includes commands that enable a transition from one of the plurality of first versions of the system software to one of a plurality of second versions of the system software, wherein the present version of the system software is one of the first versions of the system software and the upgrade software version is one of the second versions of the system software, and wherein each groups of commands of the plurality of groups of commands includes a header information section indicating a second version to which the group of commands are associated; executing on the system, in response to executing the upgrade software, a state machine that consults the stored information to determine which one or more groups of commands of the plurality of groups of commands are needed and which groups of commands are unnecessary to transition from the present version of the system software currently installed on the system to the version of software that is being installed having the update to the feature, the state machine forming a command array including the applicable groups of commands of the determined one or more groups of commands which are needed, wherein a group of commands is required when the header information section included by that group of commands indicates a second version associated with the new feature or the newer version of the feature than the version of the feature installed with the present version of the system software or a version between the present version of the system software and the version of the upgrade software required to install the software update, the state machine employing a state file that maintains a persistent state during an installation, upgrade, or recovery operation, the state file tracking an execution of commands in the command file, the state file including a command file field that includes a location of the command file and an index field that indexes a last successful command in the command array; executing each needed group of commands in the command array to transition from the present version of the system software currently installed on the system to the version of software that is being installed having the update to the feature; and in response to an error that occurs during the execution of each needed group of commands: storing on a storage device recovery information including a list of common errors of the error information file, each common error in the list being associated with a remediation group of commands for resolving that common error; storing, on a storage device of the system, the recovery information including a list of errors related to the execution of one or more group of commands of the plurality of groups of commands and stored in the error information file; determining the error is one of the common errors in the list of common errors in the recovery information and is associated with a given remediation group of commands; in response to determining that the error is one of the common errors in the list of common errors in the recovery information, executing the given remediation group of commands associated with the error; and after execution of the given remediation group of commands associated with the error, resuming the execution of each needed group of commands at a command that caused the error.