1. Technical Field
The present invention relates in general to the field of delivery of software over a network, and more particularly to a method of downloading and installing a set of software modules determined according to features selected by a user.
2. Description of the Related Art
A popular method of acquiring software is over the Internet. Rather than going to a store to purchase, or ordering by mail, software stored on tangible media, a purchaser may go to a web site and purchase software for immediate download.
Ordering software over the Internet offers several advantages to the purchaser. It is much more convenient to order over the Internet than to go to a store. Also, purchasers like to be able to get the software when they want it rather than having to wait for it to arrive in the mail. However, there are some disadvantages to the current methods of purchasing software over the Internet. Most of the disadvantages stem from the fact that the purchaser must download the entire software application before beginning the installation process. For large applications and/or slow network connections, waiting for the download to complete can be tedious. Often, the user wants to install only a small subset of features of the application. Having to download the entire application takes time and valuable local storage space. If the network connection breaks during the download, the entire download may have to be restarted after reestablishing the connection.
The present invention provides a method of delivering software over a network from a server machine to a client machine. The server machine presents a software feature selection list to the client machine. In response to selection of selected features from the software feature selection list, the server machine determines a set of software modules required to perform the selected features. The set of software modules includes a subset of core modules and a subset of non-core modules. The server machine begins downloading to the client machine the set of software modules. The client machine stores the core modules in core module storage as the core modules are received. The client machine stores the non-core modules in non-core module storage as the non-core modules are received. While the client machine is receiving and storing downloaded modules, the client machine determines if it has received the subset of core modules. When the client machine has received the subset of core modules, the client machine examines a core module from the core module storage. The client machine determines if all prerequisite modules for the examined core module have been installed on the client machine. If so, the client machine installs the examined core module; if not, the client machine examines another core module in the core module storage. The client machine continues to examine and install core modules until all of the core modules have been installed. After installing all of the core modules, the client machine examines a non-core module from the non-core module storage. The client machine determines if all prerequisite modules for the examined non-core module have been installed. If so, the client machine installs the examined non-core module; if not, the client machine examines another non-core module in the non-core module storage. The client machine continues to examine and install non-core modules until all of the non-core modules have been installed.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further purposes and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, where:
Referring now to drawings, and first to
As will be explained in detail hereinafter, server 101 is adapted to serve web pages and download software to client 103. Client 103 includes a web browser 107 and a software installer component 109. Web browser 107 displays web pages served by server 101 and allows a user to interact with server 101. Software installer component 109 controls the installation of software downloaded from server 101. Client 103 includes temporary core module storage 111 and temporary non-core module storage 113. Installer component 109 stores software modules downloaded from server 101 in temporary storage 111 and 113 prior to installing the downloaded modules on client 103.
The software downloaded to client 103 from server 101 comprises a set of modules. As shown in
Referring to
Referring to
After installing all core modules, the installation process examines the first or next non-core module from temporary storage, at block 613. If, as determined at decision block 615, all prerequisites to the installation of the examined module have been met, the installation process installs the module, at block 617. If all prerequisites have not been met, processing returns to block 613. After installing a module, at block 617, the installation process determines, at decision block 621 if there are more modules. If so, processing returns to block 613. Thus, the installation process loops through blocks 613-621 until all non-core modules have been installed, at which point processing ends. In some embodiments the installation of all core modules whose prerequisites have been met may be allowed to proceed concurrently.
It should be apparent from the foregoing that maximum benefit will be obtained from this invention if the software is designed to have as few core modules as possible; ideally only one small module. Then, as soon as that has been received the installation process can begin whilst further, non-core modules are received in the background.
The list of modules to be received and installed is determined from a list of features selected by the user. In the present embodiment this list is presented to the user on a web page 201 in their web browser 107 (see
In a further embodiment a mixture of both approaches could be implemented. That is, some features could be selected in the web browser 201 whilst additional features could be selected using the core modules that have already been received.
From the foregoing, it will be apparent to those skilled in the art that systems and methods according to the present invention are well adapted to overcome the shortcomings of the prior art. While the present invention has been described with reference to presently preferred embodiments, those skilled in the art, given the benefit of the foregoing description, will recognize alternative embodiments. Accordingly, the foregoing description is intended for purposes of illustration and not of limitation.