(57)【要約】      （修正有）【課題】制御プログラムのインストールにより生じる不都合を抑制する情報処理装置を提供する。【解決手段】電子機器３０が接続されることで前記電子機器に対応した制御プログラムをインストールする情報処理装置１０であって、前記情報処理装置にすでにインストールされている第一の制御プログラムに関する情報を収集する情報収集手段１７と、前記情報処理装置に接続された電子機器から前記電子機器の識別情報を取得する機器情報取得手段１１と、前記識別情報により特定される前記第一の制御プログラムに関する情報を用いて、前記識別情報により特定された第二の制御プログラムをインストールするか否かを判断する判断手段１９とを有する。【選択図】図６
2018128790.tif 000002
【特許請求の範囲】
【請求項１】
電子機器が接続されることで前記電子機器に対応した制御プログラムをインストールする情報処理装置であって、
前記情報処理装置にすでにインストールされている第一の制御プログラムに関する情報を収集する情報収集手段と、
前記情報処理装置に接続された電子機器から前記電子機器の識別情報を取得する機器情報取得手段と、
前記識別情報により特定される前記第一の制御プログラムに関する情報を用いて、前記識別情報により特定された第二の制御プログラムをインストールするか否かを判断する判断手段と、
を有する情報処理装置。
【請求項２】
前記判断手段は、前記識別情報により前記第一の制御プログラムに関する情報を特定できた場合に、前記第二の制御プログラムをインストールしないと判断する請求項１に記載の情報処理装置。
【請求項３】
前記第一の制御プログラムに関する情報には前記第一の制御プログラムが対応する電子機器の表示名又は制御プログラム名が含まれ、
前記識別情報には前記電子機器の機種情報が含まれており、前記機種情報が前記表示名又は前記制御プログラム名に含まれる場合、前記判断手段は、前記識別情報により前記第一の制御プログラムに関する情報を特定できたと判断する請求項２に記載の情報処理装置。
【請求項４】
前記第一の制御プログラムに関する情報を特定できない場合、
前記判断手段は、前記情報収集手段とは別に、前記情報処理装置にインストールされている前記第一の制御プログラムに関する情報を収集し、
前記識別情報に基づいて前記第一の制御プログラムに関する情報が特定できる場合、前記第二の制御プログラムをインストールすると判断する請求項２又は３に記載の情報処理装置。
【請求項５】
前記第一の制御プログラムに関する情報を特定できない場合、
前記判断手段は、前記情報処理装置にインストールされている前記第一の制御プログラムに関する情報として制御プログラム名を収集し、
前記識別情報に基づいて前記第一の制御プログラムに関する情報を特定でき、前記第二の制御プログラムの制御プログラム名と前記第一の制御プログラムの制御プログラム名が同じ場合、前記第二の制御プログラムをインストールすると判断する請求項２又は３に記載の情報処理装置。
【請求項６】
前記判断手段は、前記識別情報により特定される前記第一の制御プログラムが使用されたことがある場合に、前記第二の制御プログラムをインストールしないと判断する請求項１に記載の情報処理装置。
【請求項７】
前記第一の制御プログラムに関する情報には、前記第一の制御プログラムが使用された回数が含まれており、
前記判断手段は、前記識別情報に基づいて特定される前記第一の制御プログラムの前記回数が閾値以上の場合に、前記第二の制御プログラムをインストールしないと判断する請求項６に記載の情報処理装置。
【請求項８】
前記第一の制御プログラムが使用されたことがない場合、
前記判断手段は、前記情報処理装置にインストールされている前記第一の制御プログラムに関する情報を収集し、
前記識別情報に基づいて前記第一の制御プログラムに関する情報が特定できる場合、前記第二の制御プログラムをインストールすると判断する請求項６又は７に記載の情報処理装置。
【請求項９】
前記第一の制御プログラムが使用されたことがない場合、
前記判断手段は、前記情報処理装置にインストールされている前記第一の制御プログラムに関する情報として制御プログラム名を収集し、
前記識別情報に基づいて前記第一の制御プログラムに関する情報を特定でき、前記第二の制御プログラムの制御プログラム名と前記第一の制御プログラムの制御プログラム名が同じ場合、前記第二の制御プログラムをインストールすると判断する請求項６又は７に記載の情報処理装置。
【請求項１０】
前記判断手段が前記第二の制御プログラムをインストールすると判断した場合、前記第二の制御プログラムをインストールするインストール手段を有し、
前記インストール手段が、前記第二の制御プログラムをインストールしたか否かを表示装置に表示する表示手段を有する請求項１〜９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記第一の制御プログラムに関する情報に変更があったことを検出し、
前記情報収集手段が収集した前記情報処理装置にすでにインストールされている前記第一の制御プログラムに関する情報を更新する更新手段を有する請求項１〜１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記更新手段は、前記第一の制御プログラムに関する情報のうち前記第一の制御プログラムが対応する電子機器の表示名が変更されたこと、又は、インストールされている前記第一の制御プログラムの数の増減を検出し、
前記更新手段は、前記第一の制御プログラムに関する情報を更新する請求項１１に記載の情報処理装置。
【請求項１３】
電子機器が接続されることで前記電子機器に対応した制御プログラムをインストールする情報処理装置を、
前記情報処理装置にすでにインストールされている第一の制御プログラムに関する情報を収集する情報収集手段と、
前記情報処理装置に接続された電子機器から前記電子機器の識別情報を取得する機器情報取得手段と、
前記識別情報により特定される前記第一の制御プログラムに関する情報を用いて、前記識別情報により特定された第二の制御プログラムをインストールするか否かを判断する判断手段、
として機能させるためのプログラム。
【請求項１４】
電子機器が接続されることで前記電子機器に対応した制御プログラムをインストールする情報処理装置が行うインストール方法であって、
情報収集手段が、前記情報処理装置にすでにインストールされている第一の制御プログラムに関する情報を収集するステップと、
機器情報取得手段が、前記情報処理装置に接続された電子機器から前記電子機器の識別情報を取得するステップと、
判断手段が、前記識別情報により特定される前記第一の制御プログラムに関する情報を用いて、前記識別情報により特定された第二の制御プログラムをインストールするか否かを判断するステップと、を有するインストール方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム、及びインストール方法に関する。
【背景技術】
【０００２】
情報処理装置にプリンタなどの電子機器が接続された場合に、電子機器の制御プログラムを情報処理装置のＯＳがインストールする技術（プラグアンドプレイ）が知られている。プラグアンドプレイの有効性を増すために予めＯＳには種々の電子機器の制御プログラムが同梱されており、所定のフォルダにこれら制御プログラムが記憶されている。所定のフォルダに記憶された制御プログラムを「ＯＳ同梱の制御プログラム」という。ＯＳはこのフォルダに記憶されている制御プログラムを優先的に検索してインストールする。
【０００３】
ユーザが新たな電子機器を接続する場合、ユーザは記憶媒体に記憶されるか又はネットワークからダウンロードしたインストーラを情報処理装置に実行させる。インストーラがＵＳＢケーブル等により情報処理装置と電子機器の接続を促しユーザが接続すると、ＯＳはプラグアンドプレイにより電子機器の識別情報を取得して、接続された電子機器に最適な制御プログラムを所定のフォルダに記憶されているＯＳ同梱の制御プログラムから検索し、自動的にインストールする。
【０００４】
このようにプラグアンドプレイは便利な反面、自動的にインストールが進むためユーザが望む形態で制御プログラムをインストールできない場合がある（例えば、特許文献１参照。）。特許文献１には、プラグアンドプレイにより制御プログラムの意図しない上書きを防ぐため、電子機器の識別情報を受信してインストールされる第一の制御プログラムによりすでにインストールされている第二の制御プログラムが不整合な状態となるか否かを判断する情報処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のインストール方法は制御プログラムのインストールの自動化に不都合が生じる場合があるという問題がある。上記のようにユーザがＵＳＢケーブル等で電子機器を情報処理装置に接続したら、ＯＳやその他のアプリケーションソフト等が自動で接続された電子機器に対応した制御プログラムをインストールすることが好ましい。しかし、情報処理装置には、接続した電子機器の機種に対応可能な制御プログラムとして、当該機種に対応する最新のバージョンの制御プログラムではなく、ＯＳ同梱の制御プログラム(当該機種の電子機器が発売される前に作られた)やユーザが過去にダウンロードした古いバージョンの制御プログラムが含まれる場合がある。
【０００６】
このような状況において、ユーザが電子機器と情報処理装置を接続すると、プラグアンドプレイにより電子機器が特定されるが、この電子機器に対応する古い制御プログラム（ＯＳ同梱の制御プログラム又は以前にダウンロードした古いバージョンの制御プログラム）がインストールされてしまう場合がある。このように、制御プログラムによっては自動でインストールされることが好ましくない場合がある。
【０００７】
ＯＳによってはインストールされた古い制御プログラムを最新の制御プログラムに置き換える機能を持つため、インストーラがこの機能を利用して古い制御プログラムを新しい制御プログラムに置き換える手順を実行することが検討される。しかしながら、ユーザが意図的に古い制御プログラムを使用している可能性があり、インストーラは削除してよいかどうかを判断できない。
【０００８】
このように、従来は、最新の制御プログラムを自動でインストールすべきかどうかを判断できず、インストールを自動化することが困難な場合があった。
【０００９】
本発明は、上記課題に鑑み、制御プログラムのインストールにより生じる不都合を抑制する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、電子機器が接続されることで前記電子機器に対応した制御プログラムをインストールする情報処理装置であって、前記情報処理装置にすでにインストールされている第一の制御プログラムに関する情報を収集する情報収集手段と、前記情報処理装置に接続された電子機器から前記電子機器の識別情報を取得する機器情報取得手段と、前記識別情報により特定される前記第一の制御プログラムに関する情報を用いて、前記識別情報により特定された第二の制御プログラムをインストールするか否かを判断する判断手段と、を有する。
【発明の効果】
【００１１】
制御プログラムのインストールにより生じる不都合を抑制する情報処理装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態のインストール方法を説明する上で比較される比較例を説明する図である。
【図２】本実施形態のインストーラによるインストール方法を説明する図の一例である。
【図３】情報処理システムの概略構成図の一例である。
【図４】プリンタの一例のハードウェア構成図である。
【図５】情報処理装置のハードウェア構成図の一例である。
【図６】情報処理システムが有するプリンタと情報処理装置の機能をブロック状に示す機能ブロック図の一例である。
【図７】プリンタアイコンを説明する図の一例である。
【図８】プラグアンドプレイを模式的に説明する図の一例である。
【図９】情報処理装置が制御プログラムをインストールする手順を示すシーケンス図の一例である。
【図１０】インストール判断部が制御プログラムをインストールするか否かを判断する手順を示すフローチャート図の一例である。
【図１１】情報処理システムが有するプリンタと情報処理装置の機能をブロック状に示す機能ブロック図の一例である（実施例２）。
【図１２】情報処理装置が制御プログラムをインストールする手順を示すシーケンス図の一例である（実施例２）。
【図１３】インストール判断部が制御プログラムをインストールするか否かを判断する手順を示すフローチャート図の一例である（実施例２）。
【図１４】情報処理システムが有するプリンタと情報処理装置の機能をブロック状に示す機能ブロック図の一例である（実施例３）。
【図１５】情報処理装置が制御プログラムをインストールする手順を示すシーケンス図の一例である（実施例３）。
【図１６】機器検知部が複数のＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を接続機器一覧保持部に保存する手順を示すフローチャート図の一例である（実施例３）。
【図１７】ディスプレイに表示された選択画面の一例を示す図である（実施例３）。
【図１８】インストール判断部が制御プログラムをインストールするか否かを判断しインストール結果を表示する手順を示すフローチャート図の一例である（実施例３）。
【図１９】インストール成功画面、エラーレポート画面の一例を示す図である。
【図２０】制御部がプリンタアイコン名の変更を検出する手順を示すフローチャート図の一例である（実施例４）。
【図２１】常駐ソフトが常時、印刷ジョブを監視している際にプリンタアイコンの増減を検出する手順を示すフローチャート図の一例である（実施例４）。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【実施例１】
【００１４】
＜インストール方法の比較例＞
図１を用いて、本実施形態のインストール方法を説明する上で比較されるインストール方法を説明する。図１の手順は必ずしも従来技術でない点に注意されたい。図１（ａ）は、制御プログラムのインストールを時系列に説明している。
【００１５】
１．ユーザが記憶媒体に記憶されているインストーラを情報処理装置で起動させる。この時点で情報処理装置にインストールされている制御プログラムを表すプリンタアイコン名はＭＰ２００、ＭＰ３００となっている。プリンタアイコン名及びプリンタアイコンについては図７にて後述する。
【００１６】
２．インストーラはユーザが新たに使用しようとするプリンタと情報処理装置を接続させるようユーザに促す画面を表示する。ユーザが新たに使用しようとするプリンタを新規プリンタといい、ユーザは新規プリンタのＭＰ２０１を情報処理装置と接続する。
【００１７】
３．ユーザが新規プリンタと情報処理装置を接続させるとプラグアンドプレイが働いて、例えばＯＳ同梱の制御プログラム（最新でない可能性がある）がインストールされる。本実施形態は機種共通の制御プログラムに限定されないが、分かりやすい例として制御プログラムが機種共通である場合を例にして説明する。ＭＰ２０１の制御プログラムは機種共通であり、新規プリンタ及び古いプリンタの両方に対応づけられている制御プログラムがＯＳ同梱として記憶されている。ＯＳ同梱の制御プログラムとは、ＯＳの出荷時にＯＳのメーカが収集した種々の電子機器の制御プログラムをいう。ＯＳ同梱の制御プログラムは最新の制御プログラムとは限らない。ＯＳ同梱の制御プログラムはＯＳで決まっている所定のフォルダに記憶されている。
【００１８】
５．このように、インストーラはＯＳ同梱の古い制御プログラムをインストールしてしまうため、新規プリンタの最新の制御プログラムはインストールされない。
【００１９】
次に、図１（ｂ）で、ＯＳ同梱の制御プログラムを、インストーラが置き換える場合のインストール方法を説明する。
【００２０】
１．ユーザが記憶媒体に記憶されているインストーラを情報処理装置で起動させる。この時点で情報処理装置にインストールされている制御プログラムを表すプリンタアイコン名はＰ２００、ＭＰ３００、ＭＰ２０１となっている。ＭＰ２０１は、ＭＰ２０１専用の最新の制御プログラムではなく、ＯＳ同梱の制御プログラム（例えば機種共通の制御プログラム）であり、新規プリンタよりも古いプリンタ（新規プリンタと異なる機種）のプリンタアイコン名である。
【００２１】
２．インストーラは新規プリンタＭＰ２０１と情報処理装置を接続させるようユーザに促す画面を表示する。ユーザはＭＰ２０１を情報処理装置と接続する。
【００２２】
３．インストーラはＯＳ同梱の古い制御プログラムをインストールしようとするが、新規プリンタであるＭＰ２０１に対するプリンタアイコンがすでに存在しているため、インストーラは新たなプリンタアイコンを作成できず、古い制御プログラムのまま新しい制御プログラムをインストールしない。特に情報処理装置のＯＳがWindows（登録商標）でありＵＳＢ接続の場合、１つのプリンタに対して複数のプリンタアイコンを設定することができない。
【００２３】
４．インストーラは、３．のような状況に対応するため、ＭＰ２０１というプリンタアイコン名に対応付けられている古い制御プログラムを新しい制御プログラムで置き換える。
【００２４】
５．ＭＰ２０１という名称のプリンタアイコンに最新の制御プログラムが対応付けられる。
【００２５】
しかし、ＭＰ２０１というプリンタアイコンに対応付けられた制御プログラムが古い制御プログラムから最新の制御プログラムに置き変わっているので、ユーザとしては今まで使っていた制御プログラムが勝手に変わってしまうことになる。制御プログラムが変わってしまうと、印刷設定画面における表示等が変わってしまうことがあり、ユーザにとって使い勝手が悪くなってしまう可能性がある。
【００２６】
＜本実施形態のインストール方法＞
図２は、本実施形態のインストーラによるインストール方法を説明する図の一例である。説明のため、まず、図２（ｂ）について説明する。
【００２７】
１．ユーザが記憶媒体に記憶されているインストーラを情報処理装置で起動させる。インストーラはこの時点で情報処理装置にインストールされている制御プログラムを表すプリンタアイコン名（プリンタアイコン名はＭＰ２００、ＭＰ３００、ＭＰ２０１）を取得する。
【００２８】
２．インストーラは新規プリンタと情報処理装置を接続させるようユーザに促す画面を表示する。ユーザは新規プリンタのＭＰ２０１を情報処理装置と接続する。
【００２９】
３．ユーザが新規プリンタと情報処理装置を接続させるとプラグアンドプレイが働いて、インストーラはＯＳ同梱の古い制御プログラムをインストールしようとする。しかし、ＭＰ２０１というプリンタアイコン名で制御プログラムがインストールされているためインストーラは古い制御プログラムのままインストールしない。つまり、新規プリンタであるＭＰ２０１の制御プログラムは機種共通であり、ＭＰ２０１と異なる古いプリンタの制御プログラムがＯＳに同梱されすでにインストールされている。
【００３０】
４．新規プリンタであるＭＰ２０１の制御プログラムはＭＰ２０１であるが、ユーザがこの制御プログラムをすでに使用している場合、１．の段階でＭＰ２０１というプリンタアイコン名のプリンタアイコンがあるはずである。情報処理装置１０は、新規プリンタであるＭＰ２０１から機種名を取得してＭＰ２０１に対応したプリンタアイコンが１．の段階で存在するか否かによって、インストールの可否を判断する。新規プリンタであるＭＰ２０１に対応したプリンタアイコンが１．の段階で存在する場合、インストーラの起動後にインストールされた制御プログラムではないため、ユーザは制御プログラムを使用している可能性があるので、インストーラは新規プリンタであるＭＰ２０１に対応した最新の制御プログラムをインストールしない。
【００３１】
図２（ｂ）は新規プリンタであるＭＰ２０１に対応したプリンタアイコンが１．の段階で存在する場合を示しており、インストーラは最新の制御プログラムをインストールしない。プラグアンドプレイで作成されるプリンタアイコンはＯＳの仕様上１つしか作成されない場合があるが、本実施例では制御プログラムを置き換えないのでユーザが今まで使っていた制御プログラムが勝手に変わってしまうことを防止できる。
【００３２】
このように、ユーザが古い制御プログラムを使用している場合は、新しい制御プログラムをインストールしないので、ユーザが知らないうちに制御プログラムが勝手に変わってしまうことを防止できる。
【００３３】
次に、図２（ａ）について説明する。１．〜３．までの処理は図２（ｂ）と同様である。ただし、１．の段階で存在するプリンタアイコン名はＭＰ２００、ＭＰ３００である。
【００３４】
４．新規プリンタであるＭＰ２０１に対応したプリンタアイコンが１．の段階でない場合、インストーラは再度、情報処理装置にインストールされている制御プログラムのプリンタアイコン（ＭＰ２００、ＭＰ３００、ＭＰ２０１）を取得する。
【００３５】
すると、１．で取得したプリンタアイコンとの違いが検出されるため、４．の段階で「新規プリンタであるＭＰ２０１に対応したプリンタアイコンがある場合」最新の制御プログラムのインストールを行う。更に好ましくは、１．では存在しなかったプリンタアイコンが「ＯＳ同梱の制御プログラムである場合」最新の制御プログラムのインストールを行う。これらのうち少なくとも一方を満たす場合、プラグアンドプレイでＯＳ同梱の古い制御プログラムがインストールされた可能性が高いためである。図２（ａ）ではこの条件を満たすとする。少なくとも一方を満たす場合、ユーザが新規プリンタに対するプリンタアイコンを意図的に使用していない可能性、及び、意図的にこのプリンタアイコンに対応する制御プログラムをインストールしていない可能性が高い。なお、この両方を満たす場合、プラグアンドプレイでＯＳ同梱の古い制御プログラムがインストールされた可能性が高い。
【００３６】
インストーラはすでにインストールされた古い制御プログラムを新しい制御プログラムで置き換える。
【００３７】
５．ＭＰ２０１のプリンタアイコンに新しい制御プログラムが対応付けられた状態になる。
【００３８】
上記の条件の「新規プリンタであるＭＰ２０１に対応したプリンタアイコンがある場合」により、プラグアンドプレイで古い制御プログラムがインストールされたと判断できる。また、「ＯＳ同梱の制御プログラムである場合」により、これからインストールしようとする制御プログラムの方が最適であると判断できる。よって、所定のフォルダの古い制御プログラムでなく最新の制御プログラムをインストールできる。
【００３９】
このように、本実施例のインストーラは最新の制御プログラムを自動でインストールすべきかどうかを適切に判断でき、制御プログラムのインストールにより生じる不都合を抑制できる。
【００４０】
＜用語について＞
制御プログラムとは、情報処理装置が電子機器を制御するためのプログラムである。電子機器の制御方法は電子機器ごとに様々であるため、情報処理装置は電子機器ごとに固有の方法で制御しなければならない。制御プログラムはＯＳに電子機器を制御する機能を追加するためのソフトウェアであり、抽象化されたインタフェースで電子機器の機能を利用する手段をＯＳに対して提供する。制御プログラムが電子機器を扱う手段を提供することによって、ＯＳが種々の電子機器に対応する必要をなくすことができる。制御プログラムの具体例としてはデバイスドライバが知られている。プリンタのデバイスドライバはプリンタドライバと呼ばれる場合がある。
【００４１】
インストールとは、情報処理装置にソフトウェアを追加し、このソフトウェアを使用可能にすることをいう。「導入する」や「セットアップする」と呼ばれる場合もある。
【００４２】
第一の制御プログラムに関する情報とは、情報処理装置にインストールされており情報処理装置から取得可能な第一の制御プログラムの情報である。より具体的には、第一の制御プログラムを特定できる情報、又は、第一の制御プログラムが使用された回数である。本実施形態ではプリンタアイコンに関する情報という用語で説明する。
【００４３】
電子機器の識別情報とは、電子機器を特定する情報である。インストールする制御プログラムを特定できる程度に電子機器を特定できればよい。例えば、電子機器の機種情報であり、更に具体的には機種名、機種名と対応付いた識別情報などである。本実施形態ではＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名という用語で説明される。
【００４４】
第二の制御プログラムは、情報処理装置にインストールしようとされる制御プログラムである。
【００４５】
＜システム構成例＞
図３は、情報処理システム１００の概略構成図の一例である。図３に示す情報処理システム１００は、サーバ５０、情報処理装置１０及び１台以上のプリンタ３０を有する。専用線で接続されたプリンタ３０をプリンタＡ、ネットワーク接続されたプリンタ３０をプリンタＢと称す。
【００４６】
情報処理装置１０とプリンタＡはＵＳＢケーブルなどの専用線でＰｅｅｒ Ｔｏ Ｐｅｅｒ（１対１）に接続されている。ただし、常に接続されている状態である必要はなく、ユーザが専用線を脱着させることができる。また、専用線はプラグアンドプレイ（Plug & Play）を発生させるインタフェースを備えていればよい。ＵＳＢケーブルの他、例えば、ＰＣカード、ＰＣＩ、ＩＥＥＥ１３９４、ＳＣＳＩ、等がある。
【００４７】
また、プラグアンドプレイに対応していれば情報処理装置１０とプリンタＡが無線で通信可能に接続されてもよい。Ｐｅｅｒ Ｔｏ Ｐｅｅｒの接続を行う無線通信としては、Bluetooth（登録商標）、アドホックモードの無線ＬＡＮ、WiFi-Directの無線ＬＡＮなどがある。
【００４８】
情報処理装置１０はネットワークを介してサーバ５０及びプリンタＢと通信可能に接続されている。このネットワークは、例えば、プリンタＡ、Ｂが設置された施設に敷設されたＬＡＮ、広域イーサネット（登録商標）、複数のＬＡＮがルータ等で接続されたＷＡＮ、及びインターネットなどである。ネットワークは有線又は無線のどちらで構築されてもよく、また、有線と無線が組み合わされていてもよい。また、無線の場合、３Ｇ、４Ｇ又はＬＴＥなどの通信規格のネットワークが含まれていてもよい。
【００４９】
情報処理装置１０は、ＯＳ（Operating System）、制御プログラム及びアプリケーションソフトウェアが実行される装置又は機器である。コンピュータと呼ばれることも多い。具体的には、例えば、ＰＣ（Personal Computer）、スマートフォン、タブレット端末、ＰＤＡ(Personal Digital Assistant)、ウェアラブルＰＣ等が例として挙げられる。このほか、プラグアンドプレイに対応し制御プログラムを実行可能な装置又は機器であればよい。
【００５０】
プリンタＡ、Ｂは、用紙などのシート材に画像を形成する装置である。印刷装置や画像形成装置と呼ばれる場合がある。また、画像を形成する機能の他にＦＡＸの送受信の機能、又は原稿の画像を読み取るスキャナの機能の１つ以上を有していてもよい。プリンタＡ，Ｂが複数の機能を有する場合、複合機やＭＦＰ（Multi-Function Peripherals）と呼ばれる。
【００５１】
プリンタＡ、Ｂはプラグアンドプレイによる制御プログラムのインストールに対応した電子機器の一例に過ぎない。プラグアンドプレイによる制御プログラムのインストールに対応した電子機器として、例えば、ＵＳＢをインタフェースとする機器が挙げられる。また、ビデオカード、マウス、Ｗｅｂカメラ、キーボードなどがある。
【００５２】
プリンタＢはネットワークに接続されているので、プリンタＢはユニバーサルプラグアンドプレイに対応していることが好ましい。ユニバーサルプラグアンドプレイに対応しているので、プリンタＢがネットワークに接続されると情報処理装置１０にプリンタＢの制御プログラムがインストールされる。プラグアンドプレイの一連の処理は、表１のようになるが、専用線又はネットワークのいずれでプリンタ３０が接続されても、必要な処理が行われる。
【００５３】
【表１】
2018128790.tif 000003
以下では、特に断らない限りプリンタＡの制御プログラムがインストールされる場合を例にして説明する。
【００５４】
サーバ５０は制御プログラムを記憶する一般的な情報処理装置（コンピュータ）である。情報処理装置１０にはサーバ５０のＩＰアドレスが予め設定されており、制御プログラムのインストールのためにプリンタＡが接続されると、情報処理装置１０はサーバ５０からプリンタＡに対応した制御プログラムを取得する。従って、制御プログラムが記憶媒体に記憶されている場合、サーバ５０はなくてもよい。サーバ５０はクラウドコンピューティングに対応していることが好ましい。クラウドコンピューティングとは、特定ハードウェア資源が意識されずにネットワーク上のリソースが利用される利用形態をいう。
【００５５】
<<プリンタのハードウェアについて>>
本実施例に係るプリンタ３０は、例えば図４に示すようなハードウェア構成により実現される。図４は、本実施例に係るプリンタ３０の一例のハードウェア構成図である。図４に示すプリンタ３０は、コントローラ２０１、操作パネル２０２、外部Ｉ／Ｆ２０３、通信Ｉ／Ｆ２０４、プリンタ部２０５、スキャナ２０６及び近距離無線通信装置２０７などを有している。
【００５６】
コントローラ２０１はＣＰＵ２１１、ＲＡＭ２１２、ＲＯＭ２１３と、ＮＶＲＡＭ２１４、ＨＤＤ２１５を有する。ＲＯＭ２１３は、各種プログラムやデータが格納されている。ＲＡＭ２１２はプログラムやデータを一時保持する。ＮＶＲＡＭ２１４は、例えば設定情報等が格納されている。また、ＨＤＤ２１５は各種のプログラム２１５ｐやデータが格納されている。
【００５７】
ＣＰＵ２１１は、ＲＯＭ２１３やＮＶＲＡＭ２１４、ＨＤＤ２１５などからプログラム２１５ｐやデータ、設定情報等をＲＡＭ２１２上に読み出し、処理を実行することで、プリンタ３０全体の制御や機能を実現する。
【００５８】
操作パネル２０２はユーザからの入力を受け付ける入力部と、表示を行う表示部２６（タッチパネルを備えている）とを有する。外部Ｉ／Ｆ２０３は外部装置とのインタフェースである。外部Ｉ／Ｆ２０３は例えばＵＳＢ Ｉ／Ｆであり、外部装置として情報処理装置１０が接続される。この他、外部装置には記録媒体２０３ａ等がある。なお、記録媒体２０３ａには、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリなどがある。
【００５９】
通信Ｉ／Ｆ２０４は、ネットワークＮを介した通信を行うためのインタフェースである。なお、プリンタＢはネットワークＮを介して情報処理装置１０と接続する。
【００６０】
プリンタ部２０５は、印刷対象データを印刷して出力するための印刷装置である。スキャナ２０６は原稿を光学的に読み取って電子データに変換する読み取り装置である。
【００６１】
近距離無線通信装置２０７は、例えば、ＮＦＣやBluetooth（登録商標）の通信規格にしたがった通信装置である。例えば、ＮＦＣの場合はリーダ・ライタなどと呼ばれる場合がある。
【００６２】
<<情報処理装置１０のハードウェアについて>>
図５は情報処理装置１０のハードウェア構成図の一例である。情報処理装置１０は、ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３及び補助記憶装置３０４を備える。更に、情報処理装置１０は、入力部３０５、ディスプレイＩ／Ｆ３０６、ネットワークＩ／Ｆ３０７、外部機器Ｉ／Ｆ３０８、及び光学ドライブ３０９を備える。なお、情報処理装置１０の各部は、バスＢを介して相互に接続されている。このように、情報処理装置１０は一般的なコンピュータとしての機能を有する。
【００６３】
ＣＰＵ３０１は、補助記憶装置３０４に格納された各種のプログラム３０４ｐ、ＯＳ（Operating System）等を実行する。ＲＯＭ３０２は不揮発性メモリである。ＲＯＭ３０２は、システムローダーやデータ等を格納する。
【００６４】
ＲＡＭ３０３は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）等の主記憶装置である。ＣＰＵ３０１によって実行される際に補助記憶装置３０４に格納されたプログラム３０４ｐがＲＡＭ３０３に展開され、ＲＡＭ３０３はＣＰＵ３０１の作業領域となる。
【００６５】
補助記憶装置３０４は、ＣＰＵ３０１により実行されるプログラム３０４ｐ及びプログラム３０４ｐがＣＰＵ３０１により実行される際に利用される各種データベースを記憶する。補助記憶装置３０４は例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性メモリである。
【００６６】
入力部３０５は、オペレータが情報処理装置１０に各種指示を入力するためのインタフェースである。例えば、キーボード、マウス、タッチパネル、音声入力装置などである。ただし、入力部３０５は必要に応じて接続されてよい。
【００６７】
ディスプレイＩ／Ｆ３０６は、ＣＰＵ３０１からの要求により、情報処理装置１０が有する各種情報をカーソル、メニュー、ウィンドウ、文字、又は画像などの形態で表示装置であるディスプレイ３１０に表示する。ディスプレイＩ／Ｆ３０６は、例えばグラフィックチップやディスプレイＩ／Ｆである。ただし、ディスプレイＩ／Ｆ３０６は必要に応じて接続されてよい。
【００６８】
ネットワークＩ／Ｆ３０７は、ネットワークＮを介してプリンタＢと通信を行う通信装置である。ネットワークＩ／Ｆ３０７は例えばイーサネット（登録商標）カードであるがこれに限られない。ネットワークＩ／Ｆ３０７は例えばネットワークＮに接続する。
【００６９】
外部機器Ｉ／Ｆ３０８は、ＵＳＢケーブル、又は、ＵＳＢメモリ等の各種の記憶媒体３２０などを接続するためのインタフェースである。外部機器Ｉ／Ｆ３０８にプリンタＡが接続される。光学ドライブは、ＣＤ、ＤＶＤ、又はBlu-layなどの記憶媒体３２０から情報を読み取ったり書き込んだりする装置である。記憶媒体３２０には、インストーラ６０が記憶されている。インストーラ６０は制御プログラムを含むが、サーバ５０から制御プログラムが取得される場合は、制御プログラムが含まれていなくてよい。
【００７０】
＜機能について＞
図６（ａ）は、情報処理システム１００が有するプリンタ３０と情報処理装置１０の機能をブロック状に示す機能ブロック図の一例である。
【００７１】
まず、プリンタ３０は送受信部３１と機器情報保持部３２を有する。プリンタ３０が有するこれら各機能部は、図４に示された各構成要素のいずれかが、ＨＤＤ２１５からＲＡＭ２１２に展開されたプログラムに従ったＣＰＵ２１１からの命令により動作することで実現される機能又は手段である。
【００７２】
送受信部３１は図４に示したＣＰＵ２１１がプログラム２１５ｐを実行すること及び外部Ｉ／Ｆ２０３を制御すること等により実現され、専用線３３を介して情報処理装置１０と通信を行う。プリンタＡが接続された場合、プラグアンドプレイにより、機器情報保持部３２が保持する情報を情報処理装置１０に送信する。プリンタＢが接続された場合、送受信部３１は図４に示したＣＰＵ２１１がプログラム２１５ｐを実行すること及び通信Ｉ／Ｆ２０４を制御すること等により実現されるが、機能は同様である。
【００７３】
機器情報保持部３２は、図４に示したＣＰＵ２１１がプログラム２１５ｐを実行すること及びＲＯＭ２１３、ＮＶＲＡＭ２１４、及びＨＤＤ２１５を使った情報の読み出し等により実現される。後述するコンフィグレーションレジスタに相当する。機器情報保持部３２は、ＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名を保持しており、送受信部３１からの要求に応じてこれらの情報を提供する。ＭＡＮＵＦＡＣＴＵＲＥ名は電子機器のメーカ名、提供者名、又は販売業者名ということができる。ＭＯＤＥＬ名は電子機器の機種名、商品名、又は型番ということができる。
【００７４】
ＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名はより詳細にはこれらを特定するＩＤとして記憶されているが、本実施形態では説明を簡単にするためＭＯＤＥＬ名とＭＡＮＵＦＡＣＴＵＲＥ名という用語で説明する。なお、ＩＤはIdentificationの略であり識別子や識別情報という意味である。ＩＤは複数の対象から、ある特定の対象を一意的に区別するために用いられる名称、符号、文字列、数値又はこれらのうち１つ以上の組み合わせをいう。
【００７５】
情報処理装置１０は、機器検知部１１、送受信部１２、制御部１３、インストール部１４、接続機器一覧保持部１５、ドライバ保存部１６、プリンタアイコン収集部１７、プリンタアイコン保持部１８、及び、インストール判断部１９を有する。情報処理装置１０が有するこれら各機能部は、図５に示された各構成要素のいずれかが、補助記憶装置３０４からＲＡＭ３０３に展開されたプログラムに従ったＣＰＵ３０１からの命令により動作することで実現される機能又は手段である。
【００７６】
送受信部１２は、図５に示したＣＰＵ３０１がインストーラ６０とＯＳを実行すること及び外部機器Ｉ／Ｆ３０８を制御すること等により実現され、プリンタ３０と通信する。本実施形態ではプリンタ３０からＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名とを取得する。
【００７７】
機器検知部１１は、図５に示したＣＰＵ３０１がインストーラ６０とＯＳを実行すること等により実現され、送受信部１２が取得したＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名とにより接続されたプリンタ３０の機種を判断する。
【００７８】
接続機器一覧保持部１５は、図５に示したＣＰＵ３０１がインストーラ６０を実行すること及びＲＡＭ３０３、補助記憶装置３０４等により実現され、送受信部１２が取得したＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名を保持する。複数のプリンタ３０が接続されている場合は全てのプリンタ３０のＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を保持する。従って、接続機器一覧保持部１５は接続されているプリンタ３０の一覧を保持するということができる。
【００７９】
ドライバ保存部１６は、図５に示したＣＰＵ３０１がインストーラ６０や記憶媒体３２０等により実現され、プリンタ３０の最新の制御プログラムを保持している。
【００８０】
インストール部１４は、図５に示したＣＰＵ３０１がインストーラ６０を実行すること等により実現され、ドライバ保存部１６の制御プログラムをインストールする。
【００８１】
制御部１３は、図５に示したＣＰＵ３０１がインストーラ６０を実行すること等により実現され、インストールの全体に関する制御を行う。
【００８２】
プリンタアイコン収集部１７は、図５に示したＣＰＵ３０１がインストーラ６０を実行すること等により実現され、情報処理装置１０にすでにインストールされているプリンタアイコンに関する情報を収集する。
【００８３】
プリンタアイコン保持部１８は、図５に示したＣＰＵ３０１がインストーラ６０を実行すること及びＲＡＭ３０３、補助記憶装置３０４等により実現され、プリンタアイコン収集部１７が収集したプリンタアイコンに関する情報を保持している。
【００８４】
インストール判断部１９は、図５に示したＣＰＵ３０１がインストーラ６０を実行すること等により実現され、プリンタアイコン保持部１８の情報と機器検知部１１が検知した機種名に基づいて、最新の制御プログラムをインストール可能かどうか判断する。また、「新規プリンタであるＭＰ２０１に対応したプリンタアイコン」があるか否か、及び、「ＯＳ同梱の制御プログラム」であるか否かを判断して、最新の制御プログラムをインストール可能かどうか判断する。
【００８５】
<<機能ブロック図の他の例>>
図６（ｂ）に示すように、情報処理装置１０はサーバ５０から制御プログラムを取得してもよい。プリンタＡの機種を特定すると、情報処理装置１０はサーバ５０から機種に対応した最新の制御プログラムをダウンロードする。
【００８６】
情報処理装置１０の送受信部１２はプリンタＡの機種に対応する制御プログラムをサーバ５０に要求して取得する。このため、サーバ５０がドライバ保存部１６を有しており、情報処理装置１０はドライバ保存部１６を有さなくてよい。
【００８７】
＜プリンタアイコンについて＞
図７は、プリンタアイコン７０を説明する図の一例である。図７（ａ）は情報処理装置１０が表示したプリンタアイコン７０の一覧を示し、図７（ｂ）は１つのプリンタアイコン７０を示す。プリンタアイコン７０とは、プリンタ３０に関する情報が対応付けられた情報処理装置１０上のプリンタであり、論理プリンタと呼ばれる場合がある。
【００８８】
情報処理装置１０に制御プログラムがインストールされた場合、プリンタＡを視覚的に表示するために図示するようなプリンタＡを表す画像データもインストーラ６０又は所定のフォルダからインストールされる。一般にアイコンはこの画像データを意味するが、本実施形態ではアイコン（画像データ）に対応付けられた情報を含めてプリンタアイコン７０という。
【００８９】
プリンタアイコン７０はプリンタ３０のポート（ＩＰアドレス、ＵＳＢポートなど）などで各プリンタ３０と対応付けられる。また、各プリンタアイコン７０はインストールされた制御プログラムの名称（制御プログラム名７２）を保持している。これとは別にプリンタアイコン７０はプリンタアイコン名７１を保持している。制御プログラム名７２は予め決まっている。プリンタアイコン名７１はユーザがこのプリンタアイコン７０で印刷できるプリンタ３０を把握するためのプリンタの表示名（識別情報）である。ユーザは製品の名称を考慮して判別しやすいプリンタアイコン名７１を任意に設定することができる。
【００９０】
制御プログラム名７２は制御プログラムで印刷できる機種名を含む場合が多いが、制御プログラムが機種共通の場合、制御プログラム名とプリンタ名は一致しない場合がある。例えば、プリンタ名（製品の名称）がＭＰ２０１ＡとＭＰ２０１Ｂであるが、機種共通の制御プログラムが適用される場合、ＭＰ２０１ＡとＭＰ２０１Ｂのどちらのプリンタアイコンにも同じ制御プログラム名が対応付けられる場合がある。
【００９１】
印刷設定７３はインストールと共にレジストリに格納されたものか又はユーザが最後に設定したものがプリンタアイコン７０に対応付けられる。このほか、プリンタアイコン７０は、プリンタＡから取得される使用できる紙種やオプション設定などの情報を保持できる。これらは、インストール時双方向通信により取得され制御プログラムのインストールと共に情報処理装置１０に格納される。
【００９２】
このようにプリンタアイコン７０は、単なる画像データでなく制御プログラムが対応するプリンタ３０の機能や設定を保持するようになり、ユーザは情報処理装置１０のプリンタアイコン７０を実際のプリンタ３０のように扱うことができる。
【００９３】
上記のようにプラグアンドプレイで作成されるプリンタアイコンはＯＳの仕様上１つしか作成されない。例えばＭＰ２０１というプリンタアイコン名のプリンタアイコン７０がある場合に、ＭＰ２０１と同じ制御プログラムを使用するプリンタの制御プログラムがプラグアンドプレイでインストールされると、ＭＰ２０１というプリンタアイコン名のプリンタアイコン７０の制御プログラムが新しい制御プログラムに置き換わる。
【００９４】
＜プラグアンドプレイについて＞
図８は、プラグアンドプレイを模式的に説明する図の一例である。プリンタ３０はコンフィグレーションレジスタ３５と呼ばれる記憶手段を有し、ここにＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を記憶している（後述されるPnP ID）。また、ＯＳ同梱の制御プログラムは所定のフォルダに記憶されている（例えば、Driver Storeというフォルダ）。情報処理装置１０は所定のフォルダ２１にＩＮＦファイル２２と制御プログラム２３を有している。ＩＮＦファイル２２は、ＯＳ（主にWindows（登録商標。以下、省略する。）において、ソフトウェアのインストール用の設定が記述されたシステム定義ファイルである。ＩＮＦファイル２２には、ＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名の他、ＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名のプリンタ３０の制御プログラム２３はどのファイルで情報処理装置１０のどのフォルダにコピーするかが記述されている。
【００９５】
（１）ＯＳのプラグアンドプレイ機能は、プリンタ３０が接続されたことを検出すると（この時点では機種名は分からずＵＳＢケーブルで電子機器が接続されたことが検出される）、情報処理装置１０のＢＩＯＳ（Basic Input Output System）はプリンタ３０のコンフィグレーションレジスタ３５からＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名を取得する。
【００９６】
（２）ＯＳはこのＯＳの出荷時点で市販されていた主な電子機器の制御プログラムを所定のフォルダ２１に保持している。プラグアンドプレイ機能は、所定のフォルダ２１にプリンタ３０から取得したＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名とを有するＩＮＦファイル２２を検索する。
【００９７】
（３）ＩＮＦファイル２２が見つかったら、インストーラ６０がＩＮＦファイル２２に記述されている設定（ファイル）に従って制御プログラム２３をインストールする。
【００９８】
記憶媒体又はサーバに制御プログラム２３が記憶されている場合、ＩＮＦファイルはインストーラと同じフォルダに格納されているので、インストーラはこのフォルダから制御プログラム２３をインストールする。また、次回、同じ制御プログラム２３を記憶媒体やサーバがなくてもインストールできるように、インストールした制御プログラム２３とＩＮＦファイルを所定のフォルダ２１にコピーする。
【００９９】
なお、WindowsというＯＳを説明に使用したのは一例であって、プラグアンドプレイに対応したＯＳであれば本実施形態に好適に適用できる。
【０１００】
＜動作手順＞
図９は、情報処理装置１０が制御プログラムをインストールする手順を示すシーケンス図の一例である。
【０１０１】
S1：まず、ユーザは記憶媒体を外部機器Ｉ／Ｆ３０８又は光学ドライブ３０９に装着して、インストーラ６０を起動する。
【０１０２】
S1.1：制御部１３はプリンタアイコン収集部１７に、情報処理装置１０がインストール開始時にすでに有している各プリンタアイコン７０に関する情報（プリンタアイコン名、制御プログラム名、ポート名）の収集を要求する。
【０１０３】
S1.1.1：プリンタアイコン収集部１７は各プリンタアイコン７０に関する情報を収集する。WindowsというＯＳではEnumPrinters()というWindows APIの関数を利用すると、情報処理装置１０で作成されているプリンタアイコン７０の情報を取得できる。EnumPrinters()ではPRINTER_INFO_2という構造体の情報を取得でき、全てのプリンタアイコン７０（インストーラ６０の起動時に作られていた全てのプリンタアイコン）のPRINTER_INFO_2の情報を取得できる。PRINTER_INFO_2はpPrinterName、pDriverName及びPPortNameというメンバーを有し、それぞれがプリンタアイコン名、制御プログラム名及びポート名に対応する。表２にプリンタアイコン収集部１７が収集したプリンタアイコン名、制御プログラム名及びポート名のリストを示す。
【０１０４】
【表２】
2018128790.tif 000004
表２は情報処理装置１０にインストールされている制御プログラムを表すプリンタアイコン７０の情報を示す。表２では４つの制御プログラムがインストールされていることが示されている。
【０１０５】
図９に戻り、ステップＳ２〜Ｓ２．１．２．１までの処理を説明する。
【０１０６】
S2：ユーザはインストーラ６０の指示を受けて、プリンタＡと情報処理装置１０を例えばＵＳＢケーブルで接続する。
【０１０７】
S2.1〜S2.1.2：プリンタＡが接続されることでプラグアンドプレイが働き、制御部１３はプリンタＡからプリンタ情報（ＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名）を取得する。具体的には、Windowsに用意されているAPIで、
SetupDiGetClassDevs() 
→ SetupDiEnumDeviceInterfaces() 
→ SetupDiGetDeviceInterfaceDetail()
→ CreateFile()
→ DeviceIoControl()  を呼び出し、プリンタＡのＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を取得する。
【０１０８】
まず、SetupDiGetClassDevs()に渡すGUIDに{0x28d78fad, 0x5a12, 0x11d1, {0xae, 0x5b, 0x0, 0x0, 0xf8, 0x3, 0xa8, 0xc2}}を指定する使用することで、ＵＳＢ接続されたプリンタＡに絞ってデバイス情報を取得する。このGUIDはＵＳＢ接続される電子機器のうちプリンタを指定するものであり、IEEE 1284という規格で決まっている。
【０１０９】
次に、インストーラ６０が取得したデバイス情報を用いてSetupDiEnumDeviceinterfaces()を使用すると、デバイスインタフェースを取得できる。次に、取得したデバイスインタフェースを用いて、SetupDiGetDeviceInterfaceDetail()を使用すると、デバイスインタフェースの詳細情報を取得できる。次に、CreateFile()でデバイスインタフェースの詳細情報に含まれているパスからハンドルを作成し、そのハンドルを用いてDeviceIoControl()を使用する事により、IEEE 1284 Device ID Stringが取得できる。
【０１１０】
IEEE 1284は、コンピュータと他の電子機器間の双方向パラレル通信を定義しているIEEE標準（規格）である。Device ID Stringは、電子機器を特定するＩＤを含む情報である。Device ID Stringには、ＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名が含まれている。機器検知部１１はDevice ID Stringの決まった位置からＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名を取得する。
【０１１１】
シーケンス図では情報処理装置１０の送受信部１２がプリンタＡの情報処理装置１０と通信し、機器情報保持部３２からＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名とが取得されているが、具体的には上記のＡＰＩにより処理されている。
【０１１２】
S2.1.2.1：機器検知部１１は、プリンタ情報（ＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名）を接続機器一覧保持部１５に保持しておく。取得されたプリンタ情報を表３に示す。
【０１１３】
【表３】
2018128790.tif 000005
表３は、プリンタＡから取得されたプリンタ情報の一例である。プリンタＡは、ＲＣＯＯというＭＡＮＵＦＡＣＴＵＲＥ名でPrinter ＭＰ２０１というＭＯＤＥＬ名を有することが分かる。なお、ＵＳＢケーブルで接続されるプリンタには様々なメーカのものがあるが、インストーラ６０は通常、自社のプリンタにしか対応できない。このため、制御部１３は、サポートしている自社のＭＯＤＥＬ名（自社の社名）以外のプリンタ情報を削除して、自社のＭＯＤＥＬ名を有するプリンタ情報のみを表示してもよい。自社のＭＯＤＥＬ名はメーカにとって既知であるため、インストーラ６０が有している。あるいは、サーバ５０などの所定のサーバに問い合わせることができる。
【０１１４】
図９に戻り、ステップＳ３〜Ｓ４の処理を説明する。
S3：制御部１３は、インストール判断部１９に接続されたプリンタＡの制御プログラムをインストール可能か否かの判断を要求する。
【０１１５】
S3.1：インストール判断部１９は、接続機器一覧保持部１５からＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を取得する。
【０１１６】
S3.2：インストール判断部１９はインストーラ６０が持つ制御プログラムに関する情報を取得する。例えば、制御プログラム名を取得すればよい。
【０１１７】
S3.3：インストール判断部１９は、プリンタアイコン保持部１８が保持しているプリンタアイコン７０に関する情報を取得する。
【０１１８】
S3.4：インストール判断部１９はインストールが可能か否かを判断する。具体的な判断方法は図１０で後述される。インストール判断部１９はインストール可否の判断結果を制御部１３に返す。ここではインストールができると判断されたものとする。
【０１１９】
S4：制御部１３はインストール部１４にインストールを指示する。
【０１２０】
S4.1：インストール部１４は制御プログラムをインストールする。
【０１２１】
＜インストールの可否の判断方法＞
図１０は、インストール判断部１９が制御プログラムをインストールするか否かを判断する手順を示すフローチャート図の一例である。
【０１２２】
インストール判断部１９は、接続機器一覧保持部１５からＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名を取得する（Ｓ１０）。表３では情報処理装置１０にプリンタＡが１つのみ接続されているのでＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名は一意に決まる。このうちＭＯＤＥＬ名に機種（例えば、ＭＰ２０１）が含まれる。
【０１２３】
ＭＯＤＥＬ名により制御プログラムがインストールされる機種が分かったので、インストール判断部１９は制御プログラムを特定する（Ｓ２０）。ＩＮＦファイル２２にはＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名から生成されたPnP IDが記載されている。PnP IDとは「ポート＋ベンダー名＋モデル名＋SUM値」を有する情報である。ベンダー名がＭＡＮＵＦＡＣＴＵＲＥ名又はこれに準ずるものであり、モデル名がＭＯＤＥＬ名又はこれに準ずるものである。従って、PnP IDのモデル名が機種名に相当する。
【０１２４】
インストール判断部１９はPnP IDのモデル名以外の箇所を削除することでモデル名に戻して、プリンタＡから取得したＭＯＤＥＬ名と同じモデル名を検索する。プリンタＡから取得したＭＯＤＥＬ名と同じモデル名があれば、そのモデル名に対し指示されている制御プログラムをＩＮＦファイルで特定する。インストールすると判断された場合にはこの制御プログラムがインストールされる。
【０１２５】
次に、インストール判断部１９は、これからインストールする機種のプリンタアイコン７０が起動時に存在していたか否かを判断する（Ｓ３０）。表２に示すプリンタアイコン保持部１８が保存していたプリンタアイコン名と制御プログラム名を取得し、その中にこれからインストールする機種のプリンタアイコンがあるかどうかを判断する。プリンタアイコン名と制御プログラム名には機種名が含まれるため、プリンタＡから取得したＭＯＤＥＬ名がプリンタアイコン名又は制御プログラム名に含まれるかどうかにより判断できる。
【０１２６】
すなわち、これからインストールする機種の機種名でプリンタアイコン７０を特定できルか否かを判断する。
【０１２７】
起動時に存在していた場合、既に一度プリンタＡと接続して制御プログラムが利用されている可能性が高いため、インストール判断部１９は新しい制御プログラムをインストールしないと判断する（制御プログラムを置き替えないようにする）。
【０１２８】
次に、起動時にプリンタアイコン７０が存在していなくても、インストーラ６０にＭＡＮＵＦＡＣＴＵＲＥ名及びＭＯＤＥＬ名を認識させるためにユーザがプリンタＡとプリンタを接続させるとプラグアンドプレイが行われ、プリンタアイコン７０が作成されることがある。この場合に備えて、インストール判断部１９はこのタイミングでもう一度、情報処理装置１０が有するプリンタアイコン７０に関する情報を取得する。そして、インストールする機種のプリンタアイコン７０が存在するか否かを判断する。判断方法はステップＳ３０と同じでよい。
【０１２９】
この時点でプリンタアイコン７０がある場合、このプリンタアイコン７０が保持する制御プログラム名がＯＳ同梱の制御プログラム名と同じか否かを判断する（Ｓ４０）。ＯＳ同梱の制御プログラム名と同じかどうかは、インストーラ６０がこれからインストールしようとする制御プログラム名と同じかどうかを判断すればよい（図９のステップＳ３．２で取得されている）。機種共通の制御プログラムであれば同じ名称を有する。しかし、機種共通の制御プログラムでない場合は同じ名称とは限らないので、ＯＳ同梱の制御プログラムである可能性のある制御プログラムの名称の一覧等をインストーラが予め保持している。インストール判断部１９はこの一覧とプリンタアイコン７０が保持する制御プログラム名を比較する。
【０１３０】
また、名称以外のバージョンの情報等を用いたステップＳ４０の判断も可能である。ステップＳ３．２でバージョンの情報等を取得していた場合、インストールしようとする制御プログラムと同一の制御プログラムがプラグアンドプレイによってインストールされたかの判断が可能である。予めユーザが最新の制御プログラムのファイルを取得していた場合、infフアイルの設定によってはインストールしようとする制御プログラムと同一の制御プログラムがインストールされている場合もありえる。このため、ステップＳ４０で「ＯＳ同梱の制御プログラムか否かを判断」する代わりに、ステップＳ３．２で取得した情報を用いて同じ制御プログラムではないと判断される場合に古い制御プログラムがインストールされていると判断して、インストーラによる制御プログラムのインストールを行ってもよい。
【０１３１】
インストールする機種のプリンタアイコン７０でないか、又は、ＯＳ同梱の制御プログラムではなかった場合（Ｓ４０のＮｏ）、プリンタＡの機種に最適な制御プログラムがインストールされているのでインストール処理は行わない。上記のように、ＵＳＢ接続のようなプラグアンドプレイを用いて作成されるプリンタアイコンは１つだけであり、インストール処理を続行してしまうと、既に存在しているプリンタアイコン７０を消してしまうからである。
【０１３２】
インストールする機種のプリンタアイコン７０であり、かつ、ＯＳ同梱の制御プログラムである場合（Ｓ４０のＹｅｓ）、これからインストールする制御プログラムの方がユーザに最適な制御プログラムであることが確実なので、インストール判断部１９はインストール処理を行うと判断する（Ｓ５０）。
【０１３３】
制御プログラムのインストールについて説明する。プリンタＡがＵＳＢケーブルで接続される場合、プラグアンドプレイ機能が必要なポートを作成したりレジストリの書きこみを行ったりしないと、ＯＳはプリンタアイコンを作成することができない。このため、インストーラ６０は既定の場所に制御プログラムをコピーして、インストール処理の一部をＯＳに要求してプラグアンドプレイを意図的に起こす必要がある。
【０１３４】
インストール部１４は、WindowsのＡＰＩのUpdateDriverForPlugAndPlayDevices()を用いて、意図的にプラグアンドプレイを起こさせ、インストーラ６０がインストールする制御プログラムとインストーラ６０の起動時にないがステップＳ４０で生成されていたプリンタアイコン７０との対応付けを行う。このＡＰＩにより、ユーザがプリンタＡと情報処理装置１０を脱着しなくても、プリンタＡと情報処理装置１０が接続されたようなイベントを生じさせ、ポート作成やレジストリの書き替えなどをＯＳに行わせることができる。
【０１３５】
プラグアンドプレイの処理を呼び出さない他の方法として、ＯＳ同梱の制御プログラムの情報を使って以下の方法で実現してもよい。
【０１３６】
インストール部１４がWindowsのAPIであるINstallPrinterDriverFromPackage()→SetPrinter()を呼び出すことで、ＯＳ同梱の制御プログラムに対応づけて作成されたプリンタアイコン７０を別の制御プログラムに置き換えることができる。この方法のメリットは、ＯＳにインストール処理の一部を要求しないので、UpdateDriverForPlugAndPlayDevices()を使うよりもインストールに要する時間が短いことである。
【０１３７】
デメリットとしては、プラグアンドプレイのイベントが起きないため、レジストリ情報(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBPRINT\プリンタ名\)のDeviceDesc(機器の説明)とMfg(ドライバのinfファイル名とブランド)が変更されない。他のアプリケーションがこれらの情報を利用しようとした場合、所望の結果が得られない可能性がある。このため、これらの情報を利用する他のアプリケーションが動作する可能性が低い場合はINstallPrinterDriverFromPackage()→SetPrinter()を使い、それ以外の場合はUpdateDriverForPlugAndPlayDevices()を使用するなどの使い分けが考えられる。
【０１３８】
＜まとめ＞
以上のように、本実施例の情報処理装置１０は、ユーザが古い制御プログラムを使用している場合は、新しい制御プログラムをインストールしないと判断することができる。ユーザが古い制御プログラムを使用していない場合、新規プリンタが接続されることでＯＳ同梱の制御プログラムがインストールされたことを検出して、新しい制御プログラムをインストールすることができる。
【実施例２】
【０１３９】
本実施例ではプリンタの使用記録を参照して制御プログラムのインストールの可否を判断する情報処理装置１０について説明する。
【０１４０】
図１１は、情報処理システム１００が有するプリンタＡと情報処理装置１０の機能をブロック状に示す機能ブロック図の一例である。図１１の説明において、図６（ａ）と同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
【０１４１】
本実施例のインストーラ６０はプリンタアイコン使用記録部２５を有する。プリンタアイコン使用記録部２５は、図５に示したＣＰＵ３０１がインストーラ６０を実行すること等により実現され、プリンタアイコン収集部１７が取得したプリンタアイコン名と制御プログラム名に対応付けて制御プログラムが印刷に利用された回数を保持している。
【０１４２】
＜動作手順＞
図１２は、情報処理装置１０が制御プログラムをインストールする手順を示すシーケンス図の一例である。図１２の説明では、図９との相違を主に説明する。ステップＳ１〜Ｓ１．１．１までの手順は図９と同様でよい。表４に、プリンタアイコン収集部１７で取得したプリンタアイコン名と制御プログラム名を示す。
【０１４３】
【表４】
2018128790.tif 000006
実施例１と異なり印刷ジョブ送信回数がプリンタアイコン使用記録部２５に保持されている。印刷ジョブ送信回数は印刷ジョブを制御プログラムがプリンタＡに送信した回数である。プリンタアイコン７０の生成時はゼロであり、制御プログラムが印刷ジョブをプリンタＡに送信するごとに１つ大きくなる。
【０１４４】
図１２に戻って説明する。
S1.1.2：プリンタアイコン収集部１７は印刷ジョブがプリンタＡに送信されたか否かを監視する。印刷ジョブ送信回数については、以下の方法を用いてカウントする。情報処理装置１０にインストールされているプリンタアイコン名はEnumPrinters()で全て分かっているので、プリンタアイコン名を使用してOpenPrinter()を呼び出す。OpenPrinter()でプリンタアイコン７０のハンドルを取得して、そのハンドルを利用してプリンタアイコン７０に変更がある場合に通知してくれるFindFirstPrinterChangeNotification()を呼び出す。その際、プリンタアイコン７０に何か変更があったら全部通知してもらうため、第２引数にPRINTER_CHANGE_ALLを指定する。
【０１４５】
プリンタアイコン収集部１７は常駐し、for文などの繰り返し構文で印刷ジョブが送信されたか（制御プログラムか使用されたか）否かを常に監視し続ける。
【０１４６】
S1.1.3：プリンタアイコン収集部１７は印刷ジョブをプリンタＡに送信したプリンタアイコン７０とその回数を接続機器一覧保持部１５に送出する。具体的には、WaitForSingleObject(指定されたオブジェクトがシグナル状態になったら制御を返すWindows API)を利用して実際に変更された通知の情報を取得するFindNextPrinterChangeNotification()を呼び出す。印刷ジョブが追加された場合は、第２引数によりPRINTER_CHANGE_ADD_JOBが取得できるので、取得できた分、表４の印刷ジョブ送信回数を増やしてプリンタアイコン使用記録部２５に保存する。
【０１４７】
このように、プリンタアイコン使用記録部２５には、制御プログラムが使用された回数が保持されるため、ユーザがこの制御プログラムを使用しているかどうかが判断可能になる。
【０１４８】
以降の処理は図９と同様でよい。これにより、接続機器一覧保持部１５には表５のプリンタ情報が保持される。
【０１４９】
【表５】
2018128790.tif 000007
＜インストールの可否の判断＞
図１３は、インストール判断部１９が制御プログラムをインストールするか否かを判断する手順を示すフローチャート図の一例である。図１３の説明では主に図１０との相違を説明する。ステップＳ１０，Ｓ２０の処理は図１０と同様でよい。
【０１５０】
ステップＳ３０では、ステップＳ２０で決まった機種に対応した制御プログラムをインストールする前に、プリンタアイコン使用記録部２５が保持しているプリンタアイコン名と印刷ジョブ送信回数をインストール判断部１９が取得する。そして、インストールしようとしている機種のプリンタアイコン７０がインストール時にすでに存在していて、印刷ジョブを送信していたか否かを判断する（Ｓ３０）。上記のように、プリンタＡの機種名が分かるので機種名を含むプリンタアイコン名又は制御プログラム名に対応付けられている印刷ジョブ送信回数を取得する。すなわち、機種名により特定されるプリンタアイコン７０の制御プログラムが使用されたことがあるか否かを判断する。
【０１５１】
印刷ジョブ送信回数が１回以上の場合（閾値以上の場合）は、ユーザが制御プログラムを使用しているので、インストール判断部１９は制御プログラムを置き替えないようにする。
【０１５２】
次に、印刷ジョブ送信回数が０回の場合でも、インストーラ６０にＭＡＮＵＦＡＣＴＵＲＥ名やＭＯＤＥＬ名を認識させるためにユーザがプリンタＡと情報処理装置１０を接続させるとプラグアンドプレイが行われ、プリンタアイコン７０が作成されることがある。このため、図１０のステップ４０以降の処理が実行される。以降の処理は図１０と同様でよい。
【０１５３】
従って、本実施例によれば、プリンタアイコン７０が有する印刷ジョブ送信回数に基づいて制御プログラムが使用されているか否か判断し、この判断結果に応じて新規プリンタの制御プログラムをインストールするか否かを判断できる。
【実施例３】
【０１５４】
本実施例では複数のプリンタＡ、Ｃが接続された場合の制御プログラムのインストールについて説明する。プリンタＡ、ＣはいずれもＵＳＢケーブルで接続されたプリンタ３０である。
【０１５５】
図１４は、情報処理システム１００が有するプリンタＡと情報処理装置１０の機能をブロック状に示す機能ブロック図の一例である。図１４の説明において、図６（ａ）と同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
【０１５６】
本実施例のインストーラ６０は表示部２６を有する。表示部２６は、図５に示したＣＰＵ３０１がインストーラ６０とＯＳを実行すること及びディスプレイＩ／Ｆ３０６を制御すること等により実現され、ユーザとのインタフェースとなる各種の画面を表示する。
【０１５７】
なお、図１４においても図６（ｂ）のように、サーバ５０に制御プログラムが記憶されていてよい。
【０１５８】
＜動作手順＞
図１５は、情報処理装置１０が制御プログラムをインストールする手順を示すシーケンス図の一例である。なお、図１５の説明では、主に図９との相違を説明する。図１５のステップＳ１〜Ｓ２．１．２．１、Ｓ４〜Ｓ５．１の説明は図９と同様である。ただし、複数のプリンタＡが情報処理装置１０に接続されているので、複数のプリンタ情報を取得できる。
【０１５９】
このため、機器検知部１１は、ステップＳ１〜Ｓ２．１．２．１で、図１６に示すように、ＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を取得しただけ接続機器一覧保持部１５に保存する。この場合も、ＭＡＮＵＦＡＣＴＵＲＥ名がインストーラ６０のメーカ名等と一致するか否かを判断し、一致する場合にだけＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を保存してよい。
【０１６０】
図１６は、機器検知部１１が複数のＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を保存する手順を示すフローチャート図の一例である。
【０１６１】
機器検知部１１はＭＡＮＵＦＡＣＴＵＲＥ名がインストーラ６０のメーカ名等と一致するか判断する（Ｓ１０）。
【０１６２】
一致する場合はＭＡＮＵＦＡＣＴＵＲＥ名とＭＯＤＥＬ名を取得しただけ接続機器一覧保持部１５に保持する（Ｓ２０）。
【０１６３】
機器検知部１１は他にプリンタ情報が取得されたか否かを判断し（Ｓ３０）、他にある場合はステップＳ１０の処理を繰り返す。
【０１６４】
【表６】
2018128790.tif 000008
表６は、接続機器一覧保持部１５に保持されるプリンタ情報を示す。表６では、２つのプリンタ情報が取得されたことが示されている。
【０１６５】
図１５に戻って説明する。
S3：制御部１３はプリンタ情報の表示を表示部２６に要求する。
S3.1：表示部２６は接続機器一覧保持部１５に接続されているプリンタの一覧を要求する。
S3.2：表示部２６は、接続機器一覧保持部１５から取得したプリンタの一覧をディスプレイ３１０に表示する。ユーザがインストールするプリンタ３０を選択するので、表示部２６は選択を受け付ける。
【０１６６】
ユーザが選択したプリンタ３０は制御部１３に通知されるため、制御部１３はステップＳ４以降でこのプリンタ３０の制御プログラムをインストールする。
【０１６７】
＜画面例＞
図１７は、ディスプレイ３１０に表示された選択画面５０１の一例を示す。選択画面５０１では、「どの機器のドライバをインストールしますか？」というメッセージ５０２、及び機種名欄５０３を有している。ユーザは制御プログラムをインストールしたい機種名
を機種名欄５０３から選択する。
【０１６８】
また、複数の同一機種のプリンタが接続されている場合、表示部２６はそれぞれを検出して表示できる。しかし、Windowsのプラグアンドプレイの仕様上、インストール時に同一の機種には同一のHardware IDが指定されるので、２つのプリンタアイコン７０に同じ制御プログラムがインストールされる。従って、表示部２６が複数の同じ機種名を表示してもユーザが選ぶ意味が無いため、表示部２６は同じ複数の機種名がある場合、１つだけ表示する。
【０１６９】
また、図１５の処理では、接続されたプリンタＡの機種名をリアルタイムで表示することは困難であるが、制御部１３がdoReceiveMSWindowProcEvent()を使えばプリンタＡの接続のイベントを受け取ることができる。制御部１３がイベント受信時に図１５のステップ
Ｓ３〜Ｓ３．２の処理を行えば、接続されたプリンタＡの機種名をリアルタイムで画面に表示させることができる。doReceiveMSWindowProcEvent()はＵＳＢケーブルで接続された電子機器の増減を検出するＡＰＩである。
【０１７０】
＜インストール結果のレポート画面＞
更に、表示部２６はユーザにレポート画面を表示することができる。
図１８は、インストール判断部１９が制御プログラムをインストールするか否かを判断しインストール結果を表示する手順を示すフローチャート図の一例である。図１８の説明では主に図１０との相違を説明する。ステップＳ１０〜Ｓ５０は図１０と同様でよい。
【０１７１】
ステップＳ５０でインストールが成功した場合、表示部２６はインストール成功画面をディスプレイ３１０に表示する（Ｓ６０）。インストール成功画面３１１を図１９（ａ）に示す。
【０１７２】
ステップＳ３０でＹｅｓと判断された場合（インストールしようとしている制御プログラムのプリンタアイコン名が既にある場合）、表示部２６はエラーレポート画面３２１を表示する（Ｓ７０）。エラーレポート画面３２１を図１９（ｂ）に示す。
【０１７３】
図１９（ａ）のインストール成功画面３１１には「Printer MP201の機器が追加されました」というメッセージ３１２が表示される。ユーザは追加された制御プログラムを把握できる。図１９（ｂ）のエラーレポート画面３２１には「Printer MP201の機器はすでにインストールされています」というメッセージ３２２が表示される。ユーザは制御プログラムがインストールされなかったこと及びインストールする必要がなかったことを把握できる。
【０１７４】
本実施例によれば、ＵＳＢケーブルで複数のプリンタＡ、Ｃが接続された場合でも、機種名を表示することでインストールする制御プログラムを決定できる。制御プログラムがインストールされたか否かをユーザが把握できる。
【０１７５】
なお、本実施例は実施例１，２のいずれとも組み合わせることができる。
【実施例４】
【０１７６】
実施例１、２では、ユーザがプリンタアイコン名を変更した場合、制御プログラムをインストールしようとする機種に対応するプリンタアイコン７０がインストール時に存在するか否かをインストール判断部１９が判断することが困難になる。プリンタアイコン名が変わっても、プリンタアイコン収集部１７が収集した実施例１の表２、実施例２の表４のプリンタアイコン名は変わらないためである。
【０１７７】
そこで、本実施例では、プリンタアイコン名が変更されたことを制御部１３がプリンタアイコン保持部１８又はプリンタアイコン使用記録部２５のプリンタアイコン名に反映させる情報処理装置１０について説明する。
【０１７８】
＜プリンタアイコン名の変更＞
図２０は、制御部１３がプリンタアイコン名の変更を検出する手順を示すフローチャート図の一例である。図２０の処理はインストーラ６０の起動中、実行される。
【０１７９】
制御部１３は、情報処理装置１０にインストールされているプリンタアイコン名をEnumPrinters()ですべて取得する（Ｓ１０）。
【０１８０】
次に、ステップＳ１０のプリンタアイコン名を使用してOpenPrinter()を全プリンタ―アイコン分呼び出す（Ｓ２０）。OpenPrinter()でプリンタアイコンのハンドルを取得できる。
【０１８１】
次に、制御部１３は、ハンドルを利用してFindFirstPrinterChangeNotification()を呼び出す（Ｓ３０）。その際、第２引数にPRINTER_CHANGE_ALLを設定する。
【０１８２】
次に、WaitForSingleObject(指定されたオブジェクトがシグナル状態になったら制御を返すWindows API)を利用してFindNextPrinterChangeNotification()を呼び出し、第４引数で返ってくる構造体のPRINTER_NOTIFY_INFO_DATAに含まれているPRINTER_NOTIFY_FIELD_PRINTER_NAMEを辿って、プリンタアイコン名を取得する（Ｓ４０）。
【０１８３】
次に、プリンタアイコン保持部１８又はプリンタアイコン使用記録部２５のプリンタアイコン名と比較して、変更があった場合、ステップＳ４０でシグナル状態になったプリンタアイコン名で更新する（Ｓ５０）。
【０１８４】
こうすることで、ユーザがプリンタアイコン名を変更しても、表２，表４のプリンタアイコン名を更新できるので、新しい制御プログラムをインストールするか否かを適切に判断できる。
【０１８５】
＜プリンタアイコンの増減＞
制御プログラムが新たにインストールされればプリンタアイコン７０が増えるし、また、ユーザがプリンタアイコン７０を削除すれば情報処理装置１０が保持するプリンタアイコン７０が減る。この増減も表２，表４に反映させなければ、制御プログラムをインストールしようとする機種に対応するプリンタアイコン７０がインストール時に存在するか否かをインストール判断部１９が取得することが困難になる。
【０１８６】
そこで、制御部１３は以下のようにプリンタアイコン７０の増減を表２，表４に反映させる。
【０１８７】
図２１は、常駐ソフトが常時、印刷ジョブを監視している際にプリンタアイコン７０の増減を検出する手順を示すフローチャート図の一例である。図２１の処理はインストーラ６０の起動中、実行される。
【０１８８】
まず、制御部１３はEnumPrinters()でプリンタアイコン名を取得する（Ｓ１０）。
【０１８９】
次に、表２又は表４のプリンタアイコン名とEnumPrinters()で取得したプリンタアイコン名を比較して、増えているもの又は減っているものが無いか確認する（Ｓ２０）。
【０１９０】
追加されているプリンタアイコン７０に関する情報がある場合（Ｓ３０のＹｅｓ）、制御部１３はPRINTER_INFO_2からプリンタアイコン名、ドライバ名、及びポート名を取得して、表２又は表４を更新する（Ｓ４０）。例えば、制御部１３は表２又は表４から該当するプリンタアイコン名のレコードを削除する。
【０１９１】
こうすることで、プリンタアイコン７０が増減しても、表２，表４のプリンタアイコンに関する情報を更新できるので、インストール判断部１９は新しい制御プログラムをインストールするか否かを適切に判断できる。
【０１９２】
なお、本実施例は実施例１〜３のいずれとも組み合わせて適用することができる。
【０１９３】
＜その他の適用例＞
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【０１９４】
例えば、本実施形態ではＵＳＢケーブルで電子機器が接続された場合に生じるプラグアンドプレイを説明したが、ネットワークを介して電子機器が接続された場合に生じるプラグアンドプレイに対しても好適に適用できる。また、制御プログラムの自動的なインストールの仕組みがプラグアンドプレイと呼ばれていなくてよい。例えば、ユニバーサルプラグアンドプレイに類似の仕組みとしてＪＩＮＩがある。
【０１９５】
また、図６，１１、１４などの構成例は、情報処理装置１０及びプリンタ３０による処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本発明が制限されることはない。また、情報処理装置１０及びプリンタ３０の処理は、処理内容に応じて更に多くの処理単位に分割することもできる。また、１つの処理単位が更に多くの処理を含むように分割することもできる。
【０１９６】
なお、プリンタアイコン収集部１７は情報収集手段の一例であり、機器検知部１１は機器情報取得手段の一例であり、インストール判断部１９は判断手段の一例であり、インストール部１４はインストール手段であり、表示部２６は表示手段の一例であり、制御部１３は更新手段の一例である。
【符号の説明】
【０１９７】
１０        情報処理装置
１１        機器検知部
１４        インストール部
１７        プリンタアイコン収集部
２３        制御プログラム
３０        プリンタ
５０        サーバ
６０        インストーラ
７０        プリンタアイコン
１００      情報処理システム
【先行技術文献】
【特許文献】
【０１９８】
【特許文献１】特開２００３−０８４９８４号公報
【図１】
2018128790.tif 000009
【図２】
2018128790.tif 000010
【図３】
2018128790.tif 000011
【図４】
2018128790.tif 000012
【図５】
2018128790.tif 000013
【図６】
2018128790.tif 000014
【図７】
2018128790.tif 000015
【図８】
2018128790.tif 000016
【図９】
2018128790.tif 000017
【図１０】
2018128790.tif 000018
【図１１】
2018128790.tif 000019
【図１２】
2018128790.tif 000020
【図１３】
2018128790.tif 000021
【図１４】
2018128790.tif 000022
【図１５】
2018128790.tif 000023
【図１６】
2018128790.tif 000024
【図１７】
2018128790.tif 000025
【図１８】
2018128790.tif 000026
【図１９】
2018128790.tif 000027
【図２０】
2018128790.tif 000028
【図２１】
2018128790.tif 000029