(57)【要約】【課題】開示されている種々の実施の形態は、一般的には、ソフトウェアをメモリカードからハンドヘルド電子装置にロードするシステム及び方法に向けられている。【解決手段】本発明の１つの側面では、メモリカードは、各ディレクトリが特別な形式のハンドヘルド電子装置に対応している、複数のディレクトリを含んでいる。更に、各ディレクトリは、装置が自動的に探して実行するプログラムを含んでいる。プログラムは、ソフトウェアを装置のメモリにインストールするか、ソフトウェアを装置のメモリから起動するか、あるいは、ソフトウェアをメモリカードから起動する。
2006522966.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なる形式の携帯可能な電子装置にソフトウェアをロード可能な、メモリカードのためのローダであって、
メモリカード内に生成され、各ディレクトリが特別な形式の携帯可能な電子装置に対応している、複数のディレクトリと、
各ディレクトリに配置されるプログラムを備え、
メモリカードが、特別な形式の携帯可能な電子装置に挿入されると、携帯可能な電子装置の形式に対応するディレクトリ内のプログラムが自動的に実行する。
【請求項２】
請求項１に記載のローダであって、プログラムは、携帯可能な電子装置にソフトウェアをインストールする。
【請求項３】
請求項１に記載のローダであって、プログラムは、携帯可能な電子装置の特別なソフトウェアを起動する。
【請求項４】
請求項３のローダであって、特別なソフトウェアは、携帯可能な電子装置に他のソフトウェアをインストールするための選択をユーザに提供するメニューである。
【請求項５】
請求項４に記載のローダであって、選択は、携帯可能な電子装置にインストールする他のソフトウェアの特定を含んでいる。
【請求項６】
請求項１に記載のローダであって、プログラムは、autorun.exeと呼ばれる。
【請求項７】
請求項１に記載のローダであって、プログラムは、進行している間にメモリカードが形態可能な電子装置から除去されているか否かを検出可能であり、また、特別な除去作業を実行可能である。
【請求項８】
請求項７に記載のローダであって、除去作業は、実行中の作業の停止と、装置のメモリの消去を含んでいる。
【請求項９】
請求項１に記載のローダであって、プログラムは、携帯可能な電子装置に特別なプログラムをインストールする方法を決定するように構成可能である。
【請求項１０】
請求項１に記載のローダであって、プログラムは、携帯可能な電子装置上の特別なプログラムを起動する方法を決定するように構成可能である。
【請求項１１】
請求項１に記載のローダであって、複数のディレクトリ名は、パーム、１８２４、２５７７、４０００、１０００３及び１０００５を含んでいる。
【請求項１２】
メモリカードを、複数の形式の携帯可能な電子装置をサポート可能に設定する方法であって、
各ディレクトリが特別な形式の携帯可能な電子装置に対応する、複数のディレクトリをメモリカードに生成するステップと、
各ディレクトリにプログラムをインストールするステップを備え、
メモリカードが、特別な形式の携帯可能な電子装置に挿入されると、特別な形式の携帯可能な電子装置に対応するディレクトリ内のプログラムが自動的に起動する。
【請求項１３】
データレジスタを有し、携帯可能な電子装置に挿入されるメモリカードから、プログラムが無許可で複写されるのを防止する方法であって、
メモリカードのデータレジスタを検査するステップと、
データレジスタが真正なメモリカードに属しているか否かを決定するステップを備えている。
【請求項１４】
請求項１３に記載の方法であって、更に、データレジスタが真正なメモリカードに属していない場合には、プログラムの実行を阻止するステップを備える。
【請求項１５】
請求項１３に記載の方法であって、更に、データレジスタが真正なメモリカードに属していない場合には、プログラムの実行を制限するステップを備える。
【請求項１６】
請求項１３に記載の方法であって、データレジスタは、カード識別に対応する値を含んでいる。
【請求項１７】
請求項１３に記載の方法であって、データレジスタは、カード特定データに対応する値を含んでいる。
【請求項１８】
指示のシーケンスを有し、コンピュータ使用可能な媒体を含むコンピュータプログラムプロダクトであり、プロセッサによって実行される時に、データレジスタを有し、携帯可能な電子装置に挿入されるメモリカードからプログラムが無許可で複写されるのを防止するための処理を、前記プロセッサに実行させるコンピュータプログラムプロダクトであって、
前記処理は、
メモリカードのデータレジスタを検査する処理と、
データレジスタが真正なメモリカードに属しているか否かを決定する処理を備えている。
【請求項１９】
請求項１８に記載のコンピュータプログラムプロダクトであって、前記処理は、更に、データレジスタが真正なメモリカードに属していない場合に、プログラムの実行を阻止する処理を備えている。
【請求項２０】
請求項１８に記載のコンピュータプログラムプロダクトであって、前記処理は、更に、データレジスタが真正なメモリカードに属していない場合に、プログラムの実行を制限する処理を備えている。
【請求項２１】
請求項１８に記載のコンピュータプログラムプロダクトであって、データレジスタは、カード識別に対応する値を含んでいる。
【請求項２２】
請求項１８に記載のコンピュータプログラムプロダクトであって、データレジスタは、カード特定データに対応する値を含んでいる。
【発明の詳細な説明】
【発明の分野】
【０００１】
本明細書に記載されている種々の実施の形態は、携帯可能な計算及び無線装置に関し、より詳しくは、携帯可能な計算及び無線装置にコンテンツをロードする（読み込む）ための改良されたシステム及び方法に関する。
【発明の背景】
【０００２】
ポケットパソコンオペレーティングシステム（Operating  System“ＯＳ”）あるいはパーム(Palm)ＯＳを有する装置等の携帯可能／ハンドヘルド（片手で持てる程度の大きさの）計算装置及び携帯電話機等の携帯可能／ハンドヘルド無線装置の普及により、このような装置でのコンテンツ、例えば、ビデオゲーム、スケジュールソフトウェア、イーメールソフトウェア等に対する要望が高まっている。
【０００３】
このようなコンテンツをこのような装置にロードするための一つの一般的な方法は、小さな、薄い、除去可能な、低電力のデータ蓄積装置である、マルチメディアカード（Multi-Media  Card“ＭＭＣ”）あるいはコンパクトフラッシュ（登録商標）メモリカード等のメモリカードを用いる方法である。メモリカードは、ハンドヘルド装置に挿入可能である。これによって、装置は、カードからデータを読み取り可能であり、また、ソフトウェアをカードから装置自身のメモリにインストールあるいはプログラムをカードから起動することができる。
【０００４】
市場で入手可能な、多くの異なる形式の携帯可能な計算及び無線装置は、同じ形式のメモリカードをサポートする。しかしながら、これらの多くの装置は、同じ形式のソフトウェアフォーマットをサポートしない。例えば、パームＯＳを有しているハンドヘルド装置をサポートするソフトウェアは、必ずしも、ポケットパソコンオペレーティングシステム（“ＯＳ）を有している装置上でうまく機能しないあるいはインストールされない。
【０００５】
これにより、小売業者は、各形式の装置に対して同じソフトウェアを有する異なるカードを提供しなければならないため、このようなソフトウェアを販売するのが不便である。また、小売業者は、異なるカードに対するより多くの常備在庫品（Stock  Keeping  Unit“ＳＫＵ”）を管理する必要があるため、管理用の間接費用が増加する。更に、顧客は、それぞれ異なる形式の複数のハンドヘルド装置を有している場合には、同じソフトウェアに対して異なるメモリカードを購入する必要があるため、不便である。更に、同じソフトウェアに対して多くのカードを製造する必要があるため、発行者の費用が増加する。
【０００６】
メモリカードからハンドヘルド装置へのソフトウェアのインストールに関する他の重要な問題点は、ソフトウェアの著作権侵害あるいは無許可の複写である。ＭＭＣメモリカード上のソフトウェアは、例えば、デジタル著作権管理（digital  right  management“ＤＲＭ”）の形式が用いられていない場合には、容易に複写可能である。多くの異なる及び競合するＤＲＭ技術が使用可能である。それらのうちの利用可能な１つに興味がある発行者は、それらを選択する時に、費用（技術ライセンス費用）、融通性、頑健性及び消費者の使用の容易性を考慮する必要がある。
【０００７】
したがって、コンテンツをメモリカードから携帯可能な計算及び／または無線装置にロードするための改良されたシステムと方法が要望されている。更に、コンテンツがメモリカードから複写されるのを防止するための改良されたシステムと方法も要望されている。
【発明の概要】
【０００８】
本明細書に開示されている種々の実施の形態は、一般的に、ソフトウェアをメモリカードからハンドヘルド電子装置にロードするためのシステムと方法に向けられている。本発明の１つの側面では、メモリカードは、各ディレクトリが、特別な形式のハンドヘルド電子装置に対応している、複数のディレクトリを含んでいる。更に、各ディレクトリは、装置が自動的に探して実行するプログラムを含んでいる。プログラムは、ソフトウェアを装置のメモリにインストールし、ソフトウェアを装置のメモリから起動し、あるいは、ソフトウェアをメモリカードから起動する。
本発明の他の側面では、プログラムは、プログラムが真正なメモリカード上に存在するか否かを確認するために検査する。そうでない場合には、プログラムは、自身を終了し、インストールを防止し、あるいはその実行を制限する。
【０００９】
本明細書に開示されている本発明の前述した及び他の利点や目的がどのように得られるかをよりよく認識するために、前に簡単に説明した本発明のより特別な記述が、添付の図面に示されている特定の実施の形態を参照してなされている。これらの図面は、本発明の典型的な実施の形態のみを描写している。したがって、その範囲を制限して考慮されるべきでなく、本発明は、添付の図面を使用しながら、付加的な特徴及び詳細とともに記述及び説明されていることを理解する。
【好ましい実施の形態の詳細な説明】
【００１０】
ハンドヘルド計算及び無線装置等の、多くの異なる形式のハンドヘルド電子装置は、ＭＭＣ等の、同じ形式のメモリカードをサポートするが、それらは、必ずしも、同じ形式のソフトウェアコードあるいはフォーマットをサポートしない。例えば、パーム(Palm)オペレーティングシステム（“ＯＳ”）を有しているハンドヘルド装置をサポートするソフトウェアは、必ずしも、ポケットパソコンＯＳを有している装置にうまくインストールされない。
しかしながら、多くの場合、特別なプログラムを複数の異なる形式のハンドヘルド電子装置にうまくインストールすることができる、単一のメモリカードを有することが望まれる。更に、メモリカードが装置に挿入された時に、メモリカードが、自動的にプログラムをインストールすることが望まれる。この場合、ユーザがどの種類のハンドヘルド装置を有しているかに関係なく、ユーザは、メモリカードを装置に挿入し、そして、プログラムをうまく実行あるいはインストールすることができる。
これを達成するための一つのアプローチが、図1に示されている。図1は、本発明の実施の形態に対応するファイルディレクトリ１００を示している。一般的に、メモリカードが特別なハンドヘルド電子装置に挿入されると、装置は、自動的に特別なディレクトリを探す。例えば、パームＯＳを有しているハンドヘルド装置は、“Palm（パーム）”と名付けられたディレクトリを自動的に探す。各形式の装置は、対応するディレクトリを探す。
更に、これらの装置は、一般的に、プログラムあるいはデータを含むデータファイルである、特別なファイルを探す。装置がプログラムを探し、そして、そのプログラムが存在する場合には、装置は、そのプログラムを実行あるいは走らせる。装置が、データファイルを探し、そのファイルが存在する場合には、装置は、特別なプログラムの起動あるいはインストールを指示するためにデータファイルを読み出す。例えば、装置がパーム(Palm)ＯＳを有している場合には、“Palm（パーム）”と呼ばれるディレクトリを探す。そして、そのディレクトリ内で、装置は、“start.prc”と呼ばれるプログラムを探して実行する。
この観点から、１つの解決法は、全てのそのようなディレクトリ及びファイルを単一のメモリカード内に含ませることである。図1では、ファイルディレクトリ１００は、カードのルートディレクトリから分離した、Ｐａｌ（パーム）、１８２４、２５７７、４０００、１０００３及び１０００５と名付けられた６つのサブディレクトリを含んでいる。各サブディレクトリは、特別な形式のハンドヘルド装置に対応している。すなわち、“Ｐａｌｍ（パーム）”は、パーム(Palm)ＯＳを有している装置に対応し、“１８２４”は、ＡＲＭ７２０中央処理ユニット（central  processing  unit“ＣＰＵ”）を有しているハンドヘルド装置に対応し、“２５７７”は、Ｓｔｒｏｎｇ  Ａｒｍ  ＳＡ１ＸＸ群のＣＰＵからのＣＰＵを有しているハンドヘルド装置に対応し、“４０００”は、ＭＩＰＳ  Ｒ４ＸＸＸ群のＣＰＵからのＣＰＵを有しているハンドヘルド装置に対応し、“１０００３”は、日立  ＳＨ３  ＣＰＵを有しているハンドヘルド装置に対応し、“１０００５”は、日立  ＳＨ４  ＣＰＵを有しているハンドヘルド装置に対応している。
本発明に対応する実施の形態は、任意の数のこれらのディレクトリを含むことができ、また、上では挙げられていないディレクトリを含むことができる。
【００１１】
各サブディレクトリは、メモリカードがハンドヘルド装置にメモリカードが挿入された時に、ハンドヘルド装置が探すファイルを含んでいる。例えば、ＭＭＣが、ポケットパソコンＯＳを有しているＡｒｍ  ７２０  ＣＰＵを備えているハンドヘルド装置に挿入された場合、装置は、“１８２４”サブディレクトリ内の“autorun.exe”と呼ばれるプログラムを探す。見つけた場合には、装置は、“autorun.exe”プログラムを実行あるいは走らせる。このプログラムは、以下に、より詳しく記載されている。
【００１２】
各サブディレクトリは、更に、ユーザが、ユーザの装置上で実行あるいはユーザの装置にインストールすることを希望するソフトウェアを含んでいる。ポケットパソコンＯＳを有しているハンドヘルド装置にインストールされるソフトウェアに対しては、すなわち、ソフトウェアが、装置のメモリに複写される場合には、ソフトウェアは、通常、“＊.cab”ファイルの形式で、対応するサブディレクトリ内に挿入される。例えば、サブディレクトリ“１８２４”、“２５７７”、“４０００”、“１０００３”及び”１０００５“は、それぞれ、ソフトウェアを”＊.cab“ファイルの形式で有している。”＊.cab“ファイルは、一般的には、メモリカード上のディスク空間を節約するために、ソフトウェアの圧縮形式である。ファイルは、それらがハンドヘルド装置のメモリ内に複写される時に、実行可能な形式に“展開”される。ソフトウェアが、ハンドヘルド装置のメモリからではなく、メモリカードから起動あるいは実行される場合には、ソフトウェアは、通常、実行可能なファイル、例えば、“＊.exe”ファイルとして、対応するサブディレクトリ内に挿入される。
【００１３】
また、しばしば、ソフトウェアは、特定の指示、パラメータ、あるいは、ソフトウェアを装置にインストールまたは装置上で実行するための通常のデータを提供する。更に、ソフトウェアは、対応するあるいは補充の実行可能なファイル、例えば、“＊.exe”ファイルを保有可能である。更に、これらのデータファイルあるいはこれらのデータファイルの構成要素は、異なるＯＳのファイルを有している異なる装置に分配可能である。これにより、同じデータファイルの複写を必要としないため、メモリカード上の空間が節約される。例えば、電子書籍は、それぞれがデータに対して同じメモリカードを使用する、多くの読者を有することが可能である。これらの読者は、異なるＯＳプラットフォームを有している場合でも、電子書籍に対するテキストを含んでいる単一のデータファイル等の、同じデータファイルを、メモリカード内で共有することができる。
【００１４】
パーム(Palm)ＯＳを有している装置に対しては、対応するディレクトリは、ポケットパソコンＯＳを備えている装置に対して記述されているファイルに類似のファイルを含んでいてもよい。すなわち、“Ｐａｌｍ（パーム）”サブディレクトリは、図１に“プログラム(programs)”と名付けられているサブディレクトリ内に配置されている、起動あるいは装置のメモリ内にインストールされるソフトウェア、“config,”と名付けられているサブディレクトリ内に配置されている、ソフトウェアをインストールあるいは起動する時に特定のパラメータを提供するデータファイル、“ランチャ(launcher)”と名付けられているサブディレクトリ内に配置されている、対応するあるいは補足の実行可能なファイルを含んでいてもよい。
【００１５】
前述したファイルディレクトリ１００及び対応するファイルを有しているメモリカードを備えているため、ユーザは、上で挙げたいずれかの装置にメモリカードを挿入可能し、そして、所望のソフトウェアをうまくインストールあるいは実行させることができる。
【００１６】
図２には、ポケットパソコンＯＳ及びＳｔｒｏｎｇ  Ａｒｍ  ＳＸ１１ＸＸ  ＣＰＵを有しているハンドヘルド計算装置が、前述したファイルディレクトリ１００構造を有するメモリカードを扱う方法を説明するフローチャートが示されている。
インストールされる所望のソフトウェアを有しているメモリカードが装置に挿入されると（スタートブロック１０００）、装置は、カードが挿入されているか否かを検出する（決定ブロック１１００）。
装置が挿入されていない場合には、装置は、“autorun.exe”と呼ばれるプログラムが、自身のメモリ内に利用可能に存在するか否かを確認するために調査する（決定ブロック１１５０）。存在しない場合には、装置は、調査を停止し、通常の動作を継続する（ストップブロック１６００）。
利用可能な“autorun.exe”プログラムが存在する場合には、それは、メモリカードが装置に挿入された時点であったことを意味する。なぜなら、“autorun.exe”プログラムは、メモリカードから複写されるが、メモリカードは、ソフトウェアがインストールされる前に除去されるからである。この場合、装置は、“uninstall（アンインストール）”を引数(argument)として通過させて、“autorun.exe”を実行する(実行ブロック１１６０)。プログラムは、アンインストール引数に応答し、装置のメモリから自身を除去し、終了する（実行ブロック１１７０）。その後、装置は、通常の動作を継続する（ストップブロック１６００）。
【００１７】
装置が、メモリカードを検出した場合には（決定ブロック１１００）、装置は、“２５７７”サブディレクトリ内の“autorun.exe”を探す（実行ブロック１２００）。
プログラムが見つからなかった場合には（決定ブロック１３００）、装置は、通常の動作を継続する（ストップブロック１６００）。その後、ユーザは、プログラムのインストールを実行あるいはメモリカードに対してプログラムを起動することができる。
“autorun.exe”を見つけた場合には（決定ブロック１３００）、装置は、“autorun.exe”をそのメモリ内に複写する（実行ブロック１４００）。そして、装置は、“install（インストール）”を引数(argument)として通過させて、“autorun.exe”を実行する（実行ブロック１５００）。インストール引数に応答して、プログラムは、所望のソフトウェアをメモリカードから装置のメモリにインストールし、所望のアプリケーションを起動し、その後、通常の動作を継続する（ストップブロック１６００）。
【００１８】
“autorun.exe”に対するフレームワークあるいはシェルは、マイクロソフト社によって提供され、また、[ｈｔｔｐ：／／ｍｓｄｎ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｌｉｂｒａｒｙ／ｄｅｆａｕｌｔ．ａｓｐ？ｕｒｌ＝／ｌｉｂｒａｒｙ／ｅｎｕｓ／ｗｃｅｓｅｔｕｐ／ｈｔｍ／＿ｗｃｅｓｄｋ＿ｕｓｉｎｇ＿ａｕｔｏｒｕｎ＿ｏｎ＿ｔｈｅ＿ｐｏｃｋｅｔ＿ｐｃ．ａｓｐ．]で見つけることができる。フレームワークは、アプリケーションを自動的にインストールするためのソースコードを提供するだけであり、他のアプリケーションを起動するためのソースコードは提供しない。しかしながら、当業者には理解できるように、ソースコードが利用可能であるため、プログラマは、コードを拡張し、また、新しい特徴を付加することができる。
図３には、アプリケーションをインストールするためだけでなく、所望のアプリケーションを起動するために、“autorun.exe”を拡張する方法を説明するフローチャートが示されている。
所望のソフトウェアを有しているメモリカードがハンドヘルド装置に挿入されると、装置は、対応するサブディレクトリを探す。そして、対応するサブディレクトリが存在する場合には、そのディレクトリ内の“autorun.exe”プログラムを起動する。
“autorun.exe”が起動されると（スタートブロック２０００）、プログラムは、引数が通過したか否かを確認するために調査する（決定ブロック２１００）。一般的には、ポケットパソコン装置が“autorun.exe”を起動すると、メモリカードが、装置内に適切に挿入されているか否かを確認するために調査する。挿入されている場合には、装置は、インストール処理を実行するために、“install（インストール）”引数を“autorun.exe”に通過させる。挿入されていない場合、例えば、誰かが、メモリカードを早めに除去した場合には、装置は、終了するために、“uninstall（アンインストール）”引数を“autorun.exe”に通過させ、そして、メモリから自身を除去する。
【００１９】
引数を“autorun.exe”に通過させない、いくつかのポケットパソコンあるいはスマートフォン装置(Smart  Phone  device)が存在する。この場合には、“autorun.exe”プログラムは、インストール処理を実行する（実行ブロック２３００）。すなわち、“autorun.exe”は、装置のメモリ内にまだ存在していない所望のソフトウェアを、メモリカードからインストールする。“autorun.exe”は、更に、所望のアプリケーションを、メモリカードあるいは装置のメモリから起動する。
引数が通過した場合には（決定ブロック２１００）、“autorun.exe”は、引数を調査する（決定ブロック２２００）。通過した引数が“uninstall（アンインストール）”である場合には、“autorun.exe”は、終了し、自身及び所望のアプリケーションを、装置のメモリから除去する（実行ブロック２２５０）。
通過した引数が“install（インストール）”である場合には（決定ブロック２２００）、“autorun.exe”は、所望のソフトウェアを含んでいるアプリケーションを、メモリカードから、まだ存在していない装置のメモリにインストールする（実行ブロック２３００）。更に。“autorun.exe”は、所望のアプリケーションを、メモリカードあるいは装置のメモリのいずれかから起動する（実行ブロック２４００）。例えば、対応するサブディレクトリは、インターネットエクスプローラプログラム(Internet  Explorer  program)を含んでいる。“autorun.exe”は、装置内のインターネットエクスプローラプログラムをメモリカードから自動的に起動し、また、所望のページへのエクスプローラポイントを有するように符号化が可能である。
【００２０】
任意のアプリケーションを起動するように“autorun.exe”を制御し、また、“autorun.exe”がプログラムを起動する方法を制御する能力は、コンテンツ、すなわち、メモリカード上の所望のソフトウェアを準備するパーティ及びユーザに融通性を提供する。
ユーザに対しては、“autoruhn.exe”は、図形メニュー、例えば、ウェブ(web)ページをメモリカードから起動し、ユーザが、インストールまたは起動のためのアプリケーション、あるいは、インストールまたは起動のためのアプリケーションの特徴を選択できるようにする。
メモリカードのためのコンテンツを製造あるいは準備するパーティに対しては、パーティは、プログラムがメモリカードから起動される方法を決定することができる。すなわち、パーティは、ソフトウェアのインストール及び起動をカスタマイズ（決定）することができる。例えば、“autorun.exe”は、プログラムを、メモリカードあるいは装置のメモリから起動するように構成可能である。
他の例では、“autorun.exe”は、前述したように、ユーザがインストールを制御することができるように、あるいは、ユーザからの制御を隠すように構成可能である。更に、パーティは、“autorun.exe”に、任意の期間に対するマーケッティング情報や用語を表示する、構成可能な“スプラッシュスクリーン(splash  screen)”をロードさせることができる。その後、装置は、通常の動作を継続する（ストップブロック２５００）。
【００２１】
図４（ａ）〜４（ｃ）には、“autorun.exe”の実行の詳細なフローチャートが示されている。ソフトウェアを有しているメモリカードが、ポケットパソコンＯＳを有している装置に挿入されると、装置は、対応するディレクトリを探し、そして、対応するディレクトリ内の“autorun.exe”を探す。見つけた場合には、装置は、“autorun.exe”を起動する（エンターブロック３０００）。
“autorun.exe”は、先ず、“uninstall（アンインストール）”引数が通過したか否かを確認するために検査する（決定ブロック３１００）。そうであれば、それは、メモリカードが装置から除去されたことを示しており、“autorun.exe”は、“リセットフラグ”をクリアする（実行ブロック３１５０）。リセットフラグは、“autorun.exe”が、ソフトウェアを、メモリの装置にインストールすべきか否かを指示する。“autorun.exe”が、ソフトウェアをインストールしないように指示している場合には、それは、メモリカードが使用可能でないか、あるいは、ソフトウェアがすでにインストールされているからである。
その後、“autorun.exe”は、“ソフトリセット(soft-reset)”を実行する。すなわち、ポケットパソコン装置をリブート（再起動）し（実行ブロック３２６０）、その後、装置のメモリからファイルを除去することなく、自己を終了する（実行ブロック４６００）。
【００２２】
決定ブロック３１００に戻り、“uninstall（アンインストール）”引数が通過しなかった場合には、それは、メモリカードが装置内にまだ挿入されていることを示している。“autorun.exe”は、リセットフラグがセットされているか否かを検査する（決定ブロック３２００）。
セットされていない場合には、“autorun.exe”は、リセットフラグをセットし（実行ブロック３２５０）、ソフトリセットを実行する（実行ブロック３２６０）。そして、自身を終了する（実行ブロック４６００）。
リセットフラグがセットされている場合には（決定ブロック３２００）、“autorun.exe”は、装置のメモリ内の第１トップレベルのディレクトリあるいはファイル名を探す（実行ブロック３３００）。
有効なディレクトリあるいはファイル名が見つからなかった場合には（決定ブロック３４００）、“autorun.exe”は、インストール処理が準備される方法や、“autorun.exe”がプログラム及び構成される方法に依存して、メモリカード上の特別なアプリケーションへのパス（通路）を構築するために、トップレベルの一時的なディレクトリ名を使用するか、あるいは、装置のメモリ内にすでに存在する特別なアプリケーションへのパスを構築する（実行ブロック４３００）。
その後、“autorun.exe”は、特別なアプリケーションを、装置のメモリあるいはメモリカードのいずれかから起動する（動作ブロック４４００）。うまく起動した場合には（決定ブロック４５００）、“autorun.exe”は、リセットフラグをクリアする（実行ブロック４５６０）。これは、装置の電源が遮断された後にメモリカードが装置から除去される場合に必要となる。その後、“autorun.exe”は、自身を閉じあるいは自身を終了する（ストップブロック４６００）。
うまく起動できなかった場合には、“autorun.exe”は、ユーザに失敗を知らせる。例えば、装置の表示装置に現れるグラフィックウィンドウを介して知らせる。
【００２３】
決定ブロック３４００に戻り、有効なディレクトリあるいはファイル名が見つかった場合には、“autorun.exe”は、ディレクトリが一時的なディレクトリであるか否か、例えば、除去可能なフラッシュ、ＲＯＭあるいはマイクロドライブメモリカード上に配置されているディレクトリであるか否かを検査する（決定ブロック３５００）。
一時的なディレクトリである場合には、プログラムは、組み込み記憶装置であるか否かを検査する（決定ブロック３５５５０）。これは、時々、一時的なディレクトリ、すなわち、除去可能なフラッシュあるいはＲＯＭメモリカードが、実際には、装置内に実際に組み込まれあるいは固定されていることがあるためである。
組み込み記憶装置でない場合には、ディレクトリ名が、後での使用のために蓄積される（実行ブロック３５６０）。その後、“autorun.exe”は、次のトップレベルのディレクトリあるいはファイル名を探す（実行ブロック３６００）。
一時的なディレクトリが組み込み記憶装置である場合には、“autorun.exe”は、次のトップレベルのディレクトリあるいはファイル名を探す（実行ブロック３６００）。
決定ブロック３５００に戻り、見つけた有効なディレクトリあるいはファイル名が一時的なディレクトリでない場合には、“autorun.exe”は、次のトップレベルのディレクトリあるいはファイル名を探す（動作ブロック３６００）。
１つを見つけた場合には（決定ブロック３７００）、“autorun.exe”は、それが一時的なディレクトリであるか否かを決定するために、決定ブロック３５００に戻る。
“autorun.exe”が次のトップレベルのディレクトリあるいはファイル名を見つけない場合には（決定ブロック３７００）、有効なディレクトリが実際に存在しているか否かを確認するために検査する（決定ブロック３８００）。存在しない場合には、問題があるため、例えば、カードが挿入されていないため、自身を終了する（ストップブロック４６００）。
【００２４】
有効なディレクトリが存在する場合には（決定ブロック３８００）、“autorun.exe”は、現在のプロセッサの形式を決定し、“autorun.exe”を開始させるメモリカードまたは他のメモリカード上、あるいは、装置のメモリ内のいずれかに存在する、有効なディレクトリへのパスを構築する（実行ブロック３９００）。
次に、プログラムは、対応するサブディレクトリ、例えば、カードが挿入されている装置に対応する“autorun.exe”を起動する、メモリカード上のサブディレクトリから、第１の“＊.cab”ファイル名を取得する（実行ブロック４０００）。例えば、メモリカードが挿入されている装置が、Ｓｔｒｏｎｇ  Ａｒｍ  ＳＡ１１ＸＸ  ＣＰＵを有している場合には、“２５７７”と名付けられたサブディレクトリから取得する。
“＊.cab”ファイルが見つからない場合には（決定ブロック４１００）、プログラムがすでにインストールされているか、あるいは、インストールする“＊.cab”ファイルが存在しない可能性があるため、プログラムは、アプリケーションの起動を試みる。プログラムは、実行ブロック４３００に進む。すなわち、インストール処理が準備される方法や“autorun.exe”がプログラム及び構成される方法に依存して、メモリカード上の特別なアプリケーションへのパスを構築するために、トップレベルの一時的なディレクトリ名を使用するか、あるいは、装置のメモリ内にすでに存在する特別なアプリケーションへのパスを構築する。
“＊.cab”ファイルを見つけた場合には（実行ブロック４１００）、プログラムは、“＊.cab”ファイルのコンテンツが、装置のメモリにすでにインストールされているか否かを検査する（決定ブロック４２００）。インストールされていない場合には、“＊.cab”ファイルのコンテンツは、装置のメモリの、有効なディレクトリ内にインストールされる（実行ブロック４２５０）。インストールされている場合には、プログラムは、“＊.cab“ファイル内のコンテンツをインストールせずに、次の”＊.cab“ファイルを見つける処理を実行し（実行ブロック４２６０）、決定ブロック４１００を繰り返す。
【００２５】
上記“atorun.exe”に適当される原理は、メモリカードからハンドヘルド電子装置内にソフトウェアを自動的にインストールしあるいはソフトウェアを実行するように設計されたている、実行可能なプログラムに等しく適用可能である。
【００２６】
メモリカードからハンドヘルド電子装置へのソフトウェアのインストールに関する他の問題点は、安全性、より詳細には、ソフトウェアの著作権侵害あるいは無許可の複写である。典型的には、ＭＭＣ及び安全性デジタル（Security  Digital“ＳＤ”）読み出し専用メモリ（“ＲＯＭ”）及びフラッシュメモリカードは、カードのコンテンツにアクセスする方法等の情報を提供する、特定の固有データレジスタ、カード識別（Card  Identification“ＣＩＤ”）及びカード特定データ（Card  Specific  Data“ＣＳＤ”）を含んでいる。これらのデータレジスタは、特別なメモリカードに固有なデータフィールドを有している。
図５には、メモリカード内のデータレジスタを使用する安全システムを説明するフローチャートが示されている。固有なデータフィールド値を試験することによって（実行ブロック５０００）、プログラムは、インストールされあるいは起動されるソフトウェアが、真正なメモリカードからのものであるか否かを決定する（決定ブロック５１００）。
メモリカードが真正であることが証明できない場合には、ソフトウェアは、終了し、インストールを阻止し、及び／または、実行を制限するように指示されることができる（実行ブロック５１５０）。例えば、デモモードを実行するように指示される。
メモリカードが真正であることが証明される場合には、ソフトウェアのインストールあるいは実行を継続する（実行ブロック５２００）。
【００２７】
プログラムは、ＣＩＤレジスタ内の６つのデータフィールドと、使用されるＭＭＣ  ＲＯＭあるいはフラッシュメモリカードが真正であることを決定するためのＣＳＤレジスタからの３つを検査可能である。
【００２８】
これらのフィールドは、以下のとおりである。
ＣＩＤレジスタフィールド
１．ＭＩＤ（Manufacture  ID：製造者ＩＤ）フィールドは、管理される８ビットの２進数であり、マルチ−メディアカード協会（Multi-Media  Card  Association“ＭＭＣＡ”）によって各製造者に割り当てられる。他の製造者のＭＩＤの使用は、厳しく禁止されており、不従順に対しては、ＭＭＣＡによる法律上の訴訟を受ける。許可されたＭＭＣ読み取り専用メモリ（“ＲＯＭ”）カード製造者のＭＩＤは、カードの真正に対する良好な第１のデータ検査である。
２．ＯＩＤ（ＯＥＭ  ＩＤ）フィールドは、管理される１６ビットの数であり、ＭＭＣＡにより割り当てられる。この数は一般的には使用されないが、要求される場合は、ＭＭＣＡによって、単一の数がコンテンツ製造者に割り当てられる。
３．ＰＮＭ（Product  Name：製品名）フィールドは、管理され、ＭＭＣ  ＲＯＭの製造者により割り当てられる。このフィールドは、ＭＭＣＡ仕様書毎に“書き込み可能”ではない。また、商業的に入手可能なＭＭＣフラッシュカードは、それを複写することができない。
４．ＰＲＶ（Product  Ｒevision：製品修正）フィールドは、管理され、ＭＭＣ  ＲＯＭ製造者により割り当てられる。このフィールドは、ＭＭＣＡ仕様書毎に“書き込み可能”ではない。また、商業的に入手可能なＭＭＣフラッシュカードは、それを複写することができない。
５．ＰＳＮ（Product  Serial  Number：製品シリアルナンバー）フィールドは、管理され、ＭＭＣ  ＲＯＭ製造者により割り当てられる。このフィールドは、ＭＭＣＡ仕様書毎に“書き込み可能”ではない。また、商業的に入手可能なＭＭＣフラッシュカードは、それを複写することができない。付加的に、各ＭＭＣフラッシュカードは、２つのＭＭＣフラッシュカードが同一とならないように、ＭＭＣフラッシュ製造者により割り当たられる。このフィールドのキーオフは、単独で、コンテンツ製作者に対する十分な保護となり得る。
【００２９】
ＣＳＤレジスタフィールド
１．ＣＣＣ（Card  Command  Class：カードコマンドクラス）フィールドは、ＭＭＣ  ＲＯＭカードが、クラス２以上のコマンドクラスをサポートしないため（ＭＭＣフラッシュカードがそうである）、ＭＭＣ  ＲＯＭの識別に対して有用である。
２．カードの大きさは、計算可能であり（装置サイズ、装置サイズ乗数、読み出しブロック長）、また、それは、分配に対して使用される真正なＭＭＣ  ＲＯＭカードの大きさに釣り合わせる必要がある。
上記データ検査ポイントあるいはそれらの任意の組み合わせの全ては、使用されるＭＭＣカードが真正であることを確認するために用いることができる。
【００３０】
いくつかのオペレーティングシステム（ＯＳ）は、上記データフィールドの全てを、コンテンツ製造者のアプリケーションに送ることができないことが指摘される。製造者は、ターゲットである特定のＯＳプラットフォームに対して使用可能なアプリケーションプログラミングインターフェース機能呼び出しを調査するように勧められる。
【００３１】
前述したように、本明細書に記載されている種々の実施の形態は、一連の指示により構成されるコンピュータプログラムの形態をとってもよい。これらの指示は、ＭＭＣ及びＳＤメモリカードに加えて、他のコンピュータ使用可能な媒体に供給可能である。それらは、例えば、フロピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の光学媒体、パンチカード、紙テープ、ホールパターンを有する他の物理媒体、ＲＡＭ、ＲＯＭ、ＰＲＯＭ（すなわち、プログラム可能な読み出し専用メモリ）、フラッシュＥＰＲＯＭを含むＥＰＲＯＭ（すなわち、消去可能でプログラム可能な読み出し専用メモリ）、他のメモリチップあるいはカートリッジ、搬送波、他の媒体を含んでいる。
【００３２】
本発明の特別な実施の形態が開示及び説明されているが、本発明が、好ましい実施の形態に制限されないことが理解される。また、当業者にとって、種々の変更及び修正が、本発明の精神及び概念から逸脱しない範囲内で可能であることは明らかである。したがって、本発明は、請求項によって定義されている本発明の精神及び概念の範囲内に含まれる、代替、修正及び均等を包含する。
【図面の簡単な説明】
【００３３】
【図１】本発明の好ましい実施の形態に対応するファイルディレクトリを説明する図である。
【図２】本発明の実施の形態に対応するインストール処理のフローチャートである。
【図３】本発明の実施の形態に対応するプログラムのフローチャートである。
【図４ａ】本発明の実施の形態に対応するプログラムのフローチャートである。
【図４ｂ】本発明の実施の形態に対応するプログラムのフローチャートである。
【図４ｃ】本発明の実施の形態に対応するプログラムのフローチャートである。
【図５】本発明の実施の形態に対応するソフトウェア保護方法のフローチャートである。
【図１】
2006522966.tif 000003
【図２】
2006522966.tif 000004
【図３】
2006522966.tif 000005
【図４ａ】
2006522966.tif 000006
【図４ｂ】
2006522966.tif 000007
【図４ｃ】
2006522966.tif 000008
【図５】
2006522966.tif 000009