Distribution apparatus, method and system for updated version of firmware

A distribution apparatus manages a distribution history of a program and, when a request about a program applicable to a device including device identification information and a version of the program of the device is received from the device, if an update result indicates successful updating in the distribution history about the program, transmits information indicating a post-update version included in the distribution history to the device as a response to the request.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a technique for distributing a program.

2. Description of the Related Art

Recently, it has become possible to execute installation and/or updating of software via the Internet by standard use of an Internet environment and an improvement of an Internet speed. Accordingly, opportunities increase that the software is installed and/or updated.

However, the increase of the opportunities invites concern that problems of unsuccessful installation of the software is distributed to a target device because of a state of the device to be installed and an error in distribution setting tend to widely spread in the market. With respect to these concerns, Japanese Patent Application Laid-Open No. 09-231083 proposes a method for automatically restoring an environment when the installation of the software to be distributed is unsuccessful.

In the conventional technique, the environment is restored after the installation of the software becomes unsuccessful. However, in this case, the time taken in the distribution of the software comes to nothing. Specifically, large scale software requires an increased distribution time.

SUMMARY OF THE INVENTION

One aspect of the present invention is directed to effectively preventing devices becoming inoperative due to an unsuccessful installation and/or updating of software (i.e., a program) from spreading.

According to an aspect of the present invention, a distribution apparatus includes a holding unit configured to hold, in a storage device, association information associating model information for identifying a model of a device, device identification information for identifying the device, a pre-update version of a program distributable to the device, and a post-update version of a program distributable to the device, a history storage unit configured to store, in the storage device as a distribution history, the device identification information of the device to which a program was distributed, the pre-update version of the program of the device, aversion of the distributed program as the post-update version, and an update result indicating whether the updating with the distributed program in the device was successful, an identification unit configured to identify, from the storage device, when a request about a program applicable to the device including the device identification information and the version of the program of the device is received from the device, association information corresponding to the device identification information and the version of the program included in the request, a history identification unit configured to identify a distribution history corresponding to the device identification information, the pre-update version, and the post-update version included in the identified association information from the storage device, and a response unit configured to transmit, when the update result indicates successful updating in the identified distribution history, information indicating the post-update version included in the distribution history to the device as a response to the request.

DESCRIPTION OF THE EMBODIMENTS

FIG. 1illustrates an example of a system configuration of a software distribution system (a program distribution system) according to an exemplary embodiment of the present invention.

FIG. 1illustrates a state that a distribution server101for distributing software (i.e., a program) to image forming apparatuses, a device management server102for managing information of the image forming apparatuses, and the image forming apparatuses103-1through103-3are connected to each other via the Internet104. InFIG. 1, three image forming apparatuses103-1through103-3are illustrated. However, any number of image forming apparatuses may be connected. Hereinafter, in a case where it is not necessary to distinct each of the image forming apparatuses, the image forming apparatus is simply referred to as the image forming apparatus103.

FIGS. 2A and 2Beach illustrate an example of a hardware configuration of the image forming apparatus103.

The image forming apparatus103includes the below described components201through213.

A document feeding unit201automatically conveys a document to be read to an image reader202. The image reader (i.e., a scanner)202reads the document. An image forming unit203converts the thus read document and received data into a print image and prints the print image. A paper feed unit204feeds paper for printing. A network interface (I/F)205connects the image forming apparatus103to a local area network (LAN) and the Internet via a network to allow an information exchange with an external apparatus. A sensor206senses a state of each of the components of the image forming apparatus103. A CPU207controls each processing performed by the image forming apparatus103. A hard disk208stores a program or data relating to each processing by the image forming apparatus103. A memory209can electrically store temporal data relating to each processing by the image forming apparatus103and is also rewritable. An operation unit210accepts an instruction input into the image forming apparatus103. A display unit211displays information relating to an operating condition of the image forming apparatus103and an operation with respect to the operation unit210of the image forming apparatus103. A facsimile (FAX) board212provides a function for facsimile communication. A system bus213serves to connect the components201through212to each other so as to allow them for a data transmission.

The CPU207executes processing based on a program stored in the hard disk208or the like, thereby realizing a function of the image forming apparatus103and the below described processing executed by the image forming apparatus103.

