Patent Publication Number: US-6219698-B1

Title: Configuring client software using remote notification

Description:
FIELD OF THE INVENTION 
     The present invention relates in general to information distribution. More particularly, the present invention relates to information distribution using remote notification and is especially suitable for distributing new software upgrades via a network, such as the Internet. 
     BACKGROUND OF THE INVENTION 
     Software applications operating on a user&#39;s computing device become outdated as new versions of the software are developed. Software distributors face the challenge of notifying existing users that an upgrade to a software application is available and convincing the users to obtain and install the upgrade. 
     First, software application users typically have little motivation to initiate contact with software distributors to obtain upgrades. Further, software distributors often lose contact with users of software applications which have been previously distributed. This loss of contact prevents distributors from easily offering upgrades, as well as new products, to users of previously distributed software applications who may have an interest in the new product offerings. Further, even if they are notified of an upgrade or other product, users face the inconvenience of having to obtain and load the upgrade or new software product. Recently, many software applications have become available through electronic distribution, particularly over the Internet. In the typical case of software distributed over the Internet, the distributor maintains the software applications on a server at the distributor&#39;s web site. Information relating to the ordering and downloading of the software applications from the web site is available on the distributor&#39;s Internet web site, e.g. their download page. 
     A potential user can access the distributor&#39;s web site via the Internet using, for example, a personal computer or other computing device at the potential user&#39;s home, office or other site. The distributor&#39;s web page is customarily downloaded to the potential user&#39;s computing device and can be manipulated by the potential user to order one or more desired software applications. These applications are then automatically downloaded off the distributor&#39;s web server to the user&#39;s site and installed on the user&#39;s computing device. 
     Although the Internet has, in some ways, made the ordering and distribution of software applications more efficient, it has not made it easier for distributors to maintain contact with current users of software applications or to notify and convince such users to order and install upgrades or to consider the purchase of new product offerings. In fact, because the point of distribution has become a web site rather than a store front, it has, to some extent, become even more difficult to maintain contact with current users. Distributors can attempt to maintain contact with current users by using communication channels such as the telephone, postal mail and Internet E-mail. However, these channels of communications tend to be expensive, inefficient and/or poorly targeted. 
     Thus, a need remains for way in which to inexpensively, efficiently and in a well targeted manner (i) maintain contact with existing users of software applications, (ii) notify existing users of software applications of the availability of software upgrades and new product offerings, and (iii) make it convenient for existing users of software applications to obtain and install software upgrades and new products. 
     OBJECTIVES OF THE INVENTION 
     It is, accordingly, an object of the present invention to provide a technique for maintaining contact with existing users of software applications. 
     It is another object of the present invention to provide a technique for notifying existing users of software applications of the availability of software upgrades. 
     It is a further object of the present invention to provide a technique for offering new products or conveying new information in a well targeted manner. 
     It is a further object of the present invention to provide a technique for facilitating the convenient obtention and installation of software upgrades and new products. 
     It is an additional object of the present invention to perform the above objects inexpensively and efficiently. 
     Additional objects, advantages, and novel features of the present invention will become apparent to those skilled in the art from this disclosure, including the following detailed description, as well as by practice of the invention. While the invention is described below with reference to a preferred embodiment(s), it should be understood that the invention is not limited thereto. Those of ordinary skill in the art having access to the teachings herein will recognize additional implementations, modifications, and embodiments, as well as other fields of use, which are within the scope of the invention as disclosed and claimed herein and with respect to which the invention could be of significant utility. 
     SUMMARY OF THE INVENTION 
     In accordance with the invention, communications between multiple processing systems, such as clients and servers interconnected by a network, are maintained by storing a software application having first and second sets of instructions at one or more of the processing systems. The instructions can be stored on any suitable memory device. The first set of instructions include programming capable of directing the applicable system processor to perform a desired task. 
     Responsive to the programing being initialized by the processor of a first processing system to perform the desired task, the processor, in accordance with the second set of instructions, generates a first signal representing information, such as an identification of the current version of the first set of instructions stored at the first processing system. Initialization of the programming may, for example, occur when the programming is first loaded from the applicable memory device, or at some other point in the operation of the first processing system relating to performance of the desired task. 
     The first signal is transmitted to a second of the processing systems, e.g. a network server from which the programming was initially downloaded. The transmission of the information represented by the first signal links the first and second processing systems. The second processing system can now communicate with the first processing system for the purposes of upgrading the first set of instructions, offering new products and/or providing other information. 
     It will be recognized that the processing systems may, for example, be personal or network computers, workstations, mini-computers, main frame computers and/or other networked devices as well as any combination thereof. The first set of instructions, could be an application program previously distributed via the network, e.g. downloaded to the first processing system by the second processing system, although this is not necessarily the case. The network can be a local area network (LAN) or wide area network (WAN) or any other type of network, including the Internet. 
     According to other aspects of the invention, responsive to the first signal, the second processing system automatically transmits a second signal to the first processing system. The second signal is indicative of the information available on the second processing system or another of the processing systems. The second signal may include the information itself, which can be of virtually any type. In a preferred implementation, the second signal includes information associated with an upgrade of the first set of instructions, such as a textual description of features of a new version of these instruments, and/or an indicator, such as an icon type symbol, indicating that some other type of information is available, e.g. information regarding a new product etc. 
     A display, which can be of any type, is typically provided at the first processing system to facilitate the display of the new upgrade description and the indicator of the availability of other types of information. The description of the upgrade to the first set of instructions represented by the second signal is preferably displayed periodically, at intervals which may be selectable with an input device of the first processing system. The indicator, which may for example be a button icon, is preferably displayed continuously until being activated, for example by clicking on a button icon using a mouse as the input device, to request the available information represented by the indicator. Responsive to the button being pressed, the indicator is removed from the display. The removal of the indicator from the display could of course occur at any point after the input command is entered, for example when the available information is received, processed or stored at the first processing system. Preferably, the first processing system includes a memory which stores first and second values, one of which is changed responsive to the second signal. For example, one value may be changed when the second signal is received or processed by the applicable processing system so that the values are unequal to thereby cause the indicator to be illuminated on the display if information other than upgrade information is available. 
     In certain implementations, it may be preferable for the second processing system to determine, responsive to the first signal, if the first processing system is within a defined group. For example, the group may be within a particular business or industry, within a particular geographic region, or within some other desired grouping. In such cases, the second signal is transmitted to the first processing system only if it is determined to be within the defined group. 
     As discussed above, an input device, such as a mouse, will allow a command to be input at the first processing system to request information available from the second or some other processing system. Responsive to the input command, a third signal is generated by the first system processor and transmitted, in accordance with the second set of instructions, to the second or other processing system, thereby forwarding the request for the available information. Preferably, one of the previously described first and second values is again changed, e.g. such that the values are equal, responsive to the input command to cause the indicator to be removed from the display. 
     Responsive to the third signal, the second processing system transmits a fourth signal representing the available information itself or a link to the available information, to the first processing system for processing. Beneficially, at least certain types of represented information are displayed at the first processing system display. 
     In accordance with still other aspects of the invention, the first processing system has a network browser, such as an Internet web browser, stored on its memory. Using the network browser, the system processor can operate to locate web pages over the network. A located web page can then be displayed on the first processing system display. Preferably, the information represented by the second signal, e.g. information associated with an upgrade and/or an indicator of other types of information, is displayed within the web page. Beneficially, the other types of information represented by the fourth signal, i.e. information other than that associated with an upgrade of the first set of instructions, which has been forwarded to the first processing system from another network processing system is loaded into the network browser. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     For a more complete understanding of the present invention, reference is made to the following detailed description taken in conjunction with the accompanying drawings wherein: 
     FIG. 1 is a block diagram of a system for sending and receiving automatic message notification in accordance with the present invention; 
     FIG. 2 is a flow diagram depicting certain steps performed in automatic message notification in accordance with the present invention; 
     FIG. 3 is a flow diagram depicting certain other steps performed in automatic message notification in accordance with the present invention; and 
     FIG. 4 is a flow diagram of depicting still other steps performed in automatic message notification in accordance with the present invention. 
    
    
     PREFERRED EMBODIMENT OF THE INVENTION 
     Referring now to FIG. 1, there is illustrated a functional block diagram of a system f or sending and receiving automatic message notification and remote client configuration. A server  100 , a client  110  and at least one message server  120  communicate with each other via a communication network  130 . Although the communication network  130  can be of any type, the network  130  is the Internet in the preferred embodiment. 
     The server  100  includes a processor  140  and a memory  105 . The memory  105  stores a software application  159  and a database  155 . The database  155  has a current version number  158  of a particular software application, which will be called application A and which may be stored as part of the programming  159 , a list of clients  157 , and information  160  relating to the availability of a message including persistent state information. 
     The client  110  includes a processor  170  having an elapsed time counter  171 , a display  180  and a memory  185 . The memory  185  stores a database  190  and software  187 , including the version of software application A which presently operates on the processor  170 . The client  110  communicates with the server  100  via the communications network  130  and is capable of directing the display of a web pages  195  and  197  on the display  180 . An accept/reject button  191 , a message waiting indicator  192 , and a configuration or upgrade message  193  and client state change directives  198  are shown displayed within the web page  195  on the display  180 . The button  191 , configuration message  193 , and the directives  198  are all part of the configuration information  196  which appears within web page  195 . The message  196  appears in a separate web page  197 . 
     The database  190  contains server Universal Resource Locators (URL&#39;s) including the URL  210  associated with the server  100 , a first persistent state value A  230  and a second persistent state value B  240 , message URL&#39;s including the URL  250  associated with the message server  120  and a frequency time  260 . If available, the frequency time is a user selected minimum time period between upgrade availability notifications. 
     Referring additionally now to FIG. 2, in response to a client processor  170  initializing the application A software stored on memory  185 , the server  100 , via the communication network  130 , automatically receives a signal in step  300  which represents status information from the client  110 , in accordance with programmed instructions included in the software  187  stored on the client memory  185 . Among other information, the status information includes a client version number of the software application A stored on memory  185 . Software application A may have been originally downloaded to the client  110  from server  100 , or from a different network server. Alternatively, software application A could have been loaded directly to the client  110  from a floppy disk or other physical storage medium. 
     The server  100 , in step  320 , compares the client version number of software application A stored in client  110  against a current version number  158  of the software application A stored in the memory  155  of server  100  and determines whether the current version number  158  is greater than the client version number. If so, the server processor  140 , in accordance with programmed instructions which form part of the software  159  stored on server memory  105 , generates configuration information  196  in step  330 . The configuration information  196  includes a configuration message  193  which contains information pertaining to features of the available upgrade of the software application A to current version number  158 , and an offer to download the software application A upgrade. The configuration information  196  also includes, an accept/reject button  191 . The configuration information  196  may further include client persistent state change directives  198 . The server processor  140 , in accordance with its programmed instructions, also directs the transmission of the configuration information  196  via the network  130  to the client  110  in step  330 . The server processor  140 , in step  350 , additionally determines whether the offer is accepted or rejected through the receipt of a new request from client  110  to download the upgrade. If the offer is accepted the server  100  first downloads a web page containing a link to the software upgrade. Responsive to the user clicking on the link, the server  100  downloads the new version of the software to client  110  in step  360 . 
     The configuration information  196 , including the configuration message  193  and the accept/reject button  191  are displayed on the client display  180  in step  460  of FIG.  3 . By clicking on the displayed accept/reject button  191  to accept the upgrade of software application A, a signal is generated and communicated from the client processor  170  to the server processor  140  via the network  130 , responsive to which the server processor  140 , in step  360 , directs the downloading of the web page containing the link to the upgrade to the client  110 . If accepted, the upgrade is downloaded and stored by processor  170  on client memory  185 . By clicking on the accept/reject button  191  to accept or reject the upgrade, the configuration information  196  will be eliminated from the display  180  as indicated in step  370 . Until the button  191  is clicked on, the configuration information  196  will continue to be displayed during the current session and will be redisplayed during each future session, subject to the selected minimum time periods between upgrade notification. If the upgrade is accepted or rejected, the previously displayed configuration information  196  will not be displayed during future sessions. 
     The server  100  also compares the client  110  against a database  155  containing a list of clients  157  and associated information  160  to determine whether a message for the client  110  exists as indicated by step  380 . The information  160  indicates whether the message exists. For example, if the client  110  exists in the list of clients  157  and in the associated information  160 , a URL for the message server  120  where the message is stored, which is also included in the information  160 , is retrieved by server processor  140 . The message can be a general message which is sent to all clients or the message can be specific to an individual or group of clients. 
     More particularly, if the server processor  140  determines that a message exists for the client  110 , the server processor  140  sets persistent state information for A  230  equal to a value in step  385  and sends the value to the client  110  in step  390 . Otherwise, in step  395 , the server processor  140  does not set a persistent state information value, i.e. does nothing so that the value of A  230  remains the same. If a message exists for the client  110 , the server processor  140  further sends the URL of the message server  120  where the message is stored to the client processor  170  as indicated in step  390 . 
     Referring additionally now the FIG. 3, upon initializing software application A at the client  110 , for example by loading software application A from the client memory  185  for execution by client processor  170 , the client processor  170  generates and sends a signal representing the status information to the server  100  in step  400 . In response to this information, the client  110  receives from server  100  configuration and/or other information in step  410 . The configuration information indicates the availability of an upgrade to software application A while the other information includes persistent state information  196  indicating whether a message is available and, if so, where it is stored. If a new upgrade of the software application is available, the configuration information  196  includes a configuration message  193 , which contains information pertaining to the new version of the software application and an offer to download the new version of the software, and the accept/reject button  191 . If a message is available, the other information includes a persistent state information value for A  230  and a URL of the message server  120  where the message for the client  110  is stored. 
     As previously described, if a message  194  is available for the client  110 , the received persistent state information value for A  230  will be set, otherwise, the persistent state information value of A  230  will remain unchanged. In step  420 , the client processor  170  determines whether or not the server  100  has transmitted a directive for setting A  230  to a value A′, i.e. determines if a message is available. If so, the processor  170 , in step  425 , sets persistent state value A  230 , stored within the database  190 , to the persistent state value A′. In step  430  the processor  170  determines if the value of A  230  now stored in database  190  is unequal to the value B  240  which is also stored within the database  190 . If the A and B state values  230 ,  240  are unequal, the client processor  170  activates the MWI  192  in step  500 . Otherwise, the client processor  170  does nothing in step  435  and the MWI  192  is not activated. 
     The client processor  170  also determines if configuration information  196  is received in step  440 . If so, the client processor compares the value of the elapsed time counter  171  against the value of the frequency time  260  in step  450 . Otherwise, the client processor ends the new version processing in step  445 . The elapsed time counter  171  continually counts the passage of time since a configuration information  196  was last displayed or directed by client processor  170  to be displayed on display  180 . That is only when the value of the elapsed time counter  171  indicates that the period since information  196  was last displayed is equal to or greater than the frequency time does the client processor  170  display the configuration information  196 . The frequency time is set by the user during installation and specifies a minimum length of time between notifications. 
     Hence, if the elapsed time is equal to or greater than the frequency time  260  stored on the client memory, the client processor  170  directs the display of configuration information  196  in step  460 . The client processor  110  monitors to see whether the user has accepted or rejected the offer in step  470 . If the user accepts the offer, the client processor  170  requests and loads the new version of the software in step  480  as has been previously described. The client processor  170  also directs removal of the configuration information  196  from the display  180  in step  490 . 
     Referring additionally now to FIG. 4, when a user clicks on the message waiting indicator  192  the client processor  170  detects its selection in step  600 . In step  610 , the processor  170  contacts the message server  120  at the message server URL stored in the client memory  185 . In response to contact by the client  110 , the message server  120  locates a message, e.g. a web page, for the client  110 . The message server  120  sends the message which is received by the client processor  170  in step  620  and displayed within web page  197  on the display  180  as the client message  194  in step  630 . The client processor  170  sets the persistent state value B  240  within database  190  to the current value A  230 , i.e. to equal value A′, in step  640  and in step  650  removes the MWI from display  180 . 
     It will also be recognized by those skilled in the art that, while the invention has been described above in terms of one or more preferred embodiments, it is not limited thereto. Various features and aspects of the above described invention may be used individually or jointly. Further, although the invention has been described in the context of its implementation in a particular environment and for particular purposes, those skilled in the art will recognize that its usefulness is not limited thereto and that the present invention can be beneficially utilized in any number of environments and implementations. Accordingly, the claims set forth below should be construed in view of the full breath and spirit of the invention as disclosed herein.