以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
[第1の実施形態]
図1は、第1の実施形態における統合インストーラを実現するためのハードウェア構成の一例を示す図である。ここでは、パーソナルコンピュータなどの一般的なコンピュータシステム(情報処理装置)を例に挙げて説明するが、専用のハードウェアで構成されても良い。
101はシステム全体を制御する制御部(CPU)である。102は各種データを入力するキーボードである。104は106のRAMに貯えられている画像データを表示するカラー表示器である。尚、キーボード102及び表示器104は、ユーザインタフェースとして機能する。また、キーボード102には、表示器104上に表示されたボタンなどを指示するマウスが含まれても良い。
105はシステム全体を制御する制御手順とその他の必要な情報を予め記憶するROMである。106はCPU101がプログラムを実行する際に、使用されるワークエリアや各種テーブルなどで構成されるRAMである。
107は各種データの読み書きやプログラムが格納されているハードディスクドライブである。108はシステムバスであり、各種データを転送するために用いられる。103はCDROMドライブである。
ハードディスクドライブ107やCDROMドライブ103は総称して外部記憶装置と呼ばれ、アプリケーションプログラムやインストーラ、プリンタドライバなどが格納されており、RAM106にロードされてCPU101により制御される。
図2は、第1の実施形態におけるコンピュータシステムのソフトウェア構成の一例を示す図である。201はコンピュータシステムであり、このシステム上で様々なプログラムが動いている。203はこのコンピュータシステム201の中心となるオペレーティングシステムである。204はキーボードドライバであり、ユーザがキーボード102を操作すると、その操作の結果を受け取り、オペレーティングシステム203へ伝える。205はモニタドライバであり、オペレーティングシステム203がこのモニタドライバ205に命令を行なうことで、表示器104にユーザへ提示したい情報を表示する。
202は統合インストーラであり、自身の中に内包する複数の単体インストーラを実行することにより、オペレーティングシステム203へのアプリケーションのインストールを行なう。206、208、210は単体インストーラであり、それぞれ別々のアプリケーション207、209、211を内包している。単体インストーラ206、208、210は、統合インストーラ202から呼び出されると、内包するアプリケーション207、209、211をオペレーティングシステム203へインストールする。
従って、アプリケーション207、209、211がオペレーティングシステム203にインストールされることにより、ユーザは様々な機能を使うことができる。
図3は、第1の実施形態におけるアプリケーション情報テーブルの構成の一例を示す図である。300は統合インストーラ202によって所持され、単体インストーラ206、208、210の処理を実行する際に必要な情報が記載されたテーブルである。その情報には、以下のようなものがある。
各アプリケーション(301)の単体インストーラがどのようなモードを持っているか(302)。また、サイレントインストールモードで実行されてインストールを行なっている最中にインストールに失敗した場合、エラーメッセージを表示するか否か(303)。更に、使用許諾契約文書の種類(304)。
以上の構成において、統合インストーラ202がそれぞれの単体インストーラ206、208、210にアプリケーション207、209、211のインストールを行なわせる処理の基本的な流れを、図4を用いて説明する。
図4は、第1の実施形態における統合インストーラの処理手順を示すフローチャートである。統合インストーラ202が開始されると、S401で、使用許諾契約文書一括表示処理を行なう。この使用許諾契約文書一括表示処理の詳細については後述する。そして、使用許諾契約文書一括表示処理の結果、インストールするアプリケーションが決定すると、S402へ処理を進め、サイレントインストールモードで単体インストーラ実行処理を行なう。この単体インストーラ実行処理の詳細については後述する。
次に、S403で、単体インストーラ実行処理の処理結果である戻り値が“1”か否かを判定する。ここで、戻り値が“1”の場合は、アプリケーションのインストールに成功したことを意味する。判定した結果、戻り値が“1”の場合は、S409へ処理を進めるが、戻り値が“1”でない場合は、S404へ処理を進める。
このS404では、図3に示すアプリケーション情報テーブル300から、S402でインストールを行なったアプリケーションの情報302〜304を読み込む。
次に、S405で、この単体インストーラがサイレントインストールモードでもエラーメッセージを自分で表示するタイプか否かを判定する。ここで、アプリケーションの情報303がYesの場合は、エラーメッセージを自分で表示するタイプと判定し(S405でYes)、S409へ処理を進める。
一方、アプリケーションの情報303がNoの場合は、サイレントインストールモードではエラーメッセージを表示しないタイプと判定し(S405でNo)、S406へ処理を進める。このS406では、使用許諾契約文書非表示モードを持つか否かを判定する。ここで、アプリケーションの情報302がYesの場合は、使用許諾契約文書非表示モードを持つと判定し(S406でYes)、S407へ処理を進める。このS407では、使用許諾契約文書非表示モードでの単体インストール実行処理を行ない、S409へ処理を進める。
一方、アプリケーションの情報302がNoの場合は、使用許諾契約文書非表示モードを持たないと判定し(S406でNo)、S408へ処理を進める。このS408では、通常モードでの単体インストール実行処理を行ない、S409へ処理を進める。このように、S408で、インストールに失敗した単体インストーラに通常モードでインストールを再実行させることにより、エラーメッセージを表示させることができる。
次に、S409では、全てのインストールを終了したか否かを判定する。ここで、まだ実行していない単体インストーラがある場合には(S409でNo)、上述したS402に処理を戻し、上述の処理を繰り返す。しかし、全てのインストールを終了した場合には(S409でYes)、この統合インストーラ処理を終了する。
図5は、図4に示す使用許諾契約文書一括表示処理(S401)を示すフローチャートである。使用許諾契約文書一括処理が始まると、S501で、EULAリストとインストールアプリリストの中身を空にする。ここで、EULAリストは、どのアプリの使用許諾契約文書を表示するのかを記憶するためのリストである。インストールアプリリストは、使用許諾契約文書に対してユーザの同意又は非同意に関する入力を得た結果、実際にインストールするアプリケーションを記憶するためのリストである。
次に、S502で、統合インストーラに同梱されているアプリケーション用の使用許諾契約文書と同じ文書が、EULAリストに登録済みか否かを調べる。ここで、まだ登録されていない場合は(S502でNo)、S503へ処理を進め、その使用許諾契約文書をEULAリストに登録する。尚、あるアプリの使用許諾契約文書が他のアプリと同じ使用許諾文書か否かは、図3に示すアプリケーション情報テーブル300の情報304を参照する。
一方、既に登録されている場合は(S502でYes)、S503の処理を行なわずにS504へ処理を進める。このS504では、これまでの処理で作成されたEULAリストに登録されている使用許諾契約文書の一つ一つについて以下の処理を行なう。
まず、S505で、ユーザに対して使用許諾契約文書の表示を行なう。図6は、第1の実施形態における使用許諾契約文書の表示例を示す図である。601は現在の表示がどのアプリケーションの使用許諾契約文書かを示している。この例では、アプリケーションAの使用許諾契約文書が表示されている。602は現在表示されているアプリケーションの名称である。603は現在表示されているアプリケーションの使用許諾契約文書の内容である。604、605はボタンであり、ボタン604をユーザが押下すると、現在表示中の使用許諾契約文書に同意したことを示す。また、ボタン605をユーザが押下すると、現在表示中の使用許諾契約文書に同意しなかったことを示す。
図5に戻り、S506で、ボタン604又は605が押下されるのを待ち、押下されると、S507へ処理を進め、ユーザの同意を得られたか否かを判断する。ここで、同意を得られた場合は(S507でYes)、S508へ処理を進め、そのアプリケーションをインストールアプリリストに登録し、S509へ処理を進める。一方、ユーザが使用許諾契約文書に同意しなかった場合は(S507でNo)、S508をスキップしてS509へ処理を進める。
S509では、全ての使用許諾契約文書に対して処理が終了したか否かを判定し、終了していなければ、S505に処理を戻し、上述の処理を繰り返す。一方、全ての使用許諾契約文書に対する処理が終了すると、この使用許諾契約文書一括表示処理を終了する。
以上の処理により、同じ使用許諾契約文書が複数回出現されることなく、1種類の使用許諾契約文書を1回のみ表示させることができる。また、同意を得たアプリケーションのみをインストールアプリリストに登録することで、実際にインストールを行なうアプリケーションを決定することができる。
図7は、第1の実施形態における単体インストーラ実行処理を示すフローチャートである。まず、S701で、単体インストーラ実行処理を呼び出したプロセスから伝えられた引数に基づいてサイレントインストールモードでインストールを実行すべきか否かを判断する。ここで、引数がサイレントインストールモードでの実行を示す場合には(S701でYes)、S703へ処理を進める。S703では、サイレントインストールモードで単体インストーラを実行させ、S706へ処理を進める。
一方、引数がサイレントインストールモードでの実行を示していない場合には(S701でNo)、S702へ処理を進める。S702では、引数が使用許諾契約文書非表示モードでの実行を示しているか否かを判断し、使用許諾契約文書非表示モードでの実行を示す場合には(S702でYes)、S704へ処理を進める。S704では、使用許諾契約文書非表示モードで単体インストーラを実行させ、S706へ処理を進める。
また、引数が使用許諾契約文書非表示モードでの実行を示していない場合には(S702でNo)、S705へ処理を進める。S705では、通常モードで単体インストーラを実行させ、S706へ処理を進める。
次に、S706では、実行すべきモードでの単体インストーラのプロセスが終了するのを待つ。その後、プロセスが終了すると(S706でYes)、S707へ処理を進め、単体インストーラより戻り値を受け取り、単体インストーラの実行処理を終了する。
図8は、第1の実施形態における単体インストーラ処理を示すフローチャートである。単体インストーラの処理が開始されると、S801で、通常のインストールモードで実行するか否かを判定する。判定の結果、通常のインストールモードで実行する場合には(S801でYes)、S802へ処理を進め、使用許諾契約文書の表示を行なう。
図9は、第1の実施形態における使用許諾契約文書の表示例を示す図である。尚、使用許諾契約文書の表示は各単体インストーラの仕様により異なっても良い。
図9において、901は単体インストーラの名称である。902は仕様許諾契約文書の表示領域である。903、904はボタンであり、ボタン903をユーザが押下すると、現在表示中の使用許諾契約文書に同意したことを示す。また、ボタン904をユーザが押下すると、その使用許諾契約文書に同意しなかったことを示す。
図8に戻り、S803で、ボタン903又は904が押下されるのを待ち、押下されると、S804へ処理を進め、ユーザの同意を得られたか否かを判断する。ここで、同意を得られた場合は(S804でYes)、S805へ処理を進めるが、ユーザの同意が得られなければ(S804でNo)、S813へ処理を進め、戻り値に“1”を設定して呼び出し元に返却する。ここで、戻り値が“1”とは、問題なくインストールが終了したことを意味する。また、実際には、インストールが行なわれていないにも関わらず、戻り値を“1”で返却するのは、このS813へ処理を進めた場合、ユーザが明確な意思を持ってインストールを中断したため、問題が無いという判断からである。
一方、サイレントインストールモード、使用許諾契約文書非表示モードで実行する場合には(S801でNo)、S805へ処理を進め、アプリケーションのインストール処理を開始する。S806で、アプリケーションのインストール処理を実行中に、異常が発生したか否かを判断する。ここで、異常が発生した場合には(S806でNo)、S807へ処理を進め、サイレントインストールモードで実行中か否かを判断する。判断の結果、サイレントインストールモードの場合は(S807でYes)、S809へ処理を進めるが、サイレントインストールモードでない場合には(S807でNo)、S808へ処理を進め、エラーメッセージの表示を行う。そして、S809へ処理を進める。
次に、S809で、全てのインストール処理が終了したか否かを判定し、終了していなければ、S806に戻り、上述した処理を繰り返す。その後、全てのインストール処理が終了すると(S809でYes)、S810へ処理を進め、インストールの途中で何かの異常が発生したか否かを調べる。その結果、異常が発生してなければ、S811へ処理を進め、戻り値に“1”を設定して返却する。また、もし異常が発生していれば、S812へ処理を進め、戻り値に“0”設定して返却する。
一般的に、アプリケーションをインストールする場合、使用許諾契約文書を必ずユーザに対して表示した上で、ユーザの同意を貰わない限りインストールが行なえない。
また、サイレントインストールモードで実行する場合は、使用許諾契約文書も表示されなくなってしまい、インストールを行なうことができない。また、サイレントインストールが行なえたとしても、エラーメッセージも表示されなくなってしまい、万が一、問題が生じ、インストールに失敗した場合には、ユーザにとってはその問題が認識できない。
第1の実施形態では、実際にインストールが行なわれる前に、複数のアプリケーションの使用許諾契約文書を一括で予め表示し、使用許諾契約文書のへの同意のための入力作業を使用許諾契約文書一括表示処理の一箇所に集中させる。これにより、各アプリケーションの単体インストーラの実行処理の段階で、逐一入力を行う必要性が無くなり、単体インストーラをサイレントインストールモードで呼び出すことができる。
また、サイレントインストールモードでインストール中に何らかの問題が発生し、インストールに失敗した場合、通常モードで再実行させることにより、同じ問題を発生させる。これにより、サイレントインストールモードでは表示されなかったエラーメッセージを改めて表示させることができる。
尚、この場合、通常モードで単体インストーラを呼び出すと、図9の単体インストーラの使用許諾契約画面が表示されてしまう。これは図6で一括表示した使用許諾契約画面と同じ内容を示しており、ユーザにとっては同じ文面に対して二度同意しなくてはならなくなってしまう。
そこで、使用許諾契約文書非表示モードがある場合、使用許諾契約文書非表示モードを使うことにより、表示した使用許諾契約文書を極力二度表示しないようにする。
第1の実施形態によれば、インストールに失敗しても、サイレントインストールモードではエラーメッセージを表示することができない単体インストーラを、通常モードで再度呼び出しを行なう。これにより、同じ理由でインストールに失敗させ、エラーメッセージを表示させることができる。
[第2の実施形態]
次に、図面を参照しながら本発明に係る第2の実施形態を詳細に説明する。尚、第2の実施形態のハードウェア構成とソフトウェア構成は、第1の実施形態のそれと同じであるため、説明は省略する。
図10は、第2の実施形態における統合インストーラの処理手順を示すフローチャートである。統合インストーラ202が開始されると、S1001で、使用許諾契約文書一括表示処理を行なう。この使用許諾契約文書一括表示処理は、第1の実施形態と同じであるため、説明は省略する。そして、使用許諾契約文書一括表示処理の結果、インストールするアプリケーションが決定すると、S1002へ処理を進め、サイレントインストールモードで単体インストーラの実行処理を行なう。この単体インストーラ実行処理の詳細については後述する。
次に、S1003で、単体インストーラのインストール処理が失敗したか否かを判定する。判定した結果、インストールに成功した場合は、S1008へ処理を進めるが、インストールに失敗していることが分かった場合は、S1004へ処理を進める。
このS1004では、単体インストーラ実行処理中に、エラーメッセージが表示されたか否かを調べ、エラーメッセージを表示していた場合には、S1008へ処理を進める。一方、エラーメッセージを表示していなかった場合には、S1005へ処理を進め、この単体インストーラがEULA非表示モードを持っているか否かを調べる。ここで、EULA非表示モードがある場合には、S1006へ処理を進め、EULA非表示モードでのインストールを行なう。しかし、EULA非表示モードがない場合には、S1007へ処理を進め、通常モードでのインストールを行なう。
次に、S1008では、全てのインストールを終了したか否かを判定する。ここで、まだ実行していない単体インストーラがある場合には、S1002に処理を戻し、上述した処理を繰り返す。しかし、全てのアプリケーションの単体インストーラを実行した場合には、この統合インストーラ処理を終了する。
図11は、第2の実施形態における単体インストーラ実行処理を示すフローチャートである。まず、S1101で、単体インストーラ実行処理を呼び出したプロセスから伝えられた引数に基づいてサイレントインストールモードでインストールを実行すべきか否かを判断する。ここで、引数がサイレントインストールモードでの実行を示す場合には(S1101でYes)、S1103へ処理を進める。S1103では、サイレントインストールモードで単体インストーラを実行させ、S1108へ処理を進める。
一方、引数がサイレントインストールモードでの実行を示していない場合には(S1101でNo)、S1102へ処理を進める。S1102では、引数が使用許諾契約文書非表示モードでの実行を示しているか否かを判断し、使用許諾契約文書非表示モードでの実行を示す場合には(S1102でYes)、S1104へ処理を進める。S1104では、使用許諾契約文書非表示モードで単体インストーラを実行させ、S1106へ処理を進める。
また、引数が使用許諾契約文書非表示モードでの実行を示していない場合には(S1102でNo)、S1105へ処理を進める。S1105では、通常モードで単体インストーラを実行させ、S1106へ処理を進める。
次に、S1106では、実行すべきモードでの単体インストーラのプロセスが終了するのを待つ。その後、プロセスが終了すると(S1106でYes)、S1107へ処理を進め、単体インストーラより戻り値を受け取り、単体インストーラの実行処理を終了する。
一方、サイレントインストールモードのS1108では、単体インストーラのプロセスが所持するウィンドウを列挙する。そして、S1109で、列挙したウィンドウに基づき、新しいウィンドウが作られたか否かを判定する。ここで、新しいウィンドウが作られていなければ(S1109でNo)、S1112へ処理を進める。
一方、新しいウィンドウが作られた場合には(S1109でYes)、S1110へ処理を進め、そのウィンドウがエラーメッセージ用のウィンドウか否かを判断する。判断の結果、エラーメッセージ用のウィンドウでなければ(S1110でNo)、S1112へ処理を進める。
また、エラーメッセージ用のウィンドウが新しく作られたならば(S1110でYes)、エラーメッセージ用のウィンドウが表示されたことを記憶し、S1112へ処理を進める。
次に、S1112では、サイレンとインストールモードでの単体インストーラのプロセスが終了したか否かを判断し、終了していなければ、S1108に処理を戻し、上述した処理を繰り返す。その後、プロセスが終了すると(S1112でYes)、S1113へ処理を進め、単体インストーラから戻り値を取得し、単体インストーラの実行処理を終了する。
尚、単体インストーラの中には、サイレントインストールモードを実装してはいるが、一部のエラーメッセージを表示しないで、残りのエラーメッセージだけを表示するものが存在する。
第2の実施形態では、単体インストーラ実行処理がサイレントインストールモードで実行中にエラーメッセージを表示したか否かを見張ることで、インストールに失敗したにも関わらず、エラーメッセージを表示していない問題を解決する。
第2の実施形態によれば、サイレントインストールに失敗した時に、エラーメッセージを表示していなければ、使用許諾契約非表示モード又は通常モードを実行することにより、改めて表示させることができる。
[第3の実施形態]
次に、図面を参照しながら本発明に係る第3の実施形態を詳細に説明する。尚、第3の実施形態のハードウェア構成とソフトウェア構成は、第1の実施形態のそれと同じであるため、説明は省略する。
第1又は第2の実施形態では、インストールに失敗した時にすぐにインストールの再実行を行なっていた。しかし、再実行をその場で行なう場合、例えば7個のアプリをインストールしなければならないとき、1番目、3番目、5番目、7番目のアプリのインストールに失敗すると、途切れ途切れに通常のインストールが実行される。その結果、ユーザにとってわずらわしくなってしまう可能性がある。
そこで、インストールに失敗したその場でインストールの再実行を行なうのではなく、インストールに失敗したアプリを覚えておき、7番目まで全てのサイレントインストールを実行する。その後、インストールに失敗したアプリケーションのみ、通常インストールモードで呼び出すことで、ユーザが入力を行うべき場所を一箇所にまとめることが考えられる。
また、単体インストーラによっては、通常インストールモードしか持たないものも存在する。その場合、通常インストールモードでインストールをせざるを得ないが、この場合も、他のサイレントインストールモード対応の単体インストールの間にそれが実行されることで、途中途中でユーザの入力の手間が発生し、ユーザに煩わしさを与えてしまう。
この場合も、サイレントインストールを行なう単体インストールの実行が全て終了した後に、そのインストールが行なわれることが望ましい。第3の実施形態は、これらの問題を解決するものである。
図12は、各アプリケーションがサイレントインストールモードを持つか否かを示す図である。1200はアプリケーション情報テーブルである。また、サイレントインストールモードを持っていない場合、通常インストールモードで実行されるため、その単体インストーラは自分で使用許諾契約文書を表示する。そのため、統合インストーラ側では使用許諾契約文書を表示する必要がなく、アプリケーション情報テーブル1200上では使用許諾契約文書はなしになる。
図13は、第3の実施形態における統合インストーラの処理手順を示すフローチャートである。統合インストーラの処理が開始されると、S1301で、使用許諾契約文書一括表示処理を行なう。この使用許諾契約文書一括表示処理は、第1の実施形態と同じであるため、説明は省略する。そして、使用許諾契約文書一括表示処理の結果、インストールするアプリケーションが決定すると、S1302で、各アプリケーションがサイレントインストールモードを持っているか否かをアプリケーション情報テーブル1200を参照することで調べる。ここで、サイレントインストールモードを持っていない場合には(S1302でNo)、S1305へ処理を進める。S1305では、インストールを行なわず、後で通常モードでのインストールを行なうために、アプリケーションを再実行リストへ追加し、S1306へ処理を進める。
一方、サイレントインストールモードを持っている場合には(S1302でYes)、S1303へ処理を進め、サイレントインストールモードで単体インストーラの実行処理を行なう。この単体インストーラの実行処理は、第2の実施形態と同じであるため、説明は省略する。
次に、S1304で、単体インストールのインストール処理が失敗したか否かを判定する。判定した結果、インストールに成功した場合は、S1306へ処理を進めるが、インストールに失敗していれば、S1305へ処理を進め、アプリケーションを再実行リストへ追加し、S1306へ処理を進める。
このS1306では、再実行リスト以外のアプリケーションのインストールを全て終了したか否かを判定し、終了していなければ、S1302に処理を戻し、上述の処理を繰り返す。その後、再実行リスト以外のアプリケーションのインストールが全て終了すると、S1307へ処理を進め、再実行リストに追加されたアプリケーションを通常インストールモードで実行する。そして、S1308で、再実行リスト全てのインストールの終了を判定し、全て終了すると、この処理を終了する。
このように、ユーザが入力を行なわなくてはならない通常インストールモードの必要性が発生した場合、そのインストールを全てのサイレントインストール終了後に持って行くことで、ユーザの入力手間を軽減し、利便性を向上させることができる。
[第4の実施形態]
次に、図面を参照しながら本発明に係る第4の実施形態を詳細に説明する。尚、第4の実施形態のハードウェア構成とソフトウェア構成は、第1の実施形態のそれと同じであるため、説明は省略する。
また、第4の実施形態では、オペレーティングシステムがWindows(登録商標)の場合を説明する。以下の説明で、スタートメニューとは、Windows(登録商標)におけるアプリケーションやプログラムが一覧表示される場所のことを指す。また、スタートメニュー名とはスタートメニューに表示される、そのアプリケーションの名前のことを指す。また、レジストリとは、Windows(登録商標)においてオペレーティングシステムに関わる情報を保存するための場所のことを示す。このレジストリに何らかの情報を保存することをレジストリに登録すると表現する。
また、Windows(登録商標)では、一度インストールされたアプリケーションをコンピュータ上から取り除くためのアンインストーラがどこに保存されているのかをレジストリ上に登録する。これをアンインストーラの登録と表現する。また、デスクトップとは、Windows(登録商標)におけるメイン画面のことを示す。あるアプリケーションのインストールが行なわれると、そのプログラムを実行するためのショートカットがデスクトップ上に作成されることが多い。ショートカットとはハードディスク上に保存されているアプリケーションの場所を示すものであり、Windows(登録商標)ではショートカットを操作することで間接的にアプリケーションを実行することができる。
図14は、アプリケーションのインストールに成功した場合、どの程度ハードディスク使用容量が増え、またシステム上にどのようなデータが作成されるかを定義したアプリケーション情報テーブルを示す図である。このアプリケーション情報テーブル1400は、アプリケーション名で識別されるアプリケーション毎にインストールするOS、基本増加使用量、インストール済み証明項目で構成される。ここで、インストール済み証明項目は、その対象となるOS上に、既にそのアプリケーションがインストールされているか否かを判断する基準となる情報である。この例では、インストールパス、スタートメニュー名、デスクトップショートカット名、アプリ登録を行なうレジストリ、アンインストーラを登録するレジストリに相当する。
また、アプリケーション情報テーブル1400には、そのアプリがインストールを行なうことができるオペレーティングシステムのバージョンも記載されている。第4の実施形態では、このアプリケーション情報テーブル1400を使うことにより、インストールに成功したか否かを調べる。
図15は、第4の実施形態における統合インストーラの処理手順を示すフローチャートである。統合インストーラが開始した後、S1501で、アプリケーション情報テーブル1400を読み込む。S1502で、現在統合インストーラが実行されているOSのバージョンを取得し、S1503で現在のOSのバージョンが、あるアプリケーションの対応OS内にあるか否かを調べる。その結果、対応OS内であれば(S1503でYes)、S1504へ処理を進める。このS1504では、そのアプリケーションをインストールリストへ登録し、S1505へ処理を進める。
一方、対応OS内でなければ(S1503でNo)、インストールリストへは追加せず、S1505へ処理を進める。これにより、現在のOSに対応していないアプリケーションの単体インストーラは実行されない。
S1505では、全てのアプリケーションに対してOSのバージョンを調べたか否かを判断し、終了してなければS1503に処理を戻し、上述の処理を繰り返す。一方、終了したならば、S1506へ処理を進める。
次に、S1506で、使用許諾契約文書一括表示処理を行なう。この使用許諾契約文書一括表示処理は、第1の実施形態と同じであるため、説明は省略する。使用許諾契約文書一括表示処理の結果、インストールするアプリケーションが決まると、S1507へ処理を進め、コンピュータ状態取得処理を行ない、取得したコンピュータ状態をXとして保存する。この処理の詳細については後述する。
次に、S1508では、単体インストーラのサイレントインストールによる実行処理を行なう。この処理は第1の実施形態と同じであるため、説明は省略する。そして、S1509では、再びコンピュータ状態の取得処理を行ない、その状態を状態Yとして保存し、S1510へ処理を進める。
S1510では、インストールの成功不成功を判断する判断処理を行なう。この処理の詳細については後述する。判断した結果、インストールに成功していれば(S1511でYes)、S1516へ処理を進む。
一方、インストールに失敗していた場合には(S1512でNo)、S1512へ処理を進める。S1512では、コンピュータ情報を復元する復元処理を実行する。この処理は、S1507で取得した情報に基づき、コンピュータの状態を状態Xに復元する処理である。そして、S1513で、その単体インストーラが使用許諾契約文書非表示モードを持っているか否かを調べる。その結果、使用許諾契約文書非表示モードがあれば(S1513でYes)、S1514へ処理を進める。S1514では、使用許諾契約文書非表示モードでのインストールを行ない、S1516へ処理を進める。
しかし、使用許諾契約文書非表示モードがなければ(S1513でNo)、S1515へ処理を進める。S1515では、通常モードでのインストールを行ない、S1516へ処理を進める。
そして、S1516で、全てのアプリケーションの単体インストーラを実行したか否かを判定する。判定の結果、全てのインストール処理が終了していなければ(S1516でNo)、S1507に処理を戻し、上述した処理を繰り返す。また、全てのインストール処理が終了すると(S1516でYes)、この統合インストーラの処理を終了する。
図16は、第4の実施形態におけるコンピュータ状態取得処理を示すフローチャートである。コンピュータ状態取得処理を開始すると、S1601で、その時点でのハードディスクの空き容量を調べて記憶する。次に、S1602で、その時点でのスタートメニューの状態を調べて記憶する。次に、S1603で、その時点でのレジストリの状態を調べて記憶する。そして、S1604で、その時点でのプログラム格納場所の状態を調べて記憶し、コンピュータ状態取得処理を終了する。
図17は、第4の実施形態におけるコンピュータ状態復元処理を示すフローチャートである。コンピュータ状態復元処理を開始すると、S1701で、その時点でのスタートメニューの状態を記憶された状態に復元する。次に、S1702で、その時点でのレジストリの状態を記憶された状態に復元する。そして、S1703で、その時点でのプログラム格納場所の状態を記憶された状態に復元し、コンピュータ状態復元処理を終了する。
図18は、第4の実施形態におけるインストール成否判断処理を示すフローチャートである。S1801では、上述した状態Xと状態Yを読み込む。S1802では、アプリケーション情報テーブル1400の情報を読み込み、S1803で、インストール済み証明項目が存在するか否かを調べる。その全てが存在した場合には、単体インストーラの実行に成功してもしなくてもアプリケーションが使える状態になっていると判断できるため、S1808へ処理を進める。このS1808では、戻り値をインストール成功としてインストール成否判断処理を終了する。
一方、S1803で、インストール済み証明項目の何れかが足りない場合には、S1804へ処理を進める。S1804では、状態Yの時に、アプリ登録を行なうレジストリが存在するか否かを調べ、存在しない場合にはS1810へ処理を進める。また、存在する場合はS1805へ処理を進める。S1805では、状態Yの時に、アンインストーラの登録を行なうレジストリが存在するか否かを調べ、存在しない場合にはS1810へ処理を進める。また、存在する場合はS1806へ処理を進める。
S1806では、状態Yの時に、アプリケーション情報テーブル1400で定義されたインストールパスにファイルが存在するか否かを調べ、存在しない場合にはS1810へ処理を進める。また、存在する場合はS1808へ処理を進める。S1807では、インストールの前後でハードディスク使用量が定義された使用量増加値より増えていた場合、S1811へ処理を進める。また、実際に増加された値が定義された使用量増加値よりも増えていなかった場合にはS1810へ処理を進める。S1811では、状態Yの時に、定義されたスタートメニューが存在するか否かを調べ、存在しない場合にはS1810へ処理を進める。また、存在する場合にはS1812へ処理を進める。
S1812では、状態Yの時に、定義されたデスクトップショートカットが存在するか否かを調べ、存在しない場合にはS1810へ処理を進める。また、存在する場合にはS1809へ処理を進める。S1809では、戻り値をインストール成功としてインストール成否判断処理を終了する。そして、S1810では、戻り値をインストール失敗としてインストール成否判断処理を終了する。
単体インストーラの中には、呼び出し元に対して、インストールに成功したか失敗したかを通達する方法を持たないものも存在する。
そこで、単体インストーラの実行が成功した場合にはどのようにコンピュータの状態が変わるかを定義したテーブルを備え、単体インストーラの実行前の状態と、単体インストーラ実行後の状態を保存し、その比較を行なう。これにより、インストールに成功したか失敗したかを、単体インストーラがその通達の方法を持つための改造を行なうことなく、判断することができる。
尚、本発明の特徴は、サイレントインストールに失敗した場合に、UIのある形で再度単体インストーラを実行し、同じエラーを発生させ、エラーメッセージを表示させることである。しかし、最初のサイレントインストールの段階でコンピュータの状態が変わってしまい、2度目の単体インストーラ実行時に、同じエラーが発生しない可能性もある。
第4の実施形態によれば、サイレントインストールに失敗した後、もう一度単体インストーラを呼び出す前に、コンピュータの状態をサイレントインストール実行より前の状態に戻すことで、同じエラーが必ず発生する。
尚、本発明は複数の機器(例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。