Upon selling an image forming apparatus, there is such a case that the image forming apparatus is not provided with unnecessary hardware depending on functions to be provided by the product. For example, it becomes unnecessary to provide the FAX board212in the product that does not require a facsimile function. Therefore, the image forming apparatus103providing the facsimile function has a hardware configuration with the FAX board212as illustrated inFIG. 2A. The image forming apparatus103that does not provide the facsimile function has a hardware configuration without the FAX board212as illustrated inFIG. 2B.

The hardware configuration with or without the FAX board212depending on necessity of the facsimile function is described above. However, the other hardware configuration may be employed in addition to the hardware configuration with or without the FAX board212.

FIG. 3illustrates an example of a hardware configuration of each of the distribution server101and the device management server102.

The distribution server101and the device management server102each include the below described components301through307.

A display unit301displays windows, icons, messages, menus, and other user interface information. An operation unit302accepts inputting from an end user via a keyboard or a mouse.

A CPU303controls each processing performed by the server. A hard disk304stores a program and data relating to each processing by the present server. A memory305can electrically store temporal data relating to each processing by the present server and is rewritable. A network I/F306connects the present server with a LAN or the Internet via a network to allow an information exchange with external devices. A system bus307connects the components301through306each other so as to allow a data transmission therebetween.

The CPU303of the distribution server101executes processing based on a program stored in the hard disk304or the like, thereby realizing a function of the distribution server101and the below described processing executed by the distribution server101. Similarly, the CPU303of the device management server102executes processing based on the program stored in the hard disk304or the like, thereby realizing a function of the device management server102and the below described processing executed by the device management server102.

FIG. 4is a sequence diagram illustrating an example of processing in which the device management server102collects information of the image forming apparatus103. The image forming apparatus103starts processing of the sequence diagram ofFIG. 4at a predetermined timing. For example, the image forming apparatus103starts processing of the sequence diagram ofFIG. 4at intervals of once per hour or when an error occurs.

The image forming apparatus103transmits device information to the device management server102in step401. The above-described device information includes hardware information of the device and information of an error (i.e., error information) in a case where the error occurs.

The device management server102stores the device information received in step401in the hard disk304. Then, the device management server102notifies a registration result of the device information to the image forming apparatus103in step402.

The image forming apparatus103brings the processing to an end upon receiving the registration result of the device information received in step402.

FIG. 5illustrates an example of a table storing a hardware configuration of the image forming apparatus103stored in the hard disk304by the device management server102.

A hardware configuration table501stores the hardware configuration of the image forming apparatus103.

A device number column502stores device numbers as identification data (i.e., ID) for uniquely identifying the image forming apparatus103. The device number is an example of device identification information.

A model column503stores model information of the image forming apparatus103.

A document feeding unit column504stores information about the presence or absence of the document feeding unit201of the image forming apparatus103.

A FAX board column505stores information about the presence or absence of the FAX board212of the image forming apparatus103.

A hard disk column506stores information about the presence or absence of the hard disk208of the image forming apparatus103.

In the present exemplary embodiment, examples of the hardware configuration include three pieces of hardware504through506. However, the hardware may have any other hardware configuration.

In the hardware configuration table501, data is updated based on the device information received in the above-described step401by the device management server102.

In the present exemplary embodiment, information indicated in a single row of the data illustrated inFIG. 5is referred to as the hardware configuration. Information about the document feeding unit, the FAX board, the hard disk, or the like included in the hardware configuration is referred to as hardware information.

FIG. 6illustrates an example of a table storing error information of errors having occurred in the image forming apparatus103and stored in the hard disk304by the device management server102.

An error information table601stores the error information of errors having occurred in the image forming apparatus103and stored in the hard disk304by the device management server102.

An error No. column602includes IDs for uniquely identifying error information of the error having occurred in the image forming apparatus103.

An error occurred device number column603stores the device numbers of the image forming apparatus103in which errors were occurred.

An error code column604stores error codes of the errors having occurred.

An error occurrence date and time column605stores date and time when the error occurred.

In the error information table601, data is updated based on the device information received in the above-described step401by the device management server102.

