In the realm of software distribution, creating a master for generating distributable media is expensive and time consuming. A software provider invests substantial time and testing to assure that the master source (programs, data files, settings, etc.) to be included on the master is as error-free as possible. Even after the master source is determined, there are additional costs in actually creating the master that will be used as the source of the distributable media. Thus, in order to drive down costs, a software provider must usually create a large run of distributable media from a single master.
While it would be wonderful if the original master source (and thus, the original master) were sufficient for the life of the software application, those skilled in the art realize that the nature of software is that there are almost always updates to the software, updates that add features, support new hardware, and the like. Thus, the original master soon becomes obsolete.
Rather than generating a new master that contains the components of the updated software application, many software providers will put the updates on a second set of distributable media, also referred to as an installation set (more particularly, the update installation set). In effect, the updated software application is then delivered on two sets of media: the original installation set, and the update installation set. However, this requires the user to first install the original installation set, and then install the update installation set. To the user, this process appears as two distinct software installations for one product, even though the software application is sold as a single product.
During installation, the original installation process 112 (associated with the original installation set 104) is executed, which installs the original software components 102 onto the client computer 116. Typically, the installation process 112 executes in conjunction with a product key 114. As those skilled in the art will appreciate, the product key 114 is used to ensure that only authorized installations are made. Typically, the product key 114 is unique for each installation.
After the original installation process 112 is completed and the original software application is installed on the client computer 116, the user then executes the update installation process 118 associated with the update installation set 108. The update installation process 118 installs the update components 106 onto the original software application installed on the client computer 116. The original product key 114, used to install the original installation set 104, is typically used.
There are legitimate reasons that software providers distribute their products, especially updated software applications, in multiple installation sets. One reason, as already discussed, is the cost of mastering the product is prohibitive if a master must be generated for each update version, thus providing a substantial incentive to a software provider to extend the life of the original master. Another reason is that, quite frequently, the original installation set may be at its payload capacity, i.e., that additional update components cannot fit on the original installation set, thus necessitating that an update installation set is used to deliver the updates.
Another issue related to delivering software application updates is that, while software providers know that the software application will be updated, at the time that the original master 104 is generated, the updates are undefined and unknown. Thus, even though they know that the software application will most likely be modified, they do not necessarily know what form the modifications will take, and therefore, are not able to adequately prepare for the updates.
As seen from the discussion above, while it is advantageous and cost-effective to distribute an updated software application using both the original and the update installation sets, it would be desirable that their installation appear as the same installation, i.e., an integrated installation process.
A computer-readable medium bearing computer-executable instructions is presented. When executed on a computer system, the computer-executable instructions carry out a method for installing an updated software application onto the client computer from an original installation set and an update installation set. The method comprises the following steps. The original installation set is obtained. The original installation set includes components, which, when installed on the client computer, form the original software application. The original software application is installed onto the client computer from the original installation set. The installation uses a product key that includes installation information indicating whether an update installation set is available. A determination is made as to whether an update installation set is available. This determination is made according to the installation information in the product key. If it is determined that an update installation set is available, the update installation set is obtained. The update installation set includes components which, when installed onto the original software application, form the updated software application. The updated software application is then installed onto the client computer from the update installation set.
A method for installing an updated software application onto a client computer from an original installation set and an update installation set is also presented. The method comprises the following steps. The original installation set, including components which, when installed on the client computer, form the original software application, is obtained. The original software application is installed onto the client computer from the original installation set. The installation uses a product key that includes encrypted information, including installation information indicating whether an update installation set is available. The product key is decrypted and a determination is made as to whether an update installation set is available according to the decrypted installation information. If it is determined that an update installation set is available, the update installation set is obtained. The update installation sets includes components which, when installed onto the original software application, form the updated software application. The updated software application is then installed onto the client computer from the update installation set.
A computer-readable medium bearing computer-executable instructions is further presented. When executed on a computer system, the computer-executable instructions carry out a method for installing an updated software application onto the client computer from an original installation set and an update installation set. The method comprises the following steps. The original installation set, including components, which, when installed on the client computer, form the original software application, is obtained. A product key, for use in installing the updated software application onto the client computer, is obtained. The product key includes encrypted information, including installation information, that indicates whether an update installation set is available in addition to the original installation set. The original software application is installed onto the client computer from the original installation set using the product key. The installation information is decrypted from the product key, and, according to the decrypted installation information, a determination is made as to whether an update installation set is available. If it is determined that an update installation set is available, the update installation set, including components, which, when installed onto the original software application, form the updated software application, is obtained. The updated software application is then installed onto the client computer from the update installation set.
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
In order to better describe and present the integrated installation process over multiple installation sets, the following definitions are set forth.
The term “original software application” refers to the software application which forms the basis of the updated software application, i.e., before the updates are applied. Correspondingly, the term “updated software application” refers to the product of the original software application after applying the updates of an update installation set.
The term “original installation set” refers to a set of installation files and/or data from which the original software application may be installed onto a client computer. Typically, the original installation set is duplicated onto distribution media, such as an optical disk, a magnetic disk, magnetic tape, and the like. However, it should be appreciated that the original installation set (and/or update installation set) may also be a collection of files and/or data on a fixed disk drive associated with the client computer, or alternatively, on a network-accessible drive, or an Internet location. Thus, while subsequent references to the original installation set may be made with regard to an installation set on an optical disk (or disks), it is for simplicity purposes only, and should not be construed as limiting upon the present invention.
The term “update installation set” refers to a set of installation files and/or data from which the updates (either as software fixes or version updates) are applied to an original software application installed on a client computer. The update installation set, as with the original installation set, may be delivered on removable media (optical disks, magnetic tape, and the like) or as files and/or data located locally or remotely to the client computer. Of course, the update installation set may include features that fix problems with or extend the functionality of the original software application, but the scope of the present invention is not so limited. In fact, an integrated installation procedure for multiple installation sets may be beneficially applied in a number of circumstances. For example, the update installation set may include features specific to a particular customer segment or niche, such as small businesses, physically impaired users, the legal market, and the like. Similarly, the update installation set may deliver a payload designed to modify the original software application for needs of a particular country and/or language. Even further, an update installation set may deliver components designed to complement the original installation set, such as complementary applications from third party vendors or ISVs.
In light of the above, the integrated installation procedure should be considered as implementable on any number of computing systems that are susceptible to software installation, including, but not limited to, personal computers, notebook and laptop computers, mini- and mainframe computers, personal digital assistants (PDA), hybrid PDA-mobile phone combinations, and the like.
In order to provide for an integrated installation procedure including an original installation set and one or more update installation sets, information indicating that one or more updated installation sets are available is embedded in the product key 210.
With regard to the product key 210, in general terms, the product key is used during an installation process, such as the integrated installation process 212, to ensure that the installation is an authorized installation. In other words, the product key 210 represents a code, which, if proven valid during the installation process, authenticates whether the user is authorized to install the corresponding software components.
According to aspects of the present invention, during the integrated installation process 212, the product key 210 is decrypted using a predetermined algorithm. The resultant decrypted information is examined to determine whether the product key 210 is valid, thereby implying an authorized installation. Without a valid product key, the integrated installation process 212 ceases installing the software application. If the product key 210 is valid, the software application is installed on the client computer, and update installation information 214 is identified in the decrypted information. This update installation information indicates whether one or more additional update installation sets are available. Based on this update installation information, additional steps may be executed in the installation procedure, additional installation procedures may be executed, and the like. In one embodiment, after the update installation information is decrypted from the product key, it is stored in the computer system's storage 206, such as in the system registry 208.
One of the advantages of including an indication whether or not one or more update installation sets are available is that the same integrated installation process 212 can be used for installing the original software application as well as the updated software application. A product key 210 corresponding only to the original software application may be generated with the update installation information indicating that no additional update installation set is available. Yet for an updated software application, a product key, using the same format as the product key for the original software application, may be generated with the update installation information 214 indicating that one or more update installation sets are available. In effect, this enables the integrated installation process 212 to install both the original installation set and one or more update installation sets.
While the present discussion is made with regard to a product key providing information indicating that an additional update installation set is available, such information may be provided without the use of a product key. For example, the original installation process may query the computer system for particular settings that would indicate that an additional update installation set may be provided. Such information may be based on a default language (Japanese, Spanish, English, etc.) installed on the computer system, whether special features for assisting physically impaired user are present, whether the computer system is configured to a niche market, and the like. Accordingly, including information in the product key 210 indicating that an additional update installation set is available should be viewed as illustrative only, and not construed as limiting upon the present invention.
In addition to including update installation information in the product key 210, which indicates whether one or more update installation sets are available, a linkage component 308 is included, typically with the original software components 102 on the original installation set 304. The linkage component 308 is installed on the client computer 116 in conjunction with the original software application 310.
As discussed above, during the integrated installation process 212 (
With regard to the linkage component 308, while it is illustrated as a separate component from the integrated installation process 212, this separation is a logical separation, and may or may not be an actual, physical separation. In one embodiment, the linkage component is a logical component of the integrated installation process 212, i.e., it is an internal function called at the end of the integrated installation process. What is important is that a linkage component 308, whether or not it is part of the integrated installation process 212, automatically continues the installation of the one or more update installation sets by executing the update installation process 312. If the linkage component 308 is an actual component separate from the integrated installation process, it is not necessary that the linkage component is installed in the same location with the original software application 310. Additionally, the linkage component 308 may be used to install multiple update installation sets.
Similarly, in alternative embodiments, while the update installation process 312 is illustrated as a separate process, this, too, may be included as part of the integrated installation process 212. Of course, due to the unknown nature of the updates in regard to the update installation set 306, and also due to the fact that the integrated installation process 212 was determined at the time of creating the original installation set 302, the update installation process 312 can be more fully tailored to the update installation set 306 if it is a separate component, tailored to and included with the update installation set.
At decision 406, the exemplary routine 400 proceeds to block 408 if the installation information 214 from the product key 210 indicates that there is an update installation set 306 to be installed on the client computer 116. Otherwise, the routine 400 terminates.
At block 408, an effort is made to locate the update installation set 306. For example, the drive from where the original installation set 304 was launched may be queried, the user may be presented with a query, asking for the location of the update installation set 306, and the like. At decision 410, the exemplary routine 400 terminates if the update installation set 306 is not located. Alternatively, if the update installation set 306 is located, the routine 400 proceeds to block 412 (
At block 412, the linkage component 308 is executed to continue the integrated installation of the update installation set 306. At block 414, the update components on the update installation set 306 are installed onto the installed original software application 310 resulting in an updated software application 314. Thereafter, the routine 400 terminates.
While the exemplary routine 400 describes locating a single update installation set 306, it should be appreciated that in an alternative embodiment, the exemplary routine repeatedly queries whether additional update installation sets are available, and, if so, installs the contents of the update installation sets until they have all been installed.
While various embodiments, including the preferred embodiment, of the present invention have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.