# Patent

## Title
Information processing apparatus on which printer driver can be installed, information processing apparatus, control method, program, and storage medium

## Abstract

An information processing method is provided for an information processing apparatus on which a printer driver that runs on an operating system is installed. The method includes a step of reading a module upon reception of an instruction for adding the module to the printer driver, a step of storing the read module into a storage area in an operating system corresponding to the printer driver, a step of registering the module by adding a name of the module stored in the storage area to configuration information of the printer driver and by adding the module to the printer driver, and a step of controlling a print service of the operating system to recognize the registered module.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
The application claims priority from Japanese Patent Application No. 2004-014264 filed Jan. 22, 2004, which is hereby incorporated by reference herein.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to an information processing apparatus on which a printer driver can be installed and a network system including the information processing apparatus.
2. Description of the Related Art
In recent years, information processing systems in which a host computer and a printer are connected over an interface, such as a Centronics interface, or a network, such as an Ethernet®, to perform printing have been commonly used. Typically, in such an information processing system, the printer analyzes print data input from the host computer, decompresses the print data into bitmap data, which represents an actual print image, and prints the image based on the bitmap data.
Typically, the host computer has a program (i.e., a printer driver) that is capable of performing more detailed control by receiving a drawing command from an application, converting the drawing command into print data, and outputting the print data.
Typically, the printer driver is distributed in the form of a file group (i.e., an install set) containing a plurality of program files and data files and is installed onto the host computer under the control of an operating system pre-installed on the host computer. That is, during installation of the printer driver, under the control of the operating system, a user or the install program copies the install set containing the printer driver and registers information regarding the printer driver to the operating system.
In addition, a more advanced information processing system in which with a host computer serving as a printer server connected to a printer, a client computer connected to the host computer through a network can perform printing using the printer has been researched, developed, and put to practical use.
In such an environment, the client must install the same printer driver as the printer driver installed on the printer server. As a program for facilitating such installation at the client, for example, Point & Print® of Microsoft Corporation has been know. In the function of Point & Print®, when a shared printer at a server side is selected and specified using an API of a client, the printer server receives information regarding the functions of the printer and the operating system of the client, selects a printer driver based on the received information, and transfers the printer driver to the client. The client then installs the printer driver transferred from the printer server.
The Point & Print® function is implemented as a part of operating systems available from Microsoft Corporation and offers some advantages. Specifically, a corresponding printer driver can be automatically installed, immediately when a user who operates the client computer wishes to perform printing. Also, the client can install a printer driver without a need for a storage media, such as a CD-ROM, on which the printer driver is stored.
Conventionally, an invention for a system in which a plurality of plug-in modules can be freely added to or removed from a base program has been proposed. A printer driver that runs under the control of a print service incorporated into an operating system can be regarded as one type of plug-in module for the print service. A method for adding or removing a plug-in module, containing a program and a data file, to or from an installed printer driver has not been contemplated. That is, while the operating system can recognize a printer driver that is under the control of the operating system, the operating system cannot dynamically recognize addition, removal, or change of a plug-in module that has been plugged into a printer driver and that is under the control of the operating system.
Also, for a case in which a module that a user wishes to add to a printer driver is already downloaded on a client computer, a method for additionally installing a desired module to a printer driver on the client computer or uninstalling the module from the printer driver has not been proposed. That is, a scheme for exchange printer-driver configuration information between the client and the server is not available during the printer-driver installation based on Point & Print®. Thus, even when a plug-in module is added to the server, module installation that additionally installs only a printer driver module added to the server cannot be performed so as to provide compatibility for a printer to be shared by the server and the client.
SUMMARY OF THE INVENTION
The present invention has been made in view of at least one of foregoing problems, and the present invention provides an information processing apparatus in which a module can be additionally installed to an installed printer driver and also provides a control method therefor, a program therefor, and a storage medium.
One aspect of the present invention provides an information processing method for an information processing apparatus on which a printer driver that runs on an operating system is installed. The method includes a step of reading a module upon reception of an instruction for adding the module to the printer driver, a step of storing the read module into a storage area in an operating system corresponding to the printer driver, a step of registering the module by adding a name of the module stored in the storage area to configuration information of the printer driver and by adding the module to the printer driver, and a step of controlling a print service of the operating system to recognize the registered module.
Another aspect of the present invention provides an information processing method. The method includes a step of storing a device driver and environment information for running the device driver, and a step of notifying, when a module that can be plugged into the device driver is installed on a first information processing apparatus, an external information processing apparatus that the module is added to the first information processing apparatus as additional environment information.
Other features and advantages of the present invention will be apparent from the following description taken in conjunction with the accompanying drawings, in which like reference characters designate the same or similar parts throughout the figures thereof.



BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention.
FIG. 1 is a block diagram showing a print server system according to a present embodiment of the present invention.
FIG. 2 is a functional block diagram illustrating the functional configuration of a printer server and a client computer in a known print server system.
FIG. 3 illustrates the flow of installation based on Point & Print.
FIG. 4 is a functional block diagram illustrating the functional configuration of a printer server and a client computer in the print server system according to the present embodiment of the present invention.
FIG. 5 illustrates the flow of processing in the print server system according to the present embodiment of the present invention.
FIG. 6 is a block diagram showing the hardware configuration of the print server according to the embodiment of the present invention.
FIG. 7 illustrates the flow of processing at the print server according to the present embodiment of the present invention.
FIG. 8 is a flow chart showing the flow of processing at the client computer according to the present embodiment of the present invention.



DESCRIPTION OF THE EMBODIMENTS
Embodiments of the present invention will now be described in detail in accordance with the accompanying drawings.
FIG. 1 is a schematic view showing an example of the configuration of a print server system according to an embodiment of the present invention.
Referring to FIG. 1, a print server 10 functions as a host computer. A client computer 20 may be a laptop or notebook personal computer as shown, but the present invention is not limited thereto. A printer apparatus 30 may be a laser beam printer, but the present invention is not limited thereto. The print server 10 and the printer apparatus 30 are connected through an interface, such as a Centronics interface, or a network, such as an Ethernet®. The print server 10 and the client computer 20 are connected through a network, such as an Ethernet®.
The print server system is mainly configured such that the print server 10 mediates print data input from the client computer 20 and outputs the print data to the printer apparatus 30 for printing, rather than the print server 10 performing printing using the printer apparatus 30.
The print server 10 incorporates at least one program having a print function. The print server 10 incorporates a printer driver that mediates printing from an application program to the printer apparatus 30. The client computer 20 also incorporates a program that is similar to that of the print server 10 and that has at least one print function.
In order for a user of the client computer 20 to perform printing using the printer apparatus 30, the same printer driver incorporated into the print server 10 must be incorporated into the client computer 20. This is because print data generated by an application of the client computer 20 needs to be mediated by the printer driver on the print server 10 before being input to the printer apparatus 30 and further, to cause the printer driver on the print server 10 to mediate the print data, the print data needs to be mediated by the same printer driver on the client computer 20.
Accordingly, in the print server system described above, the same printer driver installed onto the print server 10 must be installed onto the client computer 20. However, there is a problem in that such installation work at the client computer 20 becomes a burden on the user of the client computer 20.
To overcome such a problem, Point & Print® described above has been known.
The flow of installation based on Point & Print® will now be described with reference to FIGS. 2 and 3.
FIG. 2 is a functional block diagram illustrating modules related to installation of a printer driver, out of functions of the printer server and the client computer.
A print service 100 on a print server 1000 is a service program that controls print processing on the operating system (OS) of the print server 1000 and the installation of the printer driver. The print service 100 corresponds to a spooler service on a Microsoft Windows® OS. The spooler service provides an API (application program interface) for using various programs, such as generation of print data by a printer driver, transmission of the print data to the printer, the installation of a printer driver, and the Point & Print® function. Thus, the program and the printer driver execute processing through the API. The print service 100 according to the present embodiment also has features similar to those of the spooler service. With this configuration, various print services included in the operating system can recognize the addition and removal of a plug-in module. Driver configuration information 101 is the driver configuration information of a printer driver 102 on the print server 1000 and is stored in a shared storage area of the operating system. A print queue 103 is a virtual queue that temporarily accumulates print data before the print data is output to the printer apparatus.
Similarly to the print service 100 on the print server 1000, a print service 200 on a client computer 2000 controls print processing on the operating system of the client computer 2000 and the installation of the printer driver. Before Point & Print® is executed, a printer driver 202 and driver configuration information 201 do not exist on the client computer 2000. Thus, Print & Print® is adapted to incorporate the printer driver 202 and the driver configuration information 201 into the client computer 2000.
FIG. 3 illustrates the flow of installation based on Point & Print®.
In step 300, a user of the client computer 2000 connects to a shared printer through the print service 200 of the client computer 2000 to issue a Point & Print® request. In step 301, in response to the request, the print service 100 of the print server 1000 refers to the driver configuration information 101 to determine an install set to be downloaded. In step 302, in cooperation with the print service 200 of the client computer 2000, the print service 100 sends a copy of the install set of the printer driver 102 stored on the print server 1000 to the client computer 2000. In step 303, in accordance with the copy of the install set, the print service 200 of the client computer 2000 registers the printer driver 202 into the operating system of the client computer 2000 and, at the same time, registers the driver configuration information 201. As a result, the user of the client computer 2000 can cause the printer apparatus to execute printing via the print server 1000.
FIG. 4 is a functional block diagram showing the functional configuration of the print server system according to the present embodiment, and the same portions as those shown in FIG. 2 are denoted with the same reference numerals.
The configuration shown in FIG. 4 is different from the configuration shown in FIG. 2 in that the print server 10 further includes an add-in installer 104 and an added module (additional module) 105. The add-in installer 104 is used to install and uninstall the additional module 105. Through Point & Print® Processing, the printer driver 202 has been installed on the client computer 20, which connects to the printer server 10.
The add-in installer 104 has an addition processing module, a registering module, a determining module, a controlling module, a removing module, and a registration clearing module. The addition processing module is a processor that serves as the centerpiece of the present embodiment and adds the additional module 105. The registering module registers the additional module 105 into the print service 100 so that the print service 100 recognizes a change in the module configuration. The determining module determines whether the printer driver 102 is used for controlling the shared printer. The controlling module causes another computer connected to the shared printer to recognize a change in the module configuration. The removing module removes the additional module 105. The registration clearing module clears the registration of the additional module 105.
The additional module 105 has a program file, such as a DLL (dynamic link library). Upon installation, the additional module 105 can run in cooperation with other program modules included in the printer driver. Specifically, the program of the additional module 105 serves to add printer-driver-based special print functions (e.g., image processing and encryption processing) to the printer driver 102, thereby expanding the function of the printer driver 102.
The add-in installer 104 and the additional module 105 are stored on a CD-ROM media, together with electronic files containing a software license agreement and so on, are distributed through a network, and are copied to the system of the printer server 10. In the present embodiment, the administrator of the print server 10 executes the program of the add-in installer 104 to start the installation of the additional module 105.
FIG. 5 illustrates the flow of installation of the additional module 105 to the print server 10 according to the present embodiment.
Referring to FIG. 5, when the add-in installer 104 of the print server 10 is started, in step 500, the addition processing module copies the desired module (i.e., the additional module 105 to a memory (e.g., a storage area in the operating system) of the print server 10. Next, in step 501, the registering module registers the name of the added module into the driver configuration information 101. In step 502, an instruction for restarting the print service 100 is issued. In response, in step 503, the print service 100 is restarted. In step 504, the determining module obtains information of the printer driver 102. In step 505, an instruction for deleting a print queue is issued to the print service 100. In step 507, an instruction for restoring the print queue is issued. The print service 100 deletes the print queue in step 506 and adds the print queue in step 508.
Upon the completion of the module addition processing at the print server 10, in step 509, the print service 100 issues a notification for updating the printer driver 202 to the print service 200 of the client computer 20. Subsequently, in step 510, the print server 10 sends an install set containing the additional module 105 to the client computer 20. In step 511, the print service 200 of the client computer 20 registers the additional module 105 into the printer driver 202 and updates the driver configuration information 201 correspondingly.
FIG. 6 is a schematic block diagram showing the hardware configuration of the print server 10 according to the embodiment of the present invention.
Referring to FIG. 6, a CPU (central processing unit) 601 executes processing according to the present embodiment, in accordance with a program loaded into a RAM (random access memory) 602. The RAM 602 has a memory area for storing various programs and a memory area, used as a work area when the CPU 601 executes control processing, for temporarily storing various types of data. An operating system and various programs are pre-installed on a hard disk (HD) 603. When the print server 10 is started or an instruction for starting a program is issued, the program is loaded into the RAM 602 and is executed under the control of the CPU 601. A display unit 604 may be implemented by a CRT (cathode ray tube) display device or LCD (liquid crystal) display device. An input unit 605 includes a keyboard and a pointing device, such as a mouse, and is used to enter data corresponding to the user's operation. A network interface (I/F) 606 is an interface unit for connection with networks, such as an Ethernet® and the Internet. A system bus provides connection between the individual units and the CPU 601 to transfer data and various control signals.
Since the hardware configuration of the client computer 20 is essentially the same as the hardware configuration of the print server 10, the description of the hardware configuration of the client computer 20 is not given below.
FIG. 7 is a flow chart showing the flow of processing at the printer server 10 of the print server system according to the present embodiment. A program for executing the processing is installed on the hard disk 603 and is loaded into the RAM 602 for execution. This processing is initiated when, for example, the input unit 605 is used to give an instruction for adding a new module to the printer driver 102 that is already registered. The module to be added may be supplied through a storage medium, such as a CD-ROM, to the print server 10 or may be downloaded through the Internet or the like.
First, in step S701, the addition processing module of the add-in installer 104 on the print server 10 copies the additional module 105 to the storage area of the operating system of the print server 10. Typically, the relative position (i.e., directory path) of the storage area to which the additional module 105 is copied is the same as the position where the printer driver 102 is stored. Thus, the storage area can be obtained by querying the operating system. Next, flow proceeds to step S702, in which the registering module of the add-in installer 104 adds and registers the information of the program file of the additional module 105 into the driver configuration information 101. In step S703, the controlling module of the add-in installer 104 restarts the print service 100. Consequently, the driver configuration information 101 updated in step S702 is recognized by the print service 100, so that the additional module 105 is recognized as a part of a group of files constituting the printer driver 102. Other possible methods for causing the print service 100 to recognize the additional module 105 include a method in which an instruction for renewing the recognition of the printer driver configuration information 101 is issued through an interface, such as an API, provided by the print service 100.
Through the processing described above, the processing for installing the additional module 105 to the print server 10 is completed. Further, the additional module 105 needs to be installed onto the printer driver 202 of the client computer 20. This installation processing will now be described with reference to step S704 and the subsequent steps.
In step S704, the add-in installer 104 uses the determining module to determine whether or not the print service 100 is used for controlling a shared printer. When the print service 100 is not used for controlling a shared printer, the processing ends, otherwise, flow proceeds to step S705. Since the client computer 20 that performs printing via the printer driver 102 is provided in this case, it is determined in step S704 that the print service 100 is used for controlling a shared printer and thus flow proceeds to step S705.
In step S705, the add-in installer 104 obtains information on the print queue 103 of the print server 10. This information is required in step S707 described below. In step S706, the add-in installer 104 uses the recognizing module, which causes another computer connected to the shared computer to recognize a change in the module configuration, to delete the print queue 103 of the print server 10. In step S707, the add-in installer 104 uses the recognizing module to restore the print queue 103 via the print service 100. For restoration of the print queue 103 in step S707, the add-in installer 104 utilizes the information of the print queue 103 obtained in step S705 in advance. After the processing in steps S706 and S707, in step S708, the print service 100 issues a notification of the update of the driver configuration information 101 of the printer driver 102 to the print service 200 of the client computer 20. In step S709, the printer service 100 sends an install set containing the additional module 105 to the client computer 20.
FIG. 8 is a flow chart showing the flow of processing at the client computer 20 of the print server system according to the present embodiment.
In step S801, the client computer 20 receives the install set containing the additional module 105 transmitted in step S709. In accordance with the update notification, the print service 200 of the client computer 20 then refers to the driver configuration information 101 to download the install set of the printer driver 102 containing the additional module 105 from the print server 10. In step S802, the print service 200 registers, as the printer driver 202, the printer driver 102 containing the additional module 105 to the operating system of the client computer 20. In step S803, in accordance with the received additional module 105 and install set, the client computer 20 updates the driver configuration information 201 of the printer driver 202.
Through the processing described above, the additional module 105 for the print server 10 can also be installed onto the printer driver 202 that has been downloaded to the client computer 20 by Point & Print®.
In addition, processing for uninstalling the additional module 105, the processing being an opposite process to what is described in the embodiment described above, can be accomplished by replacing two steps in the embodiment. Specifically, instead of step S701 in which the add-in installer 104 copies the additional module 105 in the embodiment described above, the add-in installer 104 uses the removing module to remove the additional module 105 stored in the operating system. Further, in the embodiment described above, instead of step S702 in which the information of the additional module 105 is added to the driver configuration information 101, the add-in installer 104 uses the registration clearing module to clear the information of the additional module 105 from the driver configuration information 101.
Through the replacement of the steps, the additional module 105 is uninstalled from the print server 10. Further, when similar steps to steps S704 to S709 in the above embodiment and steps S801 and S803 shown in FIG. 8 are used for the client computer 20 connected through the network, the additional module can be uninstalled therefrom.
Other Embodiments
The features of the present invention can also be achieved by supplying a storage medium storing software-program code for accomplishing the features of the present embodiment to a system or apparatus so that a computer, or a central processing unit (CPU), or a micro-processing unit (MPU) of the system or apparatus reads and executes the program code. In such a case, the program code that is read from the storage medium achieves the features of the embodiments described above and the storage medium in which the program code is stored is also covered by the embodiments of the present invention. Examples of available recording media for supplying the program code include a floppy disk, hard disk, optical disk, magneto-optical disk, CD-ROM, CD-R, magnetic tape, nonvolatile memory card, and ROM.
Further, not only is the program code that is read from the computer executed to achieve the features of the embodiments described above, but also an operating system or the like that is running on the computer may perform part or all of the actual processing in accordance with an instruction of the program code to achieve the features of the embodiments. Such an arrangement is also covered by the present invention.
Additionally, after the program code read from the storage medium is stored in a memory that is provided in a plug-in board inserted to the computer or an expansion unit connected to the computer, a CPU or the like that is provided in the plug-in board or the expansion unit may perform part or all of the actual processing in accordance with an instruction of the program code to achieve the features of the embodiments. Such an arrangement is also encompassed by the present invention.
As described above, according to the embodiments of the present invention, when a new module is added to a printer driver in a printer server (i.e., a host computer), a determination is made as to whether or not a printer used by the printer driver is shared by another client computer. When the printer is shared, the same module can be added to the printer driver in the client computer.
Similarly, when a module is removed from a printer driver in a printer server (i.e., a host computer) and a printer used by the printer driver is shared by another client computer, an instruction for removing (i.e., uninstalling) the same module can be issued to the printer driver in the client driver.
As many apparently widely different embodiments of the present invention can be made without departing from the sprit and scope thereof, it is to be understood that the invention is not limited to the specific embodiments thereof except as defined in the claims. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures and functions.

## Claims

1. An install system comprising a first information processing apparatus that runs a device driver and a second information processing apparatus that is capable of communicating with the first information processing apparatus;
the first information processing apparatus comprising:
means for determining whether or not the device driver is set as a shared setting; and
means for notifying, when a plug-in module that can be plugged into the device driver is installed on the first information processing apparatus and the device driver is determined to be set in the shared setting, additional environment information indicating that the plug-in module is added to the device driver in the first information processing apparatus to the second information processing apparatus; and
the second information processing apparatus comprising:
means for installing the device driver in accordance with point and print installation; and
means for obtaining, after the point and print installation, the plug-in module from the first information processing apparatus, by using the additional environment information, in accordance with an instruction from a user,
wherein the plug-in module is a program that expands the functions of the device driver.

2. The install system according to claim 1, wherein the second information processing apparatus further comprises means for installing the plug-in module, as an extension module for a device driver that is already installed, by using the additional environment information obtained by the obtaining means.

3. An information processing apparatus, comprising:
means for storing a device driver and environment information for running the device driver;
means for determining whether or not the device driver is set as a shared setting; and
means for notifying, when a plug-in module that can be plugged into the device driver is installed on a first information processing apparatus and the device driver is determined to be set in the shared setting, additional environment information indicating that the plug-in module is added to the device driver in the first information processing apparatus to an external information processing apparatus,
wherein the plug-in module is a program that expands the functions of the device driver.

4. An information processing method, comprising the steps of:
storing a device driver and environment information for running the device driver;
determining whether or not the device driver is set as a shared setting; and
notifying, when a plug-in module that can be plugged into the device driver is installed on a first information processing apparatus and the device driver is determined to be set in the shared setting, additional environment information indicating that the plug-in module is added to the device driver in the first information processing apparatus to an external information processing apparatus,
wherein the plug-in module is a program that expands the functions of the device driver.

5. A computer-readable medium having stored thereon computer-executable process steps for causing a computer to execute the information processing method of claim 4.

6. An information processing apparatus that runs a device driver, the information processing apparatus comprising:
means for determining whether or not the device driver is set as a shared setting; and
means for notifying, when a plug-in module that can be plugged into the device driver is installed on the information processing apparatus and the device driver is determined to be set in the shared setting, additional information indicating that the plug-in module is added to the device driver in the information processing apparatus to the external information processing apparatus,
wherein the plug-in module is a program that expands the functions of the device driver.

7. An information processing apparatus that is capable of communicating with an external information processing apparatus that runs a device driver, the information processing apparatus comprising:
means for installing the device driver in accordance with point and print installation; and
means for obtaining, after the point and print installation, a plug-in module that can be plugged into the device driver from the external information processing apparatus, when the module is installed on the external information processing apparatus and the device driver is determined by the external information processing apparatus to be set as a shared setting, by using additional environment information notified of by the external information processing apparatus that indicates that the plug-in module is added to the device driver in the external information processing apparatus, in accordance with an instruction from a user,
wherein the plug-in module is a program that expands the functions of the device driver.

8. An information processing method for an information processing apparatus that runs a device driver, the method comprising:
determining whether or not a device driver is set as a shared setting; and
notifying, when a plug-in module that can be plugged into the device driver is installed on the information processing apparatus and the device driver is determined to be set in the shared setting, additional environment information indicating that the plug-in module is added to the device driver in the information processing apparatus to the external information processing apparatus.

9. A computer-readable medium having stored thereon computer-executable process steps for causing a computer to execute the information processing method of claim 8.

10. An information processing method for an information processing apparatus that is capable of communicating with an external information processing apparatus that runs a device driver, the method comprising:
installing the device driver in accordance with point and print installation; and
obtaining, after the point and print installation, a plug-in module that can be plugged into the device driver from the external information processing apparatus, when the plug-in module is installed on the external information processing apparatus and the device driver is determined by the external information processing apparatus to be set as a shared setting, by using additional environment information notified of by the external information processing apparatus that the plug-in module is added to the device driver in the external information processing apparatus, in accordance with an instruction from a user,
wherein the plug-in module is a program that expands the functions of the device driver.

11. A computer-readable medium having stored thereon computer-executable process steps for causing a computer to execute the information processing method of claim 10.