FIG. 7illustrates an example of a software management screen for installing software and updating firmware.

A software management screen701is an example of a screen displayed on the display unit211by the user operating the operation unit210of the image forming apparatus103.

A software installation button702is a button through which the user instructs installation of the software.

A firmware updating button703is a button through which the user instructs updating of the firmware.

FIG. 8illustrates an example of an update firmware selection screen for selecting the firmware to be updated. When the firmware updating button703inFIG. 7is clicked, the update firmware selection screen illustrated inFIG. 8is displayed on the display unit211.

An update firmware selection screen801is a screen on which the user selects the firmware to be updated.

A firmware selection radio button802includes a list of firmware selection radio buttons for displaying a list of pieces of updatable firmware.

A firmware update start button803is a button through which the user issues an instruction to start updating of the firmware.

FIG. 9illustrates an example of a firmware update result screen for displaying an update result of the firmware. When the firmware update start button803inFIG. 8is clicked and the firmware is successfully updated (i.e., the firmware is upgraded), a firmware update result screen illustrated inFIG. 9is displayed on the display unit211.

A firmware update result screen901displays the update result of the firmware.

An update result label902indicates the update result of the firmware.

FIG. 10illustrates an example of a distribution firmware table storing distributable firmware information the distribution server101stores.

A distribution firmware table1001stores firmware information as an example of the distributable program information the distribution server101stores.

A model column1002stores models to which the program is distributed.

A device number column1003describes device numbers belonging to the models to which the program is distributed. An example inFIG. 10shows that device numbers AAA00000 through AAA999999 and device numbers BBB00000 through BBB99999 belong to a model C7065. More specifically, the device number column1003stores a group of device numbers including a plurality of device numbers of the devices belonging to the model to which the program is distributed. The group of device numbers is an example of a group of a plurality of pieces of device identification information.

A pre-update version column1004stores versions of the firmware before being updated.

A post-update version column1005stores versions of the firmware after being updated.

FIG. 11illustrates an example of a distribution history table storing distribution histories the distribution server101stores.

A distribution history table1101stores distribution histories the distribution server101stores.

A distribution date and time column1102stores date and time when the firmware was distributed. A distribution device number column1103stores device numbers of the image forming apparatus103to which the firmware was distributed.

A model column1104stores models of the image forming apparatus103to which the firmware was distributed.

A pre-update version column1105stores versions of pre-update firmware of the image forming apparatus103to which the firmware was distributed.

An post-update version column1106stores versions of post-update firmware of the image forming apparatus103to which the firmware was distributed.

A result column1107stores results of distribution.

A document feeding unit column1108stores states of presence or absence of the document feeding unit201of the image forming apparatus103when the firmware was distributed.

A FAX board column1109stores states of presence or absence of the FAX board212of the image forming apparatus103when the firmware was distributed.

A hard disk column1110stores states of presence or absence of the hard disk208of the image forming apparatus103when the firmware was distributed.

An error column1111stores codes of errors having occurred in the image forming apparatus103when the firmware was distributed.

The present exemplary embodiment is described below with reference to a sequence diagram and flow charts illustrated inFIGS. 12 through 15.

FIG. 12is a sequence diagram illustrating an example of processing in a case where the firmware is updated.

The present sequence is started when the firmware updating button703is clicked on the software management screen701displayed on the display unit211of the image forming apparatus103.

In step1201, the user clicks the firmware updating button703on the software management screen by using the operation unit210to thereby notify a start of the updating of the firmware to the image forming apparatus103.

In step1202, the image forming apparatus103transmits the device number and the current firmware version thereof to the distribution server101and requests the distribution server101to provide a distributable firmware list as an example of program data.

The distribution server101calculates, after receiving the request for the distributable firmware list in step1202, an applicable firmware list and returns the applicable firmware list to the image forming apparatus103as a response in step1205. Descriptions of steps1203and1204are made below with reference toFIG. 13. Similarly, a detailed description of a method for calculating the applicable firmware list is made below with reference toFIG. 13.

In step1205, the image forming apparatus103displays, after receiving the applicable firmware list, the update firmware selection screen801on the display unit211and further displays the applicable firmware list in the form of the firmware selection radio button802.

