(57)【要約】  複数のソフトウェアコンポーネント識別子が、装置上で実行するオペレーティングシステムのカタログに保持される。これらのソフトウェアコンポーネント識別子の各々は装置にインストールされた複数のソフトウェアコンポーネントのうちの１つに対応する。カタログは、複数のソフトウェアコンポーネントのうちの１つに関する要求に応答してアクセスされ、要求は、カタログに含まれる情報に少なくとも部分的に基づいて応答される。さらに、計算装置にインストールされるソフトウェアコンポーネントの２つ以上のバージョンは識別することができる。ソフトウェアコンポーネントの２つ以上のバージョンのうちのどの１つが実行されるべきソフトウェアコンポーネントのアクティブなバージョンであるかが決定される。ソフトウェアコンポーネントに関する情報の要求に応答して、ソフトウェアコンポーネントのアクティブなバージョンに関する情報が返される。
2012530322.tif 000002
【特許請求の範囲】
【請求項１】
計算装置（６００）であって、
プロセッサー（６０２）と、
前記プロセッサーに結合された１つ以上のコンピューター読み取り可能な媒体（６０４）であって、前記プロセッサーによって実行されると、前記プロセッサーに、
オペレーティングシステムのカタログに複数のソフトウェアコンポーネント識別子を保持させ（４０２）、複数のソフトウェアコンポーネントは装置にインストールされ、前記複数のソフトウェアコンポーネント識別子の各々は前記複数のソフトウェアコンポーネントのうちの１つに対応し、
前記複数のソフトウェアコンポーネントのうちの１つに関する要求に応答して、前記カタログにアクセスさせ（４０６）、
前記カタログに含まれる情報に少なくとも部分的に基づいて前記要求に応答させる（４０８）、
前記オペレーティングシステムの複数の命令を格納した１つ以上のコンピューター読み取り可能な媒体（６０４）と
を具備する計算装置（６００）。
【請求項２】
複数のカタログが前記装置上にあり、前記複数のカタログの各々が前記オペレーティングシステムの複数のアカウントのうちの１つに対応し、前記命令はさらに、前記プロセッサーに、前記複数のアカウントのどれがログインされるかに少なくとも部分的に基づいて前記複数のカタログのうちの１つを識別させせる請求項１に記載の計算装置。
【請求項３】
前記要求は、前記複数のソフトウェアコンポーネントのうちの前記１つを実行することが前記カタログ中にある１つ以上の他のソフトウェアコンポーネントに依存するかどうかをチェックする要求である請求項１に記載の計算装置。
【請求項４】
前記カタログは完全な指標及び有効な指標を含み、前記完全な指標は前記装置にインストールされたすべてのコンポーネントを含み、前記有効な指標は前記完全な指標の部分集合を含み、前記有効な指標は、前記装置にインストールされた２つ以上のバージョンを有する前記複数のソフトウェアコンポーネントの各々について、前記ソフトウェアコンポーネントのアクティブなバージョンを含む請求項１に記載の計算装置。
【請求項５】
前記複数のソフトウェアコンポーネント識別子の各々は、
前記ソフトウェアコンポーネントの出版者の識別子と、
前記ソフトウェアコンポーネントについて記述するメタデータを格納する管理票上の前記出版者のデジタル署名と、
前記ソフトウェアコンポーネントの１つ以上のバージョン番号と
を含む請求項１に記載の計算装置。
【請求項６】
前記要求は、前記装置にインストールされた複数のバージョンを有するソフトウェアコンポーネントに関する要求であり、前記要求に応答することは、前記ソフトウェアコンポーネントの前記複数のバージョンのうちの特定の１つに少なくとも部分的に基づいて応答することである請求項１に記載の計算装置。
【請求項７】
前記要求は、所与のパスを有するファイルを含む前記複数のソフトウェアコンポーネントのうちの１つについてのソフトウェアコンポーネント識別子の要求を含む請求項１に記載の計算装置。
【請求項８】
計算装置のオペレーティングシステムにおいて実施される方法であって、
前記計算装置にインストールされるソフトウェアコンポーネントの２つ以上のバージョンを識別するステップ（５０２）と、
前記ソフトウェアコンポーネントの前記２つ以上のバージョンのうちのどの１つが実行されるべき前記ソフトウェアコンポーネントのアクティブなバージョンであるかを決定するステップ（５０４）と、
前記ソフトウェアコンポーネントに関する情報の要求に応答して、前記ソフトウェアコンポーネントの前記アクティブなバージョンに関する情報を返すステップ（５０６）と
を含む方法。
【請求項９】
前記ソフトウェアコンポーネントの前記２つ以上のバージョンは、各々、バージョン番号のみが異なるソフトウェアコンポーネント識別子を有する請求項８に記載の方法。
【請求項１０】
前記ソフトウェアコンポーネントの前記２つ以上のバージョンの各々についての前記ソフトウェアコンポーネント識別子をカタログに保持するステップをさらに含み、各ソフトウェアコンポーネント識別子は、
前記ソフトウェアコンポーネントのバージョンの出版者の識別子と、
前記ソフトウェアコンポーネントのバージョンについて記述するメタデータを格納する管理票上の前記出版者のデジタル署名と、
前記ソフトウェアコンポーネントのバージョンのバージョン番号と
を含む請求項９に記載の方法。
【請求項１１】
複数のソフトウェアコンポーネントの各々について前記識別するステップ及び前記決定するステップを繰り返すステップと、
前記複数のソフトウェアコンポーネントの前記アクティブなバージョンの各々についての識別子を含む有効な指標を生成するステップと、
前記複数のソフトウェアコンポーネントの各々の前記アクティブなバージョンを続いて識別するために前記有効な指標を使用するステップと
をさらに含む請求項８に記載の方法。
【請求項１２】
前記決定するステップは、
特定のソフトウェアコンポーネントの２つ以上のバージョンのうちのどれが前記特定のソフトウェアコンポーネントのアクティブなバージョンであるかを決定するために使用されるべき規則の組を識別するステップであって、前記規則の組は、前記計算装置が結合されるネットワークの管理者によって設定されるポリシールールを含む、ステップと、
前記規則の組に基づいて、前記特定のソフトウェアコンポーネントの前記アクティブなバージョンである前記２つ以上のバージョンのうちの前記１つを選択するステップと
を含む請求項１１に記載の方法。
【請求項１３】
前記計算装置にインストールされた前記ソフトウェアコンポーネントの新たなバージョンに応答して、前記識別するステップ及び前記決定するステップを繰り返すステップをさらに含む請求項８に記載の方法。
【請求項１４】
前記計算装置からアンインストールされた前記ソフトウェアコンポーネントの前記２つ以上のバージョンのうちの１つに応答して、前記識別するステップ及び前記決定するステップを繰り返すステップをさらに含む請求項８に記載の方法。
【請求項１５】
前記計算装置上の複数ユーザーカウントのうちの異なる１つについて前記ソフトウェアコンポーネントの前記アクティブなバージョンを各々が識別する複数のカタログを保持するステップをさらに含み、前記ソフトウェアコンポーネントの前記アクティブなバージョンは異なるカタログ中の異なるバージョンである請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カタログベースの（catalog-based）ソフトウェアコンポーネント管理に関する。
【背景技術】
【０００２】
[0001]コンピューターは、通常、他のアプリケーションがコンピューターにインストールされて実行されることを可能にすることを含む様々な機能を提供するオペレーティングシステムを実行する。異なるアプリケーションは、しばしば、コンピューターにインストールされて異なる方法で実行されて、コンピューター上の多くの位置、フォルダーなどに格納されている様々なファイル及び情報に帰着し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、アプリケーションを新バージョンにアップグレードすることを試みる場合、アプリケーションをアンインストールする場合などに、コンピューター上でのそのような異なるアプリケーションの管理は、多くの困難をもたらし得る。
【課題を解決するための手段】
【０００４】
[0002]この概要は詳細な説明においてさらに以下に述べられる概念の選択を単純化された形式で紹介するために提供される。この概要は、特許請求された主題の重要な特徴又は不可欠な特徴を識別するようには意図されず、特許請求された主題の範囲を限定するために使用されるようにも意図されない。
【０００５】
[0003]１つ以上の態様によれば、複数のソフトウェアコンポーネント識別子は、装置のオペレーティングシステムのカタログ（目録、catalog）に保持される。これらのソフトウェアコンポーネント識別子の各々は、装置にインストールされた複数のソフトウェアコンポーネントのうちの１つに対応する。カタログは、複数のソフトウェアコンポーネントのうちの１つに関する要求に応答してアクセスされ、要求は、カタログに含まれる情報に少なくとも部分的に基づいて応答される。
【０００６】
[0004]１つ以上の態様によれば、計算装置のオペレーティングシステムでは、計算装置にインストールされるソフトウェアコンポーネントの２つ以上のバージョンが識別される。ソフトウェアコンポーネントの２つ以上のバージョンのうちのどの１つが実行されるべきソフトウェアコンポーネントのアクティブなバージョンであるかが決定される。ソフトウェアコンポーネントに関する情報の要求に応答して、ソフトウェアコンポーネントのアクティブなバージョンに関する情報が返される。
【０００７】
[0005]同じ数字は図面の全体にわたって同様の特徴を参照するために使用される。
【図面の簡単な説明】
【０００８】
【図１】[0006]１つ以上の実施例による、カタログベースのソフトウェアコンポーネント管理を実施する例示的な計算装置を示す。
【図２】[0007]１つ以上の実施例による例示的なカタログを示す。
【図３】[0008]１つ以上の実施例による例示的なソフトウェアコンポーネントを示す。
【図４】[0009]１つ以上の実施例による、カタログベースのソフトウェアコンポーネント管理の例示的なプロセスを示すフローチャートである。
【図５】[0010]１つ以上の実施例による、カタログベースのソフトウェアコンポーネント管理の例示的なプロセスを示すフローチャートである。
【図６】[0011]１つ以上の実施例による、カタログベースのソフトウェアコンポーネント管理を実施するように構成することができる例示的な計算装置を示す。
【発明を実施するための形態】
【０００９】
[0012]カタログベースのソフトウェアコンポーネント管理が本明細書において議論される。ソフトウェア製品は１つ以上のソフトウェアコンポーネントから構成される。各々のソフトウェアコンポーネントは、計算装置上でオペレーティングシステムのカタログに保持される同一性（ＩＤ）を有する。カタログは、どのソフトウェアコンポーネントが計算装置にインストールされるかを識別する。カタログは、オペレーティングシステムが、システムにインストールされたソフトウェアコンポーネントを容易に識別することのほか、それらのソフトウェアコンポーネントを管理することを可能にする。
【００１０】
[0013]図１は、１つ以上の実施例による、カタログベースのソフトウェアコンポーネント管理を実施する例示的な計算装置１００を示す。計算装置１００は、ソフトウェアアプリケーションを実行することができる様々な異なる装置であってもよい。例えば、計算装置１００は、デスクトップコンピューター、サーバーコンピューター、ラップトップコンピューター、移動局、娯楽器具、ディスプレイ装置に通信可能に結合されたセットトップ・ボックス、携帯又は他の無線電話、ゲーム機、自動車用コンピューターなどであってもよい。したがって、計算装置１００は、実体的なメモリー及びプロセッサーリソースを備えた十分なリソース装置（例えば、パーソナルコンピューター、ゲーム機）から制限されたメモリー及び／又は処理リソースを備えた低リソースの装置（例えば、従来のセットトップ・ボックス、携帯型のゲーム機）に及んでもよい。
【００１１】
[0014]計算装置１００は、ソフトウェアコンポーネント・アクセス制御モジュール１０４及びカタログ１０６を有するオペレーティングシステム１０２を含む。ソフトウェアアプリケーションとも呼ばれる２つのソフトウェア製品１１０及び１１２が、計算装置１００に含まれているものとして示される。２つのソフトウェア製品１１０及び１１２は図１の例で示されるが、代替的に、２より少ない又は２より多くのソフトウェア製品が計算装置１００に含むことができる。ソフトウェア製品１１０及び１１２の各々は１つ以上のソフトウェアコンポーネントを含む。図１の例では、ソフトウェア製品１１２がソフトウェアコンポーネント１２６及びソフトウェアコンポーネント１２８を含む一方、ソフトウェア製品１１０はソフトウェアコンポーネント１２２、ソフトウェアコンポーネント１２４及びソフトウェアコンポーネント１２６を含む。図１で見ることができるように、複数の異なるソフトウェア製品はソフトウェアコンポーネント（例えば、ソフトウェアコンポーネント１２６）を共有することができる。
【００１２】
[0015]ソフトウェアコンポーネント・アクセス制御モジュール１０４は、計算装置１００にインストールされたソフトウェアコンポーネントを管理する。制御モジュール１０４は、カタログ１０６として、計算装置１００にインストールされるソフトウェアコンポーネント（例えば、図１の例におけるソフトウェアコンポーネント１２２−１２８）の記録を保持する。カタログ１０６は、計算装置１００にインストールされ、したがって計算装置上で実行することができる、ソフトウェアコンポーネントの記録である。計算装置１００上でソフトウェアコンポーネントを実行するために、そのソフトウェアコンポーネントは計算装置にインストールされる。このインストールプロセスは、通常、インストールコンポーネント又はモジュールによって行われ、通常、オペレーティングシステム１０２のファイルシステムの様々な位置にファイルを格納すること、ソフトウェアコンポーネントについて記述する様々な情報を格納することなどを含む。計算装置１００にソフトウェアコンポーネントをインストールする過程の一部として、制御モジュール１０４は、ソフトウェアコンポーネントを意識させられて、ソフトウェアコンポーネントの識別子がカタロ
グ１０６に加えられることを可能にする。計算装置１００上でソフトウェアコンポーネントを実行することができるので、そのようなインストールされたソフトウェアコンポーネントは「アクティブな」ソフトウェアコンポーネントとも呼ぶことができる。
【００１３】
[0016]他のソフトウェアコンポーネントが計算装置１００に格納されてもよいが、計算装置１００にインストールされなくてもよい。オペレーティングシステム１０２はそのようなソフトウェアコンポーネントに通常気づいておらず、カタログ１０６にそのようなコンポーネントの識別子を含まず、そのようなソフトウェアコンポーネントの実行をサポートしない。従って、それらは計算装置１００上に格納されるが、そのようなソフトウェアコンポーネントが計算装置１００にインストールされないので、そのようなソフトウェアコンポーネントは「休止している」とも呼ぶことができる。たとえ実行可能ファイルが計算装置１００にインストールされていなくても、ソフトウェアコンポーネントがオペレーティングシステム１０２によって実行することができる実行可能ファイルである状況が発生する場合があることが認識されるべきである。しかしながら、そのようなソフトウェアコンポーネントは計算装置１００にインストールされないので、オペレーティングシステム１０２は、通常、そのようなソフトウェアコンポーネントに関する情報（例えば、そのようなソフトウェアコンポーネントによって提供される機能、そのようなソフトウェアコンポーネントの開発者又は発行者など）に気づかず、したがって、そのようなソフトウェアコンポーネントはいまだに休止しているソフトウェアコンポーネントと呼ばれる。
【００１４】
[0017]ソフトウェアコンポーネント・アクセス制御モジュール１０４は、計算装置１００にインストールされたソフトウェアコンポーネントの集中的管理を提供する。カタログ１０６を保持することによって、より詳細に以下に議論されるように、制御モジュール１０４は、様々な機能について知っており、特定のソフトウェアコンポーネントに様々な機能を容易に提供することができる。例えば、制御モジュール１０４は、計算装置１００にインストールされたソフトウェアコンポーネント１０４をすべて容易に識別することができ、識別されたソフトウェアコンポーネントに関して様々な機能を提供することができる。
【００１５】
[0018]図１に見ることができるように、各々のソフトウェア製品は１つ以上のソフトウェアコンポーネントで構成される。ソフトウェア製品のソフトウェアコンポーネントは、計算装置１００上で実行することができる命令及びデータを含み、ともに、ソフトウェアコンポーネントは、ソフトウェア製品の機能を提供する。全体としてのソフトウェア製品とではなく、実行する場合に、オペレーティングシステム１０２は、個々のソフトウェアコンポーネントと通信する。
【００１６】
[0019]単一のカタログ１０６が図１に示されるが、オペレーティングシステム１０２は、代替的に、複数のカタログ１０６を含んでもよい。１つ以上の実施例において、オペレーティングシステム１０２は、計算装置１００上の各アカウントについて異なるカタログ１０６を含む。そのような実施例において、オペレーティングシステム１０２は、異なるユーザーが各々異なるアカウント（又は複数の異なるアカウント）を設定して、異なるアカウントについて異なる設定、アクセス権などを保持することを可能にする。また、１つ以上のシステム又は管理者アカウントはまた、計算装置１００上で設定することができる。オペレーティングシステム１０２は、これらの異なるアカウントの各々について異なるカタログ１０６を保持する。オペレーティングシステム１０２はまた、複数の異なるユーザーが任意の所与の時間において計算装置１００にログインされることを可能にしてもよい。しかしながら、そのような状況においては、通常、複数のユーザーのうちの１人だけが現在アクティブな（現在アクティブなアカウントを使用している）ユーザーである。従って、任意の所与の時間において制御モジュール１０４によって使用されるカタログ１０６は、その所与の時間にログインされる計算装置１００の特定のアカウント、そして恐ら
くは、ログインされた複数のアカウントのうちのどれがその所与の時間において現在アクティブなアカウントであるかに基づいて、異なることがある。
【００１７】
[0020]特定のカタログ１０６は、計算装置１００にインストールされるソフトウェアコンポーネントの識別子を含む。異なるカタログ１０６が異なるアカウントについて保持される状況において、特定のカタログ１０６は、そのアカウントの下で計算装置１００にインストールされるソフトウェアコンポーネントの識別子を含む。異なるユーザーは、計算装置１００に異なるソフトウェアコンポーネントをインストールすることができ、異なる識別子が異なるカタログ１０６に含まれることに帰着する。
【００１８】
[0021]図２は１つ以上の実施例による例示的なカタログ２００を示す。カタログ２００は、対応するソフトウェアコンポーネント２２２、２２４、２２６及び２２８を各々がそれぞれ識別する、複数のソフトウェアコンポーネント識別子２０２、２０４、２０６及び２０８を含む。ソフトウェアコンポーネント２２２−２２８は、カタログ２００を実施する計算装置にインストールされる（又は計算装置のオペレーティングシステムの特定のアカウントの下でインストールされる）ソフトウェアコンポーネントである。
【００１９】
[0022]各々のソフトウェアコンポーネント２２２−２２８は、ソフトウェアコンポーネントが他のソフトウェアコンポーネントと区別されることを可能にする構成要素の同一性（ＩＤ）を有する。１つ以上の実施例において、この同一性は、より詳細に以下に議論されるように、管理票（マニフェスト、manifest）に含まれるものなどの、ソフトウェアコンポーネントによって提供される。代替的に、構成要素の同一性は、オペレーティングシステム（例えば、図１のオペレーティングシステム１０２）によって、別のコンポーネント又はモジュールによって、別のローカルサービス又はリモートサービスによって、別のローカル装置又はリモート装置によってなど、他の方法で生成することができる。
【００２０】
[0023]図１に戻ると、１つ以上の実施例において、カタログ１０６は、インストールされたソフトウェアコンポーネントの単一の指標（インデックス）を含む。他の実施例において、カタログ１０６は、ソフトウェアコンポーネントの複数のインデックス又は一部を含む。これらの複数のインデックス又は一部は、例えば、インストールされた、インストールされたソフトウェアコンポーネントをすべて含む１つの指標又は一部を含み。これはまた完全な指標と呼ばれる。これらの複数のインデックス又は一部はまた、例えば、規則又は基準の特定の組を満たすソフトウェアコンポーネントのサブセット（部分集合）を含む、第２の指標又は一部を含んでもよく、これはまた有効な指標と呼ばれる。規則又は基準のこの組は、インストールされていて実行することができるソフトウェアコンポーネントを有効に低減するために使用することができる。
【００２１】
[0024]通常、有効な指標は、計算装置１００にインストールされるソフトウェアコンポーネントのアクティブなバージョンを識別する。ソフトウェアコンポーネントの複数の異なるバージョンは計算装置１００にインストールすることができ、その各々は完全な指標に含まれる。しかしながら、ソフトウェアコンポーネントの複数のバージョンについては、それらのバージョンのうちの１つは有効な指標へ含まれるように選択される。
【００２２】
[0025]様々な異なる規則又は基準を、有効な指標への包含のために選択されるバージョンを決定するために使用することができる。１つ以上の実施例において、１つのそのようなルールはバージョニング（versioning）・ルールである。バージョニング・ルールは、ソフトウェアコンポーネントの複数の異なるバージョンのうちのどれがバージョン番号又は他のバージョン識別子に基づいたアクティブなバージョンであるかを規定する。そのようなバージョニング・ルールは、例えば、最も最近のバージョン（例えば、最も高いバージョン番号を備えたバージョン）が実行されるべきであること、特定のフォーマットのバ
ージョン識別子を有するか又は特定の値を有するバージョンが実行されるべきであることなどであってもよい。そのような実施例において、ソフトウェアコンポーネントのアクティブなバージョンは有効な指標に含まれ、たとえそれらが完全な指標に含まれていても、ソフトウェアコンポーネントの他のバージョンは有効な指標から除外される。
【００２３】
[0026]有効な指標を決定するために使用することができる別のルールはポリシールールである。例えば、計算装置１００の管理者又は計算装置１００が様々な異なる理由で結合されるネットワークの管理者によって、ポリシーを確立することができる。このポリシーは、特定のソフトウェアコンポーネント又はそのバージョンが計算装置１００上で実行されるべきでないこと、特定の出版者によってデジタルで署名されたソフトウェアコンポーネント又はそのバージョンだけが実行されるべきであることなどを規定してもよい。そのような状況で、たとえそれらが完全な指標に含まれていても、指定されたソフトウェアコンポーネント又はそのバージョンは、有効な指標から除外される。
【００２４】
[0027]有効な指標を決定するために使用することができる別のルールは複製ルール（duplicate rule）である。複製ルールは、同じソフトウェアコンポーネントの複数のコピーが計算装置にインストールされる場合、１つのそのようなコピーだけが有効な指標に保持されるべきであることを規定する。複数のそのようなコピーは、各々が共通のソフトウェアコンポーネントを含む計算装置上にインストールされる複数のソフトウェア製品の結果としてなど、様々な異なる理由でインストールすることができる。
【００２５】
[0028]図３は１つ以上の実施例による例示的なソフトウェアコンポーネント３００を示す。ソフトウェアコンポーネントは、１つ以上のファイル、及びソフトウェアコンポーネントについて記述するメタデータの両方の集合である。ソフトウェアコンポーネント３００は、各々がソフトウェアコンポーネント３００についての様々な命令及び／又はデータを格納する１つ以上のリソース・ファイル３０２を含む。ソフトウェアコンポーネント３００に含まれている特定のリソース・ファイル３０２は、ソフトウェアコンポーネント３００の開発者の要望に基づいて異なってもよい。
【００２６】
[0029]管理票（マニフェスト）３０４は、ソフトウェアコンポーネント３００、及びソフトウェアコンポーネント３００によって顕在化される機能について記述するメタデータを格納する。１つ以上の実施例において、管理票３０４は、ソフトウェアコンポーネント３００の識別子を含む。ソフトウェアコンポーネント３００の識別子は、ソフトウェアコンポーネント３００が、装置にインストールされた他のソフトウェアコンポーネントと区別されることを可能にする。この識別子は、ソフトウェアコンポーネント３００の１つ以上のバージョン番号、リソース・ファイル３０２（及びオプションとして管理票３０４の一部）上のデジタル署名、及びソフトウェアコンポーネント３００の出版者又は開発者の識別子などの様々な属性から構成することができる。代替的に、これらのバージョン番号、デジタル署名及び出版者又は開発者の識別子は、ソフトウェアコンポーネント３００の識別子の属性として含まれる代わりに（又はそれに加えて）別々に保持することができる。
【００２７】
[0030]ソフトウェアコンポーネント３００のバージョン番号は、ソフトウェアコンポーネント３００の異なるバージョンが容易に識別されることを可能にする。これらのバージョン番号は、より詳細に以下に議論されるように、ソフトウェアコンポーネント３００の管理を容易にするために使用することができる。
【００２８】
[0031]管理票３０４はまた、リソース・ファイル３０２にハッシュ関数を適用することにより生成されたハッシュ値を含んでもよい。様々な異なるハッシュ関数は、１つ以上の暗号ハッシュ関数又は一方向ハッシュ関数などのハッシュ値を生成するために使用するこ
とができる。そのようなハッシュ関数の例は、ＭＤ５（メッセージ・ダイジェスト・アルゴリズム５）ハッシュ関数、ＳＨＡ−１（セキュアハッシュアルゴリズム１）ハッシュ関数などを含む。
【００２９】
[0032]管理票３０４の少なくとも一部（例えば、デジタル署名以外の管理票３０４のそれらの部分）上のデジタル署名は、ソフトウェアコンポーネント３００の出版者によって、又はその出版者を代表して生成される。デジタル署名はまた、代替的に、（管理票３０４に含まれるリソース・ファイル３０２のハッシュの代わりに、又はそのハッシュに加えて）リソース・ファイル３０２上にあってもよい。ソフトウェアコンポーネント３００の出版者は、ソフトウェアコンポーネント３００のリソース・ファイル３０２の開発者であってもよく、又は代替的に、ソフトウェアコンポーネント３００を配信する別のエンティティであってもよい。デジタル署名は、公開鍵暗号作成法に基づいて、様々な周知の技術のうちの任意のものを使用して生成することができる。デジタル署名が作成されるリソース・ファイル３０２のほか管理票３０４の他の部分が（例えば、管理票３０４のリソース・ファイル３０２のハッシュ値によって）変わる場合、デジタル署名は変わる。従って、デジタル署名はまた、リソース・ファイル３０２の特定の組の識別子のほか、デジタル署名が変更される管理票３０４の他の部分として役立つことができる。
【００３０】
[0033]ソフトウェアコンポーネント３００の出版者及び／又は開発者の同一性もまた管理票３０４に含むことができる。デジタル署名も、出版者及び／又は開発者のこの同一性に関して生成することができる。
【００３１】
[0034]ソフトウェアコンポーネント３００が図１の計算装置１００などの計算装置にインストールされるべきである場合、ソフトウェアコンポーネント３００はインストール又は配置コンポーネント又はモジュールによって得られる。ソフトウェアコンポーネント３００は、様々なローカル及び／又はリモートのサービス及び／又は装置のうちの任意のものから得ることができる。
【００３２】
[0035]インストールプロセスの一部として、ソフトウェアコンポーネント３００の識別子は、インストールの時又は代替的にインストールプロセスによって識別されるように、計算装置のオペレーティングシステムの特定のアカウントのカタログに加えられる。インストールプロセスは、カタログにソフトウェアコンポーネント３００の識別子を加えることができ、又は代替的に、カタログにソフトウェアコンポーネント３００の識別子を次に加えることができるソフトウェアコンポーネント・アクセス制御モジュール（例えば、図１の制御モジュール１０４）と通信することができる。
【００３３】
[0036]１つ以上の実施例において、１つ以上の確認処置（validation action）が、カタログにソフトウェアコンポーネント３００の識別子を加える前に、ソフトウェアコンポーネント・アクセス制御モジュールによって、又はインストールコンポーネントもしくはモジュールによってとられる。様々な異なる確認処置をとることができる。例えば、ソフトウェアコンポーネント３００、管理票３０４及び／又はリソース・ファイル３０２が従うべき規則又は基準の組を確立することができる。確認の一部として、規則又は基準の組が実際に守られてきたかに関してチェックをすることができる。規則又は基準の組が守られてい場合、次いで、ソフトウェアコンポーネント３００の識別子はカタログに加えられない。
【００３４】
[0037]別の例として、上述のようなリソース・ファイル３０２及び／又は管理票３０４上のデジタル署名が管理票３０４に存在するかどうかに関してチェックをすることができる。そのようなデジタル署名が管理票３０４にない場合、ソフトウェアコンポーネント３００の識別子はカタログに加えられない。しかしながら、そのようなデジタル署名が管理
票３０４にある場合、デジタル署名がなされたリソース・ファイル３０２及び／又は管理票３０４がデジタル署名されて以来変更されていないというチェックがなされる。このチェックは、計算されたハッシュ値が管理票３０４に格納されるのと同じハッシュ値であることを確認するためにリソース・ファイル３０２のハッシュ値を計算することを含んでもよい。デジタル署名がなされた管理票３０４が変更されていないことをチェックすることは、公開鍵暗号作成法を使用して、任意の他の様々な周知の方法で行われてもよい。管理票３０４に含まれるソフトウェアコンポーネント３００の出版者の識別子がデジタル署名に含まれる出版者の識別子と一致する（例えば、同一である）かどうかに関してチェックがなされてもよい。デジタル署名がなされたリソース・ファイル３０２及び／又は管理票３０４がデジタルで署名されて以来変更されている場合、次いで、ソフトウェアコンポーネント３００の識別子はカタログに加えられない。
【００３５】
[0038]さらに別の例として、リソース・ファイル３０２及び／又は管理票３０４上のデジタル署名を生成した実体が信頼できるかどうかに関してチェックをすることができる。このチェックは、ソフトウェアコンポーネント３００がインストールされている装置の証明書ストア（certificate store）にデジタル署名を生成したエンティティのデジタル証明書が含まれるかどうかを決定するために証明書ストアにアクセスすることによってなすことができる。代替的に、証明書ストアに含まれているのではなく、証明書ストアのデジタル証明書からデジタル署名を生成したエンティティのデジタル証明書までの証明書の連鎖（certificate chain）を確立することができる。そのようなデジタル証明書が証明書ストアに含まれていない（又は、証明書の連鎖を確立することができない）場合、ソフトウェアコンポーネント３００の識別子はカタログに加えられない。
【００３６】
[0039]図１に戻ると、ソフトウェアコンポーネント１２２−１２８が計算装置１００に一旦インストールされると、ソフトウェアコンポーネント１２２−１２８のリソース・ファイルの１つ以上の位置へのパスを維持することができる。これらのパスは、カタログ１０６に、又は代替的にオペレーティングシステム１０２の他のストアのメタデータとして保持することができる。これらのパスは、特定のファイルが検索され、実行される、ロードされることを可能にするか、又はそうでなければ、適切に使用されることを可能にする。例えば、ショートカットとして表示されるべきアイコンへのパスを保持することができ、実行可能ファイルへのパスを保持することができ、ダイナミックリンクライブラリー（ＤＬＬ）へのパスを保持することなどができる。これらのパスを保持することによって、ソフトウェアコンポーネントに関する情報は容易に識別し返すことができる。例えば、特定のソフトウェアコンポーネントが実行されるべき場合、ソフトウェアコンポーネントの実行可能ファイルへのパスは容易に識別することができる。別の例として、ソフトウェアコンポーネントへのショートカットを表すアイコンが表示されるべきである場合、アイコンのデータを格納するファイルは容易に識別することができる。さらに別の例として、ＤＬＬがロードされるべき場合、そのＤＬＬを格納するファイルへのパスは容易に識別することができる。
【００３７】
[0040]ソフトウェアコンポーネント・アクセス制御モジュール１０４は、様々な他のコンポーネント及びモジュールがカタログ１０６からインストールされたソフトウェアコンポーネントに関する情報を得ることを可能にする。他のそのようなコンポーネント及びモジュールは、オペレーティングシステム１０２の一部であってもよく、又は代替的にソフトウェアコンポーネント１２２−１２８の１つ以上であってもよい。インストールされたソフトウェアコンポーネントに関するカタログ１０６に保持された情報は、要求するコンポーネント又はモジュールに返すことができ、又は代替的に、要求に対する応答を生成する際に制御モジュール１０４によって使用することができる。カタログ１０６が計算装置１００にインストールされたソフトウェアコンポーネントの記録を保持するので、オペレーティングシステム１０２の他のコンポーネント又はモジュールによってカタログ１０６
も利用することができる。
【００３８】
[0041]１つ以上の実施例において、様々な動作はカタログ１０６にアクセスする際に制御モジュール１０４によってサポートされる。これらの動作はアプリケーションプログラムインターフェイス（ＡＰＩ）の方法として顕在化させることができ、又は代替的に、実行されるべきこれらの動作の要求は、他の方法で制御モジュール１０４に対してなすことができる。以下の表１は、カタログ１０６にアクセスする際に制御モジュール１０４にサポートされるそのような動作の例について記述する。
【００３９】
【表１】
2012530322.tif 000003
【００４０】
[0042]上述のように、１つ以上の実施例において、ソフトウェアコンポーネントの識別子は、ソフトウェアコンポーネントのバージョン番号を識別するコンポーネント識別子を含む。２つのソフトウェアコンポーネントが同じバージョン番号を有する状況において、その後（２つのソフトウェアコンポーネントのコンポーネント識別子の残りの部分が同じであると仮定して）、２つのソフトウェアコンポーネントのうちの１つは他方の新たな置換バージョンであると決定される。新たな置換バージョンであると決定される２つのソフトウェアコンポーネントのうちの１つは、より高いバージョン番号を有するものなどの、様々な異なる方法で決定することができる。制御モジュール１０４は、ソフトウェアコンポーネントのより古いバージョンをコンポーネントの新たな置換バージョンで取り替え、
これはそのソフトウェアコンポーネントについて、新たな置換バージョンが返されるような、その後の要求に帰着する。１つ以上の実施例において、制御モジュール１０４は、カタログ１０６の有効な指標にコンポーネントの新たな置換バージョンを加えて、カタログ１０６の有効な指標からソフトウェアコンポーネントのより古いバージョンを取り除く。代替的に、制御モジュール１０４は、ソフトウェアコンポーネントの要求に応答するなどして、ソフトウェアコンポーネントの２つのバージョンのうちのどれがほかの時には新たな置換バージョンであるかを決定することができる。
【００４１】
[0043]また、各々のソフトウェアコンポーネントは、上述のように、管理票を有する。１つ以上の実施例において、各ソフトウェアコンポーネントの管理票はまた、ソフトウェアコンポーネントが動作のために他のソフトウェアコンポーネントに依存するかどうかを識別する。例えば、ソフトウェアコンポーネント１２２は、システムでも実行されるソフトウェアコンポーネント１２４に依存してもよく、ソフトウェアコンポーネント１２４は、システムでも実行するソフトウェアコンポーネント１２６に依存してもよい。
【００４２】
[0044]ソフトウェアコンポーネントの管理票におけるこの情報を考慮すると、制御モジュール１０４は、特定のソフトウェアコンポーネントが計算装置１００上で実行し得るかどうかを容易に決定することができる。例えば、制御モジュール１０４は、ソフトウェアコンポーネント１２２の管理票にアクセスし、ソフトウェアコンポーネント１２２を実行するために、ソフトウェアコンポーネント１２４（したがってソフトウェアコンポーネント１２６も）がさらに実行しているということを決定することができる。従って、制御モジュール１０４は、特定のソフトウェアコンポーネントが計算装置１００において実行し得るかどうかに関して（オペレーティングシステム１０２の一部であってもよいし、代替的に、オペレーティングシステム１０２とは別個のものであってもよい）他のコンポーネント又はモジュールからの質問（クエリー）に応答することができる。特定のソフトウェアコンポーネントが依存する他のソフトウェアコンポーネントがカタログ１０６にある場合、次いで、特定のソフトウェアコンポーネントは計算装置１００において実行することができる。しかしながら、特定のソフトウェアコンポーネントが依存する他のソフトウェアコンポーネントがカタログ１０６にない場合、特定のソフトウェアコンポーネントは計算装置１００において実行することができない。
【００４３】
[0045]同様に、ソフトウェアコンポーネントの管理票におけるこの情報を考慮すると、制御モジュール１０４は、計算装置１００からの特定のソフトウェアコンポーネントの除去が他のソフトウェアコンポーネントが実行するのを防ぐかどうかを容易に決定することができる。例えば、制御モジュール１０４は、ソフトウェアコンポーネント１２２の管理票にアクセスし、ソフトウェアコンポーネント１２２を実行するために、ソフトウェアコンポーネント１２４（したがってソフトウェアコンポーネント１２６も）がさらに実行しているということを決定することができる。従って、制御モジュール１０４は、少なくとも１つの他のソフトウェアコンポーネントがおそらくは適切に実行しないことに帰着することなくソフトウェアコンポーネント１２４を削除することができないことを示すことによって、計算装置１００からソフトウェアコンポーネント１２４を取り除くことができるかどうかに関して他のコンポーネント又はモジュール（オペレーティングシステム１０２の一部であってもよいし、又は代替的にオペレーティングシステム１０２とは別個のものであってもよい）からの質問に応答することができる。適切に実行しないソフトウェアコンポーネントの同一性はまた、そのような質問に対する応答に含めることができる。
【００４４】
[0046]図４は、１つ以上の実施例による、カタログベースのソフトウェアコンポーネント管理の例示的なプロセス４００を示すフローチャートである。プロセス４００は、図１のそのようなソフトウェアコンポーネント・アクセス制御モジュール１０４のような、装置上で実行するオペレーティングシステムの制御モジュールによって行われ、ソフトウェ
ア、ファームウェア、ハードウェア又はそれらの組み合わせで実施することができる。プロセス４００はカタログベースのソフトウェアコンポーネント管理の例示的なプロセスである；カタログベースのソフトウェアコンポーネント管理についての追加の議論は、異なる図に関して本明細書に含まれる。
【００４５】
[0047]プロセス４００において、ソフトウェアコンポーネント識別子はカタログに保持される（動作４０２）。これらのソフトウェアコンポーネント識別子は、ソフトウェアコンポーネントを互いに区別し、上述のように様々な異なる形式をとることができる。複数の異なるカタログは、上述のように、各々がオプションとして異なるインデックスを含む、装置に含めることができる。
【００４６】
[0048]結局、ソフトウェアコンポーネントに関する要求が受け取られる（動作４０４）。そのような要求が受け取られるまで、プロセス４００は待ち、要求に応答してカタログにアクセスする（動作４０６）。アクセスされるべきカタログは、要求の一部として識別することができ、又は代替的に要求に固有のもの（例えば、計算装置実施プロセス４００の現在のユーザーのカタログ）であってもよい。
【００４７】
[0049]要求は、カタログ中の情報に基づいて応答される（動作４０８）。上述のように、カタログ中のこの情報は、コンポーネント識別子を少なくとも含む。上述のように、特定の応答は、要求された動作の性質に基づいて異なることができる。
【００４８】
[0050]図５は、１つ以上の実施例によるカタログベースのソフトウェアコンポーネント管理の例示的なプロセス５００を示すフローチャートである。プロセス５００は、ソフトウェアコンポーネントの複数のバージョンが装置にインストールされる場合に要求に応答することに関する。プロセス５００は、図１のソフトウェアコンポーネント・アクセス制御モジュール１０４のような、装置上で実行するオペレーティングシステムの制御モジュールによって行われ、ソフトウェア、ファームウェア、ハードウェア又はそれらの組み合わせで実施することができる。プロセス５００はカタログベースのソフトウェアコンポーネント管理の例示的なプロセスである；カタログベースのソフトウェアコンポーネント管理の追加の議論は、異なる図に関して本明細書に含まれる。
【００４９】
[0051]プロセス５００では、装置上にインストールされるユーザーにとってアクセス可能なソフトウェアコンポーネントの複数のバージョンが識別される（動作５０２）。上述のように、異なるユーザーは異なるソフトウェアコンポーネントにアクセスできることができる。
【００５０】
[0052]複数のバージョンのうちのどれがソフトウェアコンポーネントのアクティブなバージョンであるかに関して決定がなされる（動作５０４）。複数のバージョンが識別されるとき又は他の時にこの決定をすることができ、上述のように、アクティブなバージョンのリストを（例えば、有効な指標として）保持することができる。代替的に、この決定は、ソフトウェアコンポーネントに関する情報の要求に応答してなすことができる。
【００５１】
[0053]ソフトウェアコンポーネントに関する情報の要求に応答して、ソフトウェアコンポーネントのアクティブなバージョンに関する情報が返される（動作５０６）。そのような要求は、プロセス５００を実施するオペレーティングシステムの他のコンポーネント又はモジュール、又は代替的に、上述のような他のソフトウェアコンポーネント、から受信される要求であってもよい。
【００５２】
[0054]プロセス５００は単一のソフトウェアコンポーネントを指す。複数のソフトウェアコンポーネントについてプロセス５００を繰り返すことができることが認識されるべき
である。例えば、上述のように、複数のソフトウェアコンポーネントのアクティブなバージョンの有効な指標は保持することができる。
【００５３】
[0055]動作５０２において行われた識別及び動作５０４において行われた決定を様々な時に行うことができることに留意すべきである。１つ以上の実施例において、計算装置１００にインストールされたソフトウェアコンポーネントに対して変更が行われるごとに、動作５０２及び５０４が行われる。プロセス５００を実施するソフトウェア・アクセス制御モジュールは、そのような変更がいつ行われるかを、オペレーティングシステムの別のコンポーネント又はモジュールによって通知されることができる。そのような変更の例はソフトウェアコンポーネントをインストールすること及びソフトウェアコンポーネントをアンインストールすることを含む。代替的に、動作５０２及び５０４は、低い活動の時間中（例えば、オペレーティングシステムが他のタスクを行うのに忙しくない場合）、ソフトウェアコンポーネント又はカタログに関する情報の要求に応答してなど、ほかの時に行うことができる。
【００５４】
[0056]図６は、１つ以上の実施例による、カタログベースのソフトウェアコンポーネント管理を実施するように構成することができる例示的な計算装置６００を示す。計算装置６００は例えば図１の計算装置１００であってもよい。
【００５５】
[0057]計算装置６００は、１つ以上のプロセッサー又は演算処理装置６０２、１つ以上のメモリー及び／又は記憶コンポーネント６０６を含み得る１つ以上のコンピューター読み取り可能な媒体６０４、１つ以上の入出力（Ｉ／Ｏ）装置６０８、及び、様々なコンポーネント及び装置が互いに通信することを可能にするバス６１０を含む。コンピューター読み取り可能な媒体６０４及び／又は１つ以上のＩ／Ｏ装置６０８は、計算装置６００の一部として含むことができ、又は代替的に計算装置６００と結合されてもよい。バス６１０は、様々な異なるバスアーキテクチャーを使用する、メモリーバス又はメモリーコントローラー、周辺バス、アクセラレイテッド・グラフィック・ポート、プロセッサー又はローカルバスなどを含む、いくつかの種類のバスアーキテクチャーのうちの１つ以上を表す。バス６１０は有線及び／又は無線のバスを含んでもよい。
【００５６】
[0058]メモリー／記憶コンポーネント６０６は１つ以上のコンピューター記憶媒体を表す。コンポーネント６０６は、（ランダム・アクセス・メモリー（ＲＡＭ）などの）揮発性の媒体及び／又は（読み取り専用メモリー（ＲＯＭ）、フラッシュメモリー、光ディスク、磁気ディスクなどの）不揮発性の媒体を含んでもよい。コンポーネント６０６は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハードドライブなど）のほか、取り外し可能な媒体（例えば、フラッシュメモリードライブ、取り外し可能なハードドライブ、光ディスクなど）を含んでもよい。
【００５７】
[0059]本明細書において説明された技術は、１つ以上の演算処理装置６０２によって実行される命令と共に、ソフトウェアで実施することができる。演算処理装置６０２、演算処理装置６０２の様々なキャッシュメモリー、装置６００の他のキャッシュメモリー（図示せず）、他のコンピューター読み取り可能な媒体などの、計算装置６００の異なるコンポーネントに異なる命令を格納することができることが認識されるべきである。また、命令が計算装置６００に格納される位置が時間とともに変化し得ることが認識されるべきである。
【００５８】
[0060]１つ以上の入出力装置６０８は、ユーザーが計算装置６００へコマンド及び情報を入力することを可能にし、また、情報がユーザー又は他のコンポーネントもしくは装置に提示されることを可能にする。入力装置の例は、キーボード、カーソル制御装置（例えば、マウス）、マイクロホン、スキャナーなどを含む。出力装置の例は、ディスプレイ装
置（例えば、モニター又はプロジェクター）、スピーカー、プリンター、ネットワークカードなどを含む。
【００５９】
[0061]様々な技術が、ソフトウェア又はプログラムモジュールの一般的なコンテキストにおいて本明細書に記載されてもよい。一般に、ソフトウェアは、特定のタスクを実行し又は特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュール及び技術の実施は、コンピューター読み取り可能な媒体のいくつかの形式に格納されるか又はそれらを介して送信されてもよい。コンピューター読み取り可能な媒体は、計算装置によってアクセスすることができる任意の利用可能な媒体であってもよい。限定ではなく例として、コンピューター読み取り可能な媒体は「コンピューター記憶媒体」及び「通信媒体」を含んでもよい。
【００６０】
[0062］「コンピューター記憶媒体」は、コンピューター読み取り可能な命令、データ構造、プログラムモジュール又は他のデータなどの情報の記憶のために任意の方法又は技術で実施される、揮発性及び不揮発性、取り外し可能な及び取り外し不能な媒体を含む。コンピューター記憶媒体は、所望の情報を格納するために使用することができ、コンピューターによってアクセスすることができる、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリーもしくは他のメモリー技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、又は任意の他の媒体を含むがこれらに限定されない。
【００６１】
[0063］「通信媒体」は、通常、搬送波又は他の移送機構などの変調されたデータ信号に、コンピューター読み取り可能な命令、データ構造、プログラムモジュール又は他のデータを具体化する。通信媒体はまた、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、情報を信号中に符号化するような方法で設定又は変化されたその特徴のうち１つ以上の特徴を有する信号を意味する。限定でない例として、通信媒体は、有線ネットワーク又は直接的な有線接続などの有線の媒体、及び音響、ＲＦ、赤外線及び他の無線媒体などの無線媒体を含む。上記のもののうちの任意のものの組み合わせもまた、コンピューター読み取り可能な媒体の範囲内に含まれる。
【００６２】
[0064]一般に、本明細書に記載された機能又は技術のうちの任意のものは、ソフトウェア、ファームウェア、ハードウェア（例えば、固定論理回路）、マニュアル処理又はこれらの実施例の組み合わせを使用して実施することができる。本明細書において使用されるとき、「モジュール」及び「コンポーネント」という用語は、一般に、ソフトウェアを表すが、代替的に、ファームウェア及び／又はハードウェアを含んでもよい。ソフトウェア実施の場合には、モジュール又はコンポーネントは、プロセッサー（例えば、ＣＰＵ）上で実行されると指定されたタスクを行うプログラムコードを表す。プログラムコードは１つ以上のコンピューター読み取り可能なメモリー装置に格納することができ、そのさらなる記載は図６に関して見ることができる。本明細書に記載されたカタログベースのソフトウェアコンポーネント管理の特徴はプラットフォーム無依存であって、これは、当該技術を、様々なプロセッサーを有する様々な商用コンピューティングプラットフォーム上で実施することができることを意味する。
【００６３】
[0065]主題は構造的特徴及び／又は方法論の行為に特有の言語で述べられてきたが、添付の特許請求の範囲において定義された主題が上述の特定の特徴又は動作に必ずしも限定されないことが理解されるべきである。より正確に言えば、上述の特定の特徴及び動作は、特許請求の範囲を実施する例示的な形式として開示される。
【図１】
2012530322.tif 000004
【図２】
2012530322.tif 000005
【図３】
2012530322.tif 000006
【図４】
2012530322.tif 000007
【図５】
2012530322.tif 000008
【図６】
2012530322.tif 000009
【国際調査報告】
2012530322.tif 000010
2012530322.tif 000011