In step1206, the user selects the firmware selection radio button802on the update firmware selection screen801displayed in step1205by using the operation unit210and clicks the firmware update start button803.

In step1207, the image forming apparatus103transmits the device number thereof and the selected firmware information to the distribution server101to request the distribution server101to provide the firmware.

In step1208, the distribution server101returns the firmware, for which the request is received in step1207, as a response.

In step1209, the image forming apparatus103stores the firmware received in step1210in the hard disk208and updates the firmware.

In step1210, the image forming apparatus103notifies the device number thereof and the update result of the firmware to the distribution server101. The distribution server101updates the distribution history table based on the received firmware update result. This is an example of processing for storing the distribution history.

In step1211, the distribution server101notifies completion of the distribution history registration to the image forming apparatus103as the result of the notification in step1206. The image forming apparatus103displays the firmware update result screen901on the display unit211and further displays the update result of the firmware as the update result label902.

FIG. 13is a flow chart illustrating an example of processing that the distribution server101performs to calculate an applicable firmware to be executed in step1202ofFIG. 12. This flow chart is executed when the request for the distributable firmware list in step1202is received.

In step S1301, the CPU303of the distribution server101acquires the device number and the current firmware version of the image forming apparatus103from the network I/F306via the Internet104to store the acquired device number and current firmware version in the memory305.

In step S1302, the CPU303loads the distribution firmware table1001stored in the hard disk304to the memory305. Then, the CPU303acquires an association firmware list as a list of records in which the device number and the firmware version acquired in step S1301are contained in the device number column1003and the pre-update version column1004, respectively.

In step S1303, the CPU303acquires an unprocessed record from the association firmware list acquired in step S1302. The processing in steps S1301through S1303, is an example of processing for acquiring the program information.

In step S1304, the CPU303loads the distribution history table1101stored in the hard disk304to the memory305. The CPU303acquires data of the model column1002, the pre-update version column1004, and the post-update version column1005of the record acquired in step S1303. Further, the CPU303acquires a list of records in which the acquired model, the pre-update version, and the post-update version match the model column1104, the pre-update version column1105, and the post-update version column1106of the distribution history table1101, respectively. These processing operations are an example of processing for acquiring the distribution history. Then, the CPU303checks the result column1107of the acquired list of records. In a case where all the pieces of firmware are successfully updated (NO in step S1304), the processing proceeds to step S1308. In a case where even a single piece of firmware is not successfully updated (YES in step S1304), the processing proceeds to step S1305.

In step S1305, the CPU303makes a request for acquiring device information corresponding to the device number stored in the memory305to the device management server102from the network I/F306via the Internet104(step1203inFIG. 12). The device management server102acquires the hardware configuration of the device corresponding to the device number received as a result of the request of acquirement of the device information from the hardware configuration table501and the error information from the error information table601, and returns the hardware configuration and the error information to the image forming apparatus103as a device information acquisition response (step1204inFIG. 12). Then, the CPU303of the distribution server101receives the device information acquisition response from the network I/F306via the Internet104and stores the hardware configuration and the error information in the memory305. The processing in step S1305is an example of processing for acquiring the device information.

In step S1306, the CPU303determines whether to allow updating of the firmware based on the hardware configuration and the error information acquired in step S1305and the distribution history table1101. The determination processing is described below with reference to the flow chart ofFIG. 14. The processing in step S1306is an example of the determination processing.

In step S1307, in a case where the CPU303allows the updating of the firmware as the result of step S1306(YES in step S1307), the processing proceeds to step S1308, whereas, in a case where the CPU303does not allow the updating of the firmware as the result of step S1306(NO in step S1307), the processing proceeds to step S1309.

In step S1308, the CPU303adds the record acquired in step S1303to the memory305as an applicable firmware list. The processing in step S1308is an example of the addition processing.

In step S1309, the CPU303searches whether there is a combination of records that finally becomes the post-update version of the firmware in step S1303in the distribution firmware table1001loaded in the memory305in step S1302. In a case where the CPU303determines there is the combination of records (YES in step S1309), the processing proceeds to step S1310, whereas, in a case where the CPU303determines there is no combination of records (NO in step S1309), the processing proceeds to step S1312. The processing in step S1309is an example of the search processing.

In step S1310, the CPU303confirms whether the combination of the records searched in step S1309is stored in the distribution history table1101loaded to the memory305in step S1304with the result of successful distribution history. In a case where the CPU303determines the distribution history was successful (YES in step S1310), the processing proceeds to step S1311, whereas, in a case where the CPU303determines the distribution history was not successful (NO in step S1310), the processing proceeds to step S1312. The processing in step S1310is an example of the determination processing.

In step S1311, the CPU303adds the combination of records searched in step S1309to the memory305as the applicable firmware list by performing multiple updating. The processing in step S1311is an example of the multiple-update addition processing. The applicable firmware list by performing the multiple updating is an example of multiple update program data. In step S1312, the CPU303checks whether there is an unprocessed record in the association firmware list acquired in step S1302. In a case where there still is the unprocessed record (YES in step S1312), the processing returns to step S1303, whereas, in a case where the CPU303has processed all the records (NO in step S1312), the processing proceeds to step S1313.

In step S1313, the CPU303transmits the applicable firmware list stored in the memory305and the firmware list applicable with the multiple updating to the image forming apparatus103from the network I/F306via the Internet104. Then, the CPU303brings the processing illustrated inFIG. 13to an end. The processing in step S1313is an example of the response processing.

FIG. 14is a flow chart illustrating an example of the processing executed in step S1306ofFIG. 13for determining whether to allow the updating of the firmware.

In step S1401, the CPU303searches the record of the distribution history of the model corresponding to the device number received in step S1301and of the version identical to the pre-update version and the post-update version acquired in step S1303from the distribution history table to set the searched record to the same model distribution history list.

In step S1402, the CPU303checks whether there is the image forming apparatus having the configuration identical to the hardware configuration acquired in step S1305in the same model distribution history list acquired in step S1401. In a case where the CPU303determines there is the above-described image forming apparatus (YES in step S1402), the processing proceeds to step S1403, whereas, in a case where the CPU303determines there is no above-described image forming apparatus (NO in step S1402), the processing proceeds to step S1405.

In step S1403, the CPU303checks, in the same model distribution history list, whether all the errors acquired in step S1305occurred in the image forming apparatus found in step S1402. In a case where the CPU303determines all the errors occurred (YES in step S1403), the processing proceeds to step S1404, whereas, in a case where the CPU303determines not all the errors occurred (NO in step S1403), the processing proceeds to step S1405.

In step S1404, the CPU303confirms the distribution history in the image forming apparatus found in step S1403in the same model distribution list. In a case where the CPU303determines the firmware is successfully updated (YES in step S1404), the processing proceeds to step S1411, whereas, in a case where the CPU303determines the firmware is not successfully updated (NO in step S1404), the processing proceeds to step S1412.

In step S1405, the CPU303acquires a piece of unprocessed hardware information from the hardware configuration acquired in step S1305. For example, the CPU303acquires the unprocessed hardware information (e.g., “a document feeding unit”) in a case where the hardware configuration includes hardware information of, for example, the document feeding unit, the FAX board, and the hard disk.

In step S1406, the CPU303searches the distribution history including the hardware information identical to that acquired in step S1405from the same model distribution list to confirm whether the updating was unsuccessful in history of all the distributions. In a case where the CPU303determines updating was unsuccessful in history of all the distributions (YES in step S1406), the processing proceeds to step S1412, whereas, in a case where the CPU303determines updating was successful in history of even one distribution (NO in step S1406), the processing proceeds to step S1407.

In step S1407, the CPU303checks whether there is unprocessed hardware information. In a case where the CPU303determines there is the unprocessed hardware information (YES in step S1407), the processing returns to step S1405, whereas, in a case where the CPU303determines there is no unprocessed hardware information (NO in step S1407), the processing proceeds to step S1408.

In step S1408, the CPU303acquires one error code of the unprocessed error information from the error information acquired in step S1305.

In step S1409, the CPU303searches the distribution history having the error code identical to that acquired in step S1408from the same model distribution list and confirms whether the updating was unsuccessful in the history of all distributions. In a case where the CPU303determines the updating was unsuccessful in the history of all distributions (YES in step S1409), the processing proceeds to step S1412, whereas, in a case where the CPU303determines the updating was successful in the history of even one distribution (NO in step S1409), the processing proceeds to step S1410

In step S1410, the CPU303checks whether there is the error code of the unprocessed error information. In a case where the CPU303determines there is the error code of the unprocessed error information (YES in step S1410), the processing returns to step S1408, whereas in a case where the CPU303determines there is no error code of the unprocessed error information (NO in step S1410), the processing proceeds to step S1411.

In step S1411, the CPU303returns a result to allow the updating with a combination of the pre-update version and the post-update version acquired in step S1303and ends the processing illustrated inFIG. 14.

In step S1412, the CPU303returns a result not to allow the updating with a combination of the pre-update version and the post-update version acquired in step S1303and ends the processing illustrated inFIG. 14.

Assumption is made such that there are only limited device numbers on the network. In this case, the CPU303can skip the processing for acquiring the device information in step S1305ofFIG. 13.

A predetermined constant (e.g., a unique number defined for each client) can be input into each of the devices at the factory as the device number of the distribution history table, or the device numbers can be omitted. In other words, the CPU303can skip the processing in step S1401, thereby executing the processing in and after step S1402.

In the present exemplary embodiment, the firmware is described as an example of a control program of the pre-update version. Also, in the present exemplary embodiment, the image forming apparatus103is described as an example of the device that is operated under control of this firmware. Further, in the present exemplary embodiment, the distribution server101is described as an example of the distribution apparatus that communicates with the image forming apparatus103. The distribution server101transmits the firmware of the post-update version to the image forming apparatus103. At the time, the distribution server101transmits the firmware to the image forming apparatus103via the network interface. The distribution server101receives from the image forming apparatus103the device information acquisition response as an example of the distribution history containing information indicating whether the updating of the firmware from the pre-update version to the post-update version was successful. The device information acquisition response includes a record of the distribution history having the version identical to the pre-update version and the post-update version. Accordingly, the distribution server101determines whether the firmware was successfully updated from the pre-update version to the post-update version.

In a case where the record of the distribution history shows that the updating of the firmware from the pre-update version to the post-update version was not successful, the distribution server101may execute the following processing. More specifically, the distribution server101may form the applicable firmware list as an example of information for forming display information of the user interface that limits updating of the firmware from the pre-update version to the post-update version in the operation unit of the image forming apparatus103or the display unit of the distribution server101(S1405). In a case where the post-update version is not included in the applicable firmware list, the updating of the firmware from the pre-update version to the post-update version comes to be limited by the user interface of, for example, the image forming apparatus103. The display information may include not only the applicable firmware list but also information indicating that the updating of the firmware from the pre-update version to the post-update version is limited and the reasons thereof.

FIG. 15is a flow chart illustrating an example of the processing performed by the image forming apparatus103when the image forming apparatus103receives the response in step1205ofFIG. 12.

In step S1501, the CPU207of the image forming apparatus103receives the applicable firmware list and the firmware list applicable with multiple updating returned in step S1313from the network I/F205via the Internet104.

In step S1502, the CPU207generates the update firmware selection screen801and stores the generated screen in the memory209.

In step S1503, the CPU207adds the applicable firmware of the post-update version acquired in step S1501as the firmware selection radio button802of the update firmware selection screen801generated in step S1502.

In step S1504, the CPU207adds the firmware of the post-update version applicable with multiple updating acquired in step S1501as the firmware selection radio button802of the update firmware selection screen801generated in step S1502.

At that time, the CPU207adds a sentence of a notice that the firmware is upgraded for a plurality of times with respect to the firmware selection radio button802.

In step S1505, the CPU207displays the update firmware selection screen801on the display unit211.

As described above, according to the present exemplary embodiment, a device determined to be incapable of updating software is excluded from targets for software updating, thus preventing a distribution of software with a combination in which the updating of software may not be successful. Further, avoiding a combination of firmware in which the updating of software may become unsuccessful and updating the software for a plurality of times to set the software to a target version enable a more suitable software distribution.

This application claims priority from Japanese Patent Application No. 2010-108634 filed May 10, 2010, which is hereby incorporated by reference herein in its entirety.