JP5025901B2 - インストールするのに有効な依存ソフトウェア更新の最大の群の判定 - Google Patents

インストールするのに有効な依存ソフトウェア更新の最大の群の判定 Download PDF

Info

Publication number
JP5025901B2
JP5025901B2 JP2004355667A JP2004355667A JP5025901B2 JP 5025901 B2 JP5025901 B2 JP 5025901B2 JP 2004355667 A JP2004355667 A JP 2004355667A JP 2004355667 A JP2004355667 A JP 2004355667A JP 5025901 B2 JP5025901 B2 JP 5025901B2
Authority
JP
Japan
Prior art keywords
package
node
update
graph
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004355667A
Other languages
English (en)
Other versions
JP2005182784A (ja
Inventor
ディー.グラウム ジェフリー
イー.マークリー マイケル
アール.シェル スコット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005182784A publication Critical patent/JP2005182784A/ja
Application granted granted Critical
Publication of JP5025901B2 publication Critical patent/JP5025901B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

本発明は、一般には、組み込みオペレーティングシステムを有するようなコンピューティング装置に関し、より詳細には、コンピューティング装置の不揮発性ストレージの更新に関する。
携帯情報端末、現代の携帯電話、ハンドヘルドコンピュータ、ポケットサイズコンピュータなどのモバイルコンピューティング装置は、重要で一般的なユーザツールになりつつある。一般に、そうしたコンピューティング装置は、小型化されて極めて簡便になっており、さらに、消費するバッテリ電力は低減し、同時により高性能なアプリケーションの実行が可能になっている。
そのような装置を製造する過程で、通例組み込みオペレーティングシステムイメージがモノリシックなイメージファイルに作成され、各装置の不揮発性ストレージ(例えばNAND型またはNOR型のフラッシュメモリ、ハードディスクなど)に記憶される。その結果、そのような装置を時折更新することが必要となるか、あるいは望ましい。
しかし、モノリシックなオペレーティングシステムには、更新をインストールするためにモノリシックイメージ全体を入れ替えるために多量のリソース(例えば一時的ストレージや帯域幅)が必要とされることなどのいくつかの欠点がある。同時に、装置上の既存のパッケージインストール状態は変化する可能性があり、インストールのために待ち行列にある複数バージョンのパッケージがいくつもある可能性があるため、オペレーティングシステムの一部である下位群(subset)コンポーネントをインストールすることは困難な作業である。現在のところ、装置上のインストールされたイメージを照会して何をインストールすべきかを判断することができる、周知のインテリジェントなイメージ更新サーバインフラストラクチャは存在しない。しかし、そのようなサーバインフラストラクチャを開発することができたとしても、装置のインストール状態情報をサーバと共有することにはプライバシーの問題が伴うことが考えられる。必要とされるのは、多くの更新バージョンと、それらバージョン間の競合と依存性に対処することができる、装置側のデバイス更新に対応する効率的な方式である。
簡潔に述べると、本発明は、(例えば組み込み装置に)インストールするパッケージ群の依存関係を調べるシステムおよび方法に関し、それにより、インストールの候補の最大の群を選択して、可能な限り少ない更新ステップで所与のパッケージの最大のバージョン更新を行うことが可能になり、同時にパッケージの依存性の制約を遵守する。これは、装置の既存パッケージのインストール状態と、インストールするためにキューに入れられた複数のバージョンのパッケージとの両方を知ることによって達成される。
インストールしようとするパッケージはいずれも初めに有効性が確認される。有効性の確認とは、インストールのためにキューにあるパッケージの完全性を検討し、内容を検証し、更新の権限が(署名機構から)判定され、依存関係が判定されるプロセスを言う。一実装では、有効性の確認プロセスの結果は、確認の必要条件を満たすためにインストールすることができるパッケージのリストと、無効の理由を伴う、検証要件の1つまたは複数を満たさないためにインストールすることができないパッケージのリストとの2つのリストからなる。これらのリストは、インストールの順序に並べ替えることができる。
提供される更新バリデータ/妥当性検証プロセスは、一般に、装置にダウンロードされた更新パッケージ群を更新される対象パッケージに基づくグループに編成し、妥当性を検証する。各グループを処理して、装置の既存イメージに適用し、更新を行うことのできる最小かつ最適なパッケージ群を決定する。最小かつ最適なパッケージ群を決定するために、(対象パッケージに相当する)基本ノードから各葉ノードに複数のパスを有することができるグラフとしてパッケージを編成する。このグラフにより、パッケージ群を通る最適なパスを決定することが容易になり、それにより既存のデバイスパッケージを、最低のコストの(加重)更新を有する更新群の中で指定される各パッケージの更新可能な最新バージョンに更新することができる。そのため、グラフを作成すると、そのグラフを探索して(walk)種々の妥当性検証を行う。さらに、同じバージョンに2つ以上のパスが通っている場合に最小の重み(コスト)を有し、装置を更新することができるより新しいバージョンを見つけることを試みる。
一実装では、妥当性検証プロセスは、例えば更新アプリケーションによって呼び出されるアプリケーションプログラミングインタフェースとしてアクセス可能である。妥当性検証プロセスは、(デバイスマニフェストファイルはパッケージを記述する)各パッケージのデバイスマニフェストファイルを探し、見つかると、そのパッケージが(そのパッケージの代表ノードとして)パッケージグラフに追加される。各マニフェストファイルが処理されると、グラフを処理することにより証明書情報を探す。グラフの処理には、親ノードの証明書チェーンを確認し、対応する枝が有効でなければ親ノードのツリーからその枝を切るステップが含まれる。署名照会を兼ねてグラフの枝とノードが処理されると、重みが最低の枝を判定し、呼び出し元エンティティに返される更新リストにその枝が追加される。
他の利点は、図面を参照して行う以下の詳細な説明から明らかになろう。
(例示的動作環境)
図1に、そのようなハンドヘルドコンピューティング装置120の機能構成要素を示す。この構成要素には、プロセッサ122、メモリ124、ディスプレイ126、およびキーボード128(物理的なキーボード、仮想キーボード、あるいは両方)が含まれる。オーディオ入力を受信するマイクロフォン129がある場合がある。メモリ124には、一般に、揮発性メモリ(RAMなど)と不揮発性メモリ(例えばROM、PCMCIAカードなど)との両方が含まれる。マイクロソフト社のWindows(登録商標)オペレーティングシステムや他のオペレーティングシステムなどのオペレーティングシステム130がメモリ124に常駐し、プロセッサ122で実行される。
1つまたは複数のアプリケーションプログラム132がメモリ124にロードされ、オペレーティングシステム130上で実行される。アプリケーションの例には、電子メールプログラム、スケジュール管理プログラム、PIM(個人情報管理)プログラム、ワードプロセッシングプログラム、表計算プログラム、インターネットブラウザプログラムなどが含まれる。ハンドヘルドパーソナルコンピュータ120は、メモリ124にロードされた通知マネジャ134も含むことができる。通知マネジャ134は、プロセッサ122で実行され、例えばアプリケーションプログラム132からの通知要求に対応する。また、後述のように、ハンドヘルドパーソナルコンピュータ120は、ハンドヘルドパーソナルコンピュータ120をネットワークに接続するのに適したネットワーキングソフトウェア136(例えば、ハードウェアドライバなど)とネットワークコンポーネント138(例えば、ラジオおよびアンテナ)とを含む。ネットワークへの接続には、通話を行うことが含まれる。
ハンドヘルドパーソナルコンピュータ120は、1つまたは複数のバッテリとして実装される電源140を有する。電源140はさらに、ACアダプタや電力が供給されるドッキングクレードルなど、内蔵バッテリをオーバーライドまたは充電する外部電源を含むことができる。
図1のハンドヘルドパーソナルコンピュータ120には、3種類の外部通知機構、すなわち1つまたは複数の発光ダイオード(LED)142とオーディオジェネレータ144とを図示している。これらの装置は、直接電源140に結合されることができ、起動すると、ハンドヘルドパーソナルコンピュータのプロセッサ122と他のコンポーネントがバッテリ電力を節減するために電源を停止されていても、通知機構によって指定された時間の間電源の入った状態を保つ。LED142は、ユーザが動作を行うまで常に電源が入った状態を保つことが好ましい。現在のバージョンのオーディオジェネレータ144は、現在のハンドヘルドパーソナルコンピュータのバッテリ容量に対して消費電力が大きいので、システム休止のとき、または起動後いくらかの時間が経ったとき電源が切れるようにオーディオジェネレータ144を構成する。
図に示す基本的なハンドヘルドパーソナルコンピュータは、本発明を実施する上では、データを受信して、そのデータをプログラムした任意の方式で処理することができる携帯電話などの任意の装置と同等であることに留意されたい。
(インストールに有効なソフトウェア更新の判定)
本発明は、一般に、初期のソフトウェアまたはソフトウェア更新が組み込み装置のフラッシュメモリなどの不揮発性メモリに書き込まれる装置を含む、Microsoft Windows(登録商標)CE.NETに基づく携帯装置などの小型のモバイルコンピューティング装置に記憶されたソフトウェアの更新を対象とする。それでも、本発明は、コンピューティング全般に利益を提供し、したがって、他のコンピューティング装置と、ハードディスクドライブなどの各種のメモリおよび/または他の種類の記憶媒体を含む他の種類のストレージに適用することが可能である。説明を分かりやすくするため、以降の「フラッシュ」という用語は、装置の更新可能なストレージに関するものとして用いるが、任意の記憶機構が装置の更新可能なストレージと同等であることを理解されたい。さらに、「イメージ」という用語は一般に、既存イメージの一部のみが更新される場合であっても、初期のソフトウェアインストールイメージと、その後行われるイメージへのソフトウェア更新との概念を含む。
本発明の一態様によれば、自己完結したセキュアなエンティティの形態において利用可能なソフトウェア更新の適切な下位群が、組み込み装置の不揮発性ストレージに、効率的でインテリジェントな(かつフェールセーフな)方式で適用される。完全に全て入れ替える更新と、以前の更新への変更部分のみを含むことができる更新とを含む、各種のソフトウェア更新を適用することができる。これらのソフトウェア更新は、実行可能コードとデータの両方を含むことができ、実行可能コードは、インストール時の組み込み装置の仮想アドレス空間環境に合わせて個別に設定されている。
モノリシックな更新と異なり、初期の製造イメージが装置にインストールされると、そのイメージの更新を、本発明を介してイメージの個別の部分を更新することによって行うことができる。一実施形態において、これらの個別の部分はパッケージにカプセル化され、ここでパッケージは、イメージファイル(コード、データ、スクリプトなど)の自己記述型の群であり、署名されて、配布のためにパッケージ化されたコンポーネント群から構成されることができる。この実施形態では、オペレーティングシステムイメージ全体は、1つまたは複数のパッケージから作成され、各パッケージを、各パッケージの要件に応じて、個別に、または他のパッケージと合わせて更新することができる。
パッケージは、「標準(canonical)」、「デルタ/差分」および「スーパー」形態を含む各種方式で構成することができ、それぞれの形態は、ソフトウェア更新に関して各種の目的を果たす。例えば、標準パッケージがパッケージ中の各ファイルの完全なコピーを含むのに対し、デルタ/差分パッケージは、そのファイルの以前の改定に基づくバイナリ差分のみを含む1つまたは複数のファイルを含む。デルタ/差分パッケージは、すでにインストールされている以前のバージョンに適用され、したがって通例は他のパッケージと比べてサイズが小さく、ダウンロードのコストとダウンロード時間を減らすために用いられる。スーパーパッケージは、他のパッケージを含み、相互に依存したパッケージを更新する場合など複数のパッケージをダウンロードすることが必要なときに利便を図るものとして用いられる。
標準パッケージは、オペレーティングシステムの機能とメタデータ(例えば特定のアプリケーションの実行可能なコードと、それに関連付けられたデータと構成情報)をパッケージの定義と関連付けることにより、作成プロセス中に生成される。デルタ/差分パッケージは、2つの標準パッケージの内容にバイナリ差分アルゴリズムを適用し、後述するように本発明に従って、デルタ/差分パッケージが、基となる標準パッケージバージョンとの依存関係を考慮することにより標準パッケージから生成される。
本発明の一態様によれば、装置にダウンロードされた更新パッケージ群を編成し、検証する更新バリデータ/妥当性検証プロセスが提供される。このプロセスの最初のステップで、更新する対象パッケージに基づいて、パッケージを一貫性のあるグループに編成する。パッケージをグループに編成すると、各グループを処理して、装置に存在するイメージに適用して更新を行うことができる最小かつ最適なパッケージ群を判定する。一貫性のあるグループは各々、装置上の同じ既存パッケージを対象とするパッケージ群からなる。新しいパッケージは各々、異なる基本バージョンを有し、異なる対象バージョンに適用することができる。
最小かつ最適なパッケージ群を決めるために、基本ノード(対象パッケージに相当する)から各葉ノードに複数のパスを通すことのできるグラフとしてパッケージを編成する。これは、このグラフを構成するパッケージ群を通る最適なパスの決定を容易にする。各グループを処理して、グループ中でインストールすべき最適なパッケージ群を判定し、それにより、更新群の中で指定される各パッケージの更新可能な最新バージョンに既存のデバイスパッケージを更新する。
各種の要素が、この処理の結果に影響する。例えば、依存性または署名を検証することができない場合は、その更新の枝がグラフから除去され、可能な枝があれば別の枝が試みられる。更新すべきデータの量によって、より効率的な枝が決まる。標準パッケージを使用せずに(すなわち、可能性としては複数のパッケージ中の少なくともいくらかのデルタを介して)更新を行う方式はいずれも、標準パッケージの各ファイルを書き込む(例えば明滅する(flash))よりも効率的である可能性が高いので、標準パッケージは有限の重みを有するとみなすことに留意されたい。またはそれに替えて、標準パッケージに関して実質的な重みを有することが可能である。
したがって、NK(カーネル)パーティションか、またはシステムパーティションに各パッケージのグラフが作成され、パーティションは基本的に異なるファイルシステムであり、異なるプロパティを有することができ、これらのパーティションにパッケージの内容を記憶することができる。これについては、上述の「Creating File Systems Within a File In a Storage Technology-Abstracted Manner」という名称の関連特許出願に概説される。NKパーティションに入れられる内容を有するパッケージは、IMGFSパーティションに内容が入れられるパッケージと同じ種類のパッケージであることに留意されたい。ただし、オペレーティングシステムのロード/ブートシーケンスは、NKパーティションが最初にロードされ、NKパーティションのドライバを使用してIMGFSパーティションファイルを見つけ、ロードする点でIMGFSパーティションに対するNK更新とシステム更新とで異なる。
各更新パッケージについてのノードが、対応するパッケージのグラフに追加される。次いで、パッケージマニフェストに規定されるバージョンの依存関係を用いてグラフ中のノードを接続し、例えば、あるパッケージのバージョン2がパッケージのバージョン1をアップグレードすることができ、バージョン3がバージョン2をアップグレードすることができ(バージョン1はアップグレードしない)、それにより、バージョン1とバージョン2の間、バージョン2とバージョン3の間にエッジ接続が生じるが、バージョン1とバージョン3の間にはエッジ接続が生じない。上記のバージョン間の関係は一例に過ぎず、この関係は実際には、更新の構築の仕方に依存することを理解されたい。例えば、バージョン1のパッケージから更新されるバージョン3のパッケージを構築することが可能である。一般に、各更新パッケージは、特定のソースバージョンと特定の宛先(最終)バージョンとを有して、そのソースバージョンのみから更新することができる(ソースバージョンは必ずしも宛先バージョンの1つ前のバージョンとは限らない)。標準更新パッケージは、それより前のバージョンであればどのバージョンでも更新できることに留意されたい。
グラフを作成すると、例えば下記のように署名を検証するためなど各種の妥当性検証の目的でそのグラフを探索する。一般に、グラフ探索プロセスでは、各グラフのパスを全探索して、少なくとも同じバージョンに2つ以上のパスが通っている場合に最小の重み(コスト)を有し、装置を更新できるより新しいバージョンを見つけることを試みる。探索する際、あるノードが妥当と認識されない場合には、そのノードとそのパスは基本的にグラフから除去される。
上述の関連特許出願「Self-Describing Software Image Update Components」に記載されるパッケージマニフェストに関して、各パッケージの種類は、そのパッケージの内容と、(依存性情報を含む)より一般的なパッケージの特性の両方を完全に記述する(例えば.dsmの拡張子を有する)装置側マニフェストファイルを含んでいる。図2に、マニフェストファイルのレイアウトを表す。
下の表から分かるように、デバイスマニフェストのヘッダは、その特定のパッケージの系統を一意に参照するグローバル一意識別子(GUID)と、特定のパッケージファイルを参照するバージョンを含んでいる。
Figure 0005025901
Figure 0005025901
これも見て分かるように、デバイスマニフェストヘッダは、現在のパッケージが依存しているパッケージのリストであり、各パッケージは、次の構造で記述される。
Figure 0005025901
それぞれがGUIDで一意に記述されるパッケージはいくつあってもよく、パッケージのすべてのバージョンは同じGUIDを共有する。パッケージの依存の規則から、あるパッケージの依存するパッケージが、依存性リストで識別されるバージョン番号であるか、それより上の番号であることが求められる。パッケージは、指定されるバージョンがすでに装置にインストールされているか、またはインストールがまだ行われておらず、その依存性が満たされる(したがってそれがインストールされることが確実となる)場合、そのバージョンであるか、またはそのバージョンより上のバージョンである。
一実施形態では独自フォーマットのバイナリファイルである、装置側マニフェストファイルの情報へアクセスするために、共通のパッケージ情報API(PackageInfoAPI)が提供される。本発明は、パッケージ情報APIを用いて、装置上のパッケージ、およびインストールが可能なためにキューに入っているパッケージの現在のインストール状態を判定する。APIは、ビルドシステムAPIならびに組み込み装置APIとして存在して、パッケージファイル群のデバイスマニフェストファイルを効果的に解析する。一般に、パッケージ情報APIは、装置上の既存のパッケージの列挙、特定のパッケージについてのシャドーオーダー情報(下記で説明する)の列挙、特定パッケージの依存性情報の列挙、および特定のパッケージに属するファイルのファイル名のリストの列挙を行う能力を提供する。パッケージ情報APIはまた、ファイルシステムに装置側マニフェストとして記憶されているファイルを開く能力を提供し、特定のパッケージ中から装置側マニフェストを開いて、特定パッケージのパッケージ情報(例えば_PACKAGEINFO)を取り出す。パッケージ情報APIはインターフェースも提供し、そのファイルへのパスを与えられて特定ファイルのCRC32の値を計算して、そのパッケージへのパスを与えられて特定パッケージのCRC32値を計算する。PackageInfoAPIコンポーネントは、下記で述べるAPIの実装を含む。
以下のAPI群は、PackageInfoAPIとの外部インタフェースを定義する。データ型が以下のように記述される:
・HPKGENUM−特定のパッケージ列挙群を識別するために使用される不透明データ型。
・HPKG−一意のパッケージを表すために使用される不透明データ型。
・HRESULT−標準的なCOMリターン型。
・REFGUID−GUID構造への参照。
・LPTSTR−TCHARストリングへのポインタ。
・HFILEENTRY−FILEENTRY情報を呼び出し元プログラムに渡すために用いられる不透明データ型。
次のAPIは、最初の有効な(有効==悪意のある「偽者」でない)パッケージを見つけ、そのパッケージ情報を取り出すのに必要なハンドルを提供する。
HRESULT Pkg_FindFirstPackage(
/*[out]*/HPKGENUM *phPkgEnum,
/*[out]*/HPKG *phPkg);
次のAPIは、次の有効なパッケージを見つけ、そのパッケージ情報を取り出すのに必要とされるハンドルを提供する(S_FALSEは列挙の終わりを意味する)。
HRESULT Pkg_FindNextPackage(
/*[in]*/ HPKGENUM hPkgEnum,
/*[out]*/HPKG *phPkg);
次のAPIは、パッケージ列挙子を閉じる。
HRESULT Pkg_FindClose (/* [in] */ HPKGENUM hPkgEnum);
次のAPIは、装置側マニフェストファイルを「開き」、指定されたGUIDが、パッケージ情報を取り出すのに必要なハンドルを提供する。これは、FindFirstPackage/FindNextPackage APIの使用に代わる方法である。
HRESULT Pkg_OpenPackageByGUID(
REFGUID guidPkg,,
/* [out]*/ HPKG *phPkg);
次のAPIは、装置側マニフェストファイルを「開き」、指定された名前がパッケージ情報を取り出すのに必要なハンドルを供給する。これは、FindFirstPackage/FindNextPackage APIの使用に代わる方法である。

HRESULT Pkg_OpenPackageByName(
LPCTSTR szFileName,,
/* [out] */ HPKG *phPkg);

//(先にPkg_FindFirstPackage、Pkg_FindNext
//Package、またはPkg_OpenPackageByGUIDで開かれ
//た)パッケージを「閉じる」
HRESULT Pkg_Close (HPKG hPkg);

//シャドーパッケージを列挙する。S_FALSEは列挙の終了を意味する
HRESULT Pkg_GetNextShadowedPackage (HPKG hPkg, /*
[out] */ GUID *pguidShadowedPkg);

//指定されたパッケージのGUIDの依存性の列挙を開始する
HRESULT Pkg_GetFirstDependentPackage(
HPKG hPkg,
/* [out] */ GUID pguidDependentPkg,
/* [out] */ DWORD*
pdwDependentPackageVersion);

//所与のパッケージのGUID依存性の列挙を続ける。S_FALSEは列挙の終
//了を意味する。

HRESULT Pkg_GetNextDependentPackage (HPKG hPkg, /*
[out] */ GUID *pguidDependentPkg, /* [out] */ DWORD
*pdwDependentPackageVersion);

//パッケージにリストされるファイルの列挙を開始する。バッファの大きさが十分
//でない場合(またはNULLの場合)は、cbSizeを、最後のNUL文字も
//含めて必要とされるバッファサイズに設定する
HRESULT Pkg_GetFirstFile(
HPKG hPkg,
/* [out] */ LPTSTR pszFileName,
/* [in/out] */ DWORD *cbSize);

//パッケージ中のファイルを列挙する。S_FALSEは列挙の終了を意味する
HRESULT Pkg_GetNextFile (HPKG hPkg, /* [out] */
LPTSTR pszFilename, DWORD cbSize);

//パッケージの一回限り発生する情報を取得する
HRESULT Pkg_GetPkgInfo (HPKG hPkg, /* [out]*/
PPACKAGEINFO pPackageInfo);

//指定されたファイルをDSMファイルとしてマッピングする。ファイルがDSM
//ファイルでない場合はE_FAILを返す
HRESULT PkgInfo_OpenByName (LPCTSTR szFullName);

//指定されたパッケージに特定のファイルが含まれているかを判定する。名前付き
//ファイルがパッケージの一部分である場合は、HFILEENTRYが非NUL
//Lになる
HRESULT Pkg_ContainsFIle(
HPKG hPkg,
LPTSTR szFileName,
/* [out] */ HFILEENTRY ** pFileEntry);

//指定されたパッケージのヘッダを検証する
HRESULT Pkg_ValidateHeader(
HPKG hPkg,
DWORD dwFileSize);

//指定されたパッケージのCERTデータをバッファにコピーする。バッファの大
//きさが十分でない、またはNULLの場合は、pcbBufferSizeが必
//要とされるサイズに設定される

HRESULT Pkg_GetCERTData(
HPKG hPkg,
LPVOID lpBuffer,
DWORD* pcbBufferSize);

//CRC計算のAPI(このAPIを試験で使用して、例えば装置に記憶さ
//れたCRCに照らして検証する)
HRESULT Pkg_CalculateFileCRC (
LPCTSTR pszFilename,
/* [out] */ DWORD *pdwCRC);

HRESULT Pkg_CalculatePackageCRC(
LPCTSTR pszPackageName,
/* [out] */ DWORD *pdwCRC);

//CABを開き、DSMを抽出し、DSMをマッピングする。ファイルが存在しな
//い場合、またはDSMでない場合はE_FAILを返す
FRESULT PkgInfo_ExtractFrom (LPCTSTR szCABFile);

//CABAPIによって返されたHCABを得て、DSMを見つけ、抽出し、マッ
//ピングする。ファイルが存在しない場合、またはDSMでない場合にはE_FA
//ILを返す
HRESULT PkgInfo_ExtractFromHCAB (HCAB hCab);
本発明の一態様によれば、インストールしようとするパッケージはいずれも最初に妥当性を検証される。パッケージの妥当性の検証とは、インストールのためにキューにあるパッケージの完全性を検討し、その内容を検証し、更新の権限を(署名機構から)判定し、そして依存関係を判定するプロセスを言う。一実施形態では、妥当性検証プロセスの結果として、2つのリストを備える。すなわち、検証の要件を満たすのでインストールすることができる1つまたは複数のパッケージのリスト、および各パッケージの無効の理由を伴う、検証の要件の1つまたは複数を満たさないためにインストールすることができない1つまたは複数のパッケージのリストである。これらのリストは、インストールの順序に並び替えられることができる。これらのリストは、デルタが適用される場合、必要とされるファイルがいずれも存在することを保証することに加えて、サイズを検討することによって決め、断片化を減らし、更新を行うのに十分なスペースを確保することができる。図3Aおよび3Bに、妥当性検証プロセス全体を説明するフローチャートを示す。
一実施形態では、妥当性検証プロセスは、例えば更新アプリケーションによって呼び出されるAPIとしてアクセスすることができる。検証しようとする更新のファイル名で呼び出され、そのインストールデータを返す関数と、呼び出し元プログラムが更新パッケージの格納されているディレクトリへパスを通す関数との2つの関数がある。説明を簡略化するために、ここでは、更新は一般にはディレクトリとして考える。
図3Aおよび3Bで、例えば1つまたは複数のインストールすべきパッケージを含んだディレクトリを与えられると、いくつかの試験を行ってパッケージをインストールすることができるか否かを判定する。ステップ300で、パッケージのディレクトリを取り出し、試験することにより、そのディレクトリが存在するか否か(ステップ302)、およびそのディレクトリがファイルを含むか否か(ステップ304)を判定する。ディレクトリが存在しない場合、またはファイルを含まない場合は、ステップ306を介してエラーメッセージが返され、妥当性検証プロセスは終了する。
ディレクトリが存在し、少なくとも1つのファイルがその中にある場合、ステップ308から322がループして各ファイルに繰返し行われ、各ファイルに試験を行う。ステップ310でそのファイルが適切なファイル型のパッケージファイルであるかどうかを試験する。適切なファイル型である場合は、ステップ312で、そのパッケージから装置側マニフェストファイル(DSM)を抽出することを試みる。より詳細には、一実施形態では、CABAPIを使用して、CABファイルとしてファイルを開くことを試みる。それが成功した場合は、DSMの抽出を試みる。ファイルをCABファイルとして読み込めない場合は、CABファイルとして指定されたファイル名を読み込めなかったことを示すHRESULTエラーコードとともに、その名前が不良パッケージのリストに記録される。DSMを抽出することができない場合は、そのCAMにDSMがなかったことを表すHRESULTエラーコードとともに、そのファイルの名前が不良パッケージのリストに記録される。CABファイルでない場合、またはデバイスマニフェストファイルが見つからないとステップ314で評価される場合は、残るパッケージファイルがなくなるまで、次のパッケージファイルを選択して、試験する。
装置側マニフェストファイルが見つかると、ステップ316を介してそのパッケージを(例えばそのパッケージを代表するノードとして)パッケージグラフに追加する。ステップ318の試験が成功しない場合は、ノードを作成できなかった結果として妥当性検証プロセスは(ステップ320で)終了する。
各ファイルが処理されたとき、ディレクトリ内の少なくとも1つのファイルがデバイスマニフェストファイルを有するパッケージファイルであった場合にはグラフは空でないはずである。グラフが空の場合(ステップ324)、どのファイルも妥当なパッケージではなく、プロセスはステップ326で終了する。そうでない場合、プロセスは図3Bのステップ328に続く。
図3Bのステップ328(とステップ348と)は、グラフ中の各枝を処理するループに相当し、ステップ330(とステップ344と)は、現在処理中の枝の各ノードを処理する入れ子ループに相当する。一般に、この処理では証明書情報を探し、これには、ステップ332と334を介して親ノードの証明書チェーンを調べ、見つからない場合はステップ336で親ノードからツリーの対応する枝を切ることが含まれる。
証明書情報が見つかった場合は、ステップ338および340を介して署名を検証する。証明書情報が見つかった場合は、(同じ結果を得る2つ以上のパスが通っている場合、他のパッケージと比較してどのパッケージを用いるかを決めるので、効率性を評価するために用いられる)重みデータをステップ342でノードに基づいて枝に加え、ステップ344を介して、残るノードがなくなるまで次のノードが選択される。加重情報は、パッケージが読み込まれるときに計算され、パスが作成されるときにそのパスの重みに加えられる。初期のグラフ構造は、パッケージが妥当であり、したがって署名情報を更新群内のすべてのパッケージに対して検証するのではなく、プロセスが使用したいパッケージについてのみ検証すればよいという前提の下で機能し、この前提により署名の検証回数が減る場合もある。ステップ340で署名が有効でない場合、ステップ346で現在のノードからその枝を切る。
このようにしてグラフの枝とノードの処理が完了すると、ステップ350で表すようにグラフを探索して、加重が最も低い枝を見つけ、返される更新リストにその枝を追加する。
本発明の一態様によれば、この妥当性検証プロセスは、インストールするのに妥当な最大の依存ソフトウェア更新の判定を可能にするバージョン依存性計算の要件を提供する。図4のブロック図で表すように、妥当性検証プロセス402は、更新整理コンポーネント404を含む、判定を行う各種コンポーネントに関連する(あるいはそれらのコンポーネントを含むと考えることができる)。更新整理コンポーネント404は、更新群408として装置にダウンロードされたパッケージ群のグラフ406を作成し、パッケージマニフェスト410から依存性情報を抽出して、他のパッケージ412が正しいバージョンで装置に(またキュー内のインストールパッケージ414に)存在することを確かめる。また、更新整理コンポーネント404は、既存のデバイスマニフェストファイル410と新たなデバイスマニフェストファイル412を解析して、依存性の要件に基づいてパッケージのインストール順序を生成する役割を担う。
図5Aおよび5Bは、妥当性検証プロセスの更新整理プロセスを説明するフローチャートである。一般に、以前にインストールされたパッケージに対応する各既存のデバイスマニフェストファイルに対して、何らかの初期化および妥当性の検証を行うと(ステップ500、502、504)、装置で保持されているパッケージのデバイスマニフェストファイルで定義されるように、そのパッケージを表すパッケージグラフが更新整理プロセスによって作成される。妥当性検証プロセスでは、パッケージ情報APIを使用して既存のデバイスマニフェストを列挙できることに留意されたい。ステップ506で更新ディレクトリ内のパッケージがそのパッケージに適した基本グラフに加えられる。但し、適したグラフが存在しない場合、新しいパッケージ用のグラフが作成されるが、このグラフは非基本グラフとしてタグ付けされる。ノードは、マニフェストおよびパッケージに基づく情報を含んでおり、追加されると、バージョン情報を求めてグラフ内の他のノードを参照して、そのパッケージが更新することのできるバージョンに基づいて接続するノードを判定する。グラフに追加されるパッケージを更新することが可能な孤立ノードがグラフにある場合があることに留意されたい。グラフ作成プロセスは、グラフを構成するノードを探索し、新しいノードを更新することができる既存のノードがグラフに存在すれば適切なリンクを追加する。
インストールすべきパッケージが追加されると、パスを評価し、ファイルの妥当性の検証を行うために各グラフが探索される。グラフ中のパスは、ノードがグラフに追加されるときにリアルタイムで作成されることに留意されたい。下記で図6を参照して述べるように、パッケージが読み込まれると、更新バリデータは、各グラフを探索して、グラフに利用できるパス群から最適なパスを探す。グラフに用いるパスが選択されると、そのパス中のノードについての署名が検証される。特定ノードの署名が有効であると確認できない場合、無効なノードから始まるそのパスが切断され、次いでパス選択プロセスがそのグラフについて再度実行される。このプロセスは、あるパス中のノードが有効な署名を有すると判定されるか、または所与のグラフについて処理するパスがそれ以上なくなるまで反復される。
ステップ514で処理が成功した場合、更新整理プロセスは、図5Bのステップ518を続け、作成された各パッケージグラフについて、そのパッケージがNKパーティションの一部である場合は、ステップ522を介してパッケージ情報をNKリスト416(図4)に追加する。パッケージがNKパーティションの一部でない場合は、そのパッケージを他のリスト418(図4)に加える。すべてのパッケージグラフが処理されると、ステップ532を介して他のリスト418をNKリスト416に付け足す。この付け足しが成功したとステップ534で評価される場合、NOERROR状態は、付け足されたNKリスト416と無効リスト420とともに戻される。
妥当性検証プロセス402の別の部分は、更新グラフを構築することを対象とし、装置の更新を構成するパッケージのグラフを作成する役割を担う更新グラフコンポーネント422によって達成される。装置にすでに存在する各パッケージを使用して独立グラフの基本ノードを作成する。一実施形態では、各パッケージは、パッケージノードオブジェクトによって表される。本実施形態では、各ノードオブジェクトは、ただ1つのパッケージグラフオブジェクトに含まれることに留意されたい。
図6にグラフ作成プロセスを示す。一般に、更新グラフ424(図4)は、ノードオブジェクト436の配列とエッジオブジェクト428の配列を含む2つの配列を含んでいる。エッジオブジェクトはノードを相互に接続する。新しいパッケージがグラフに追加されると、ステップ600に表すように、そのパッケージについてのノードオブジェクトが作成され、ノード配列426に追加される。ステップ602でノードが作成されないと評価される場合、このプロセスは失敗する。
ステップ606および608で、そのパッケージに対応する既存のグラフを探す。グラフが見つからない場合、そのパッケージは新しいパッケージであることになり、ステップ610でそのパッケージに対してグラフが作成される(そしてステップ612を介してそのグラフが適切に作成されたことを保証する)。グラフの作成が成功すると、ステップ616でその新しいグラフが戻され、それ以外の場合は失敗が戻される。
ノードの作成が成功し、そのパッケージにグラフが見つかると、ステップ608からステップ618〜630を介してステップ618に分岐する。ノード配列内の各ノードについて、新しいノードの基本バージョンがその既存ノードのバージョン番号と一致する場合、更新グラフ424(図4)にエッジオブジェクトが作成されて、配列428に追加される。この状態で、エッジオブジェクトは、既存ノードをソースに、新しいノードをシンク(sink)に指定する。代わりに、既存ノードの基本バージョンが新しいノードのバージョン番号と一致する場合は、新しいノードをソースに、既存ノードをシンクに指定するエッジオブジェクトが作成される。
追加時に、どの既存ノードとも接続のないパッケージが追加されることが可能であることに留意されたい。この状況は、2つの結果の1つを通じて調整される。すなわち、(a)そのパッケージノードを介して到達することができるノードがなく、かつ更新内の他のパッケージノードを介してそのパッケージノードに到達するパスがない場合。この状況では、ノードは不良とマークされ、無効の更新リストに入れられる。(b)後に追加されるパッケージがそのノードに接続する。この状況では、下記で図7Aおよび7Bを参照して説明するように、ノードは、グラフを探索する段階で処理される。
さらに、2つのパッケージが同じ対象バージョンを有する場合には、2つの装置側マニフェストファイルが比較されることに留意されたい。2つのファイルが等しくない場合、両方のノードを無効ノードとする。どの所与のパッケージについても特定バージョンの装置側マニフェストファイルは、所与のパッケージを特定バージョンに更新するすべてのパッケージにおいて同じであるべきであるからである。
妥当性検証プロセスの別の部分として、更新グラフウォーカーコンポーネント430が、恐らくはグラフ中の複数のパスに基づいて、そのパッケージの最も高い最終バージョン番号を判定するために各パッケージグラフを横断する。探索する際、更新グラフウォーカーコンポーネント430は、グラフ中のパッケージのデジタル署名が有効か検証する。署名の検証の結果が無効な場合、その点でグラフが切断されて、無効なノードに接続するエッジがいずれも除去される。
最も高いバージョン番号が判定されると、依存するGUIDに一致するパッケージグラフを更新グラフ424に問い合わせることによって、そのノードの依存性が検証される。新しい更新グラフが確認されていない場合、更新グラフウォーカーは、新しいパッケージグラフに対して探索プロセスを開始する。依存性を満たすことができない場合、その枝は切られ、新しい枝が試みられる。切られた枝のノードを接続するエッジは除去される。すべての可能性のある枝を試みて、依存性の要件を満たすことができない場合、グラフ内のそれらのノードによって表されるパッケージは無効更新リストに移される。
図7Aおよび7Bに横断プロセスの論理を示す。この横断プロセスは、グラフの基本ノードから開始する。ステップ702〜706によって表されるように、グラフの各エッジについて、そのエッジがそのノードをソースとして有するか否かを判定する(ステップ704)。そのノードに関連付けられたエッジがない場合は、終端ノードが検出されたことになり、終端ノードがステップ708〜718で扱われる。一般に、これらのステップでは、ノードのバージョン番号をグラフのバージョン番号と比較して(ステップ714)、ノードバージョンがグラフバージョンより高い場合、ステップ716でグラフバージョンをノードバージョンに更新して、プロセスは終了する(エラーは戻されない)。
代わりに、ステップ704でエッジがあったと判断された場合、プロセスは図7Bのステップ724に分岐してそのエッジにCERTチェーンがあるかどうかを調べる。ステップ724でCERTチェーンがないと判断された場合は、そのノードに対応する装置側マニフェストファイルからCERTブロックを入手する。装置側マニフェストファイルにCERTブロックがない場合は、ステップ730でノードが不良とマークされ、プロセスが戻ることに留意されたい。
ステップ724またはステップ728でCERTデータがある場合、プロセスはステップ734に進んでそのデータを解読する。この解読が失敗した場合、ステップ730でノードを不良ノードとし、プロセスは戻る。
そうでない場合、エッジの終端にシンクノードを見つける試みがステップ738で行われ、ステップ740でシンクノードがないか否かについての試験が行われる。但し、シンクノードがない場合は、グラフの整合性エラーが記録され、プロセスはステップ742を介して戻る。
シンクノードが見つかった場合は、CERTデータを使用してそのシンクノードの妥当性を検証する(ステップ744)。シンクノードの署名が有効であると確認された場合、その関数が再帰的に呼び出され、ステップ748でシンクノードを渡し、図7Aのステップ720に戻る。シンクノードが無効の場合は、そのエッジを不良エッジとする。
このようにして、最大の更新群が判定されて、有効な更新のリストとともに、順序付けられた更新リストとして戻される。これは、デバイスパッケージバージョンを最大にする最小数のパッケージに相当することができる。
上述の詳細な説明から分かるように、装置側のデバイス更新を扱う機構を提供する。この機構は、多数の更新バージョンと、それらバージョン間の矛盾と依存性に対処して、適用されるとデバイスパッケージのバージョンを最新にする最小数の有効パッケージを提供する。
本発明には各種の変更および代替の構成が可能であるが、その特定の例示的な実施形態を図面に示し、上記で詳細に説明した。ただし、本発明をここに開示される特定の形態に限定する意図はなく、反対に、本発明の趣旨および範囲内に該当するすべての変更、代替の構成、および同等なものを包含するものとすることを理解されたい。
本発明を組み込むことができるコンピュータシステムを概略的に表すブロック図である。 本発明の一態様によるパッケージの依存性情報を得るために使用されるマニフェストファイルの図である。 本発明の一態様による、依存性情報の処理を含む更新の妥当性検証プロセスを行う流れ図である。 本発明の一態様による、依存性情報の処理を含む更新の妥当性検証プロセスを行う流れ図である。 本発明の一態様による更新の妥当性検証プロセスを行う各種機構を示すブロック図である。 本発明の一態様による、依存性情報の処理を含む更新の順序付けプロセスを行う流れ図である。 本発明の一態様による、依存性情報の処理を含む更新の順序付けプロセスを行う流れ図である。 本発明の一態様による、パッケージの依存性を評価するためのグラフを作成する流れ図である。 本発明の一態様による、パッケージ更新グラフの横断を行う流れ図である。 本発明の一態様による、パッケージ更新グラフの横断を行う流れ図である。
符号の説明
120 ハンドヘルドコンピューティング装置
202 マニフェストファイルのレイアウト

Claims (13)

  1. インストールされたオペレーティングシステムを有するコンピューティングシステムにおいて、前記オペレーティングシステムが複数の個別のパッケージに分割されており、複数のバージョン更新が前記インストールされたオペレーティングシステムの第1のパッケージを更新するために利用可能であり、パッケージの依存性の制約を受けながら、最小の更新ステップで可能な前記第1のパッケージの最大のバージョン更新を可能にする利用可能なバージョンの最適なセットを選択する方法であって、
    モバイルコンピューティング装置にインストールされたオペレーティングシステムを更新する更新パッケージ群を前記モバイルコンピューティング装置にダウンロードするステップであって、前記オペレーティングシステムは、各々が他のパッケージから独立して更新できる複数の個別のパッケージに分割され、前記更新パッケージ群は、前記モバイルコンピューティング装置上のインストールされたオペレーティングシステムの第1のパッケージの異なるバージョンに対応する複数の更新パッケージを含み、各更新パッケージは、前記更新パッケージのバージョンを含む、前記更新パッケージの内容および依存性情報が記載されたマニフェストファイルを含み、
    前記モバイルコンピューティング装置上のインストールされたオペレーティングシステムの各パッケージに関して、前記パッケージのインストールされたバージョンに関するノードを有するグラフを生成するステップであって、前記グラフは、前記パッケージのインストールされたバージョンに対応するマニフェストファイルから生成される、ステップと、
    各更新パッケージに関して、関連付けられたマニフェストファイルにアクセスして前記更新パッケージがどのインストールされたパッケージに依存するか判定するステップであって、各更新パッケージは、前記インストールされたパッケージに直接依存することによって、又は、前記インストールされたパッケージに直接依存している若しくは他の更新パッケージに依存している他の更新パッケージに依存することによって、インストールされたパッケージに依存することができ、前記更新パッケージがどのインストールされたパッケージに依存するか判定し、前記更新パッケージの各バージョンに対応する新しいノードを前記グラフに追加し、前記グラフは、前記インストールされたバーションのノードをベースとするツリーとし、新しいノードを枝とするように形成され、各新しいノードは依存する他のノードとリンクしており、同じグラフの各新しいノードはグラフが表すインストールされたパッケージの異なるバージョンに対応する、ステップと、
    前記グラフを作成するステップに続いて、前記オペレーティングシステムの第1のパッケージに対応するグラフが、前記第1のパッケージを更新できる最新バージョンに対応するノードを含む2つのパスを含むことを判定するステップと、
    前記2つのパスを判定するステップに続いて、各パスを探索し、探索された各ノードを認証するステップであって、証明書チェーンが親ノードを介して所与のノードと関連付けられるか否かを判定し、前記証明書チェーンは前記所与のノードに関連付けられ、前記ノードに対応するパッケージが有効な署名を含むか否かを検証し、前記ノードに対応するパッケージが有効な署名を含んでいない場合、前記ノードを起点とする前記枝を前記グラフから切ることにより前記ノードを除去する、ステップと、
    両方のパスの各ノードを認証すると、パス上の各バージョンの重みの和が最小になるパスを選択するステップと、
    前記選択されたパスの各ノードに対応する前記更新パッケージをインストールして前記第1のパッケージを更新するステップと、
    を有することを特徴とする方法。
  2. 前記更新パッケージ群が前記モバイルコンピューティング装置上の現在インストールされたパッケージに対して一貫性を有するように編成するステップをさらに有することを特徴とする請求項1に記載の方法。
  3. 最小数のノードを有する前記パスが選択されたことを特徴とする請求項1に記載の方法。
  4. 各ノードを認証するステップは、前記ノードに対応する前記更新パッケージに関連付けられたファイルにアクセスし、前記ファイルがパッケージファイルの適切な型であるか否かを判定することを特徴とする請求項1に記載の方法。
  5. 前記各ノードを認証するステップは、前記ノードに対応する更新パッケージが前記更新パッケージの内容を記述する関連付けられたマニフェストファイルを含むか否かを判定するステップを含むことを特徴とする請求項1に記載の方法。
  6. 前記更新パッケージに対応するグラフのノードが存在しないと判定した場合、新しいグラフを作成し、更新パッケージのバージョンに対応するノードを前記新しく作成したグラフに追加するステップをさらに有することを特徴とする請求項1に記載の方法。
  7. 前記署名は前記所与のノードに関して検証され、そのノードに基づきパスに重みデータを付加するステップをさらに有することを特徴とする請求項に記載の方法。
  8. グラフを探索して最も低い重み付けされたパスを発見し、そのパスに対応する情報を更新リストに追加するステップをさらに有することを特徴とする請求項に記載の方法。
  9. 少なくとも1つのノードがグラフ内に残り、少なくとも1つの前記残ったノードが重み付けられたパスにあり、グラフを探索して最も低い重み付けされたパスを発見し、そのパスに対応する情報を更新リストに追加するステップをさらに有することを特徴とする請求項に記載の方法。
  10. 選択するステップは、各バージョンに対応するパーティションを判定し、そのバージョンに対する対応するパーティションに基づき各バージョンをそれぞれのリストに追加することによって各バージョンをソートするステップを含むことを特徴とする請求項1に記載の方法。
  11. コンピュータに請求項1に記載の方法を実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  12. 各ノードを認証するステップは、前記ノードに対応する前記更新パッケージに関連付けられたファイルにアクセスし、前記ファイルがパッケージファイルの適切な型であるか否かを判定することを特徴とする請求項11に記載のコンピュータ読み取り可能な記録媒体。
  13. 前記各ノードを認証するステップは、前記ノードに対応する更新パッケージが前記更新パッケージの内容を記述する関連付けられたマニフェストファイルを含むか否かを判定するステップを含むことを特徴とする請求項11に記載のコンピュータ読み取り可能な記録媒体。
JP2004355667A 2003-12-16 2004-12-08 インストールするのに有効な依存ソフトウェア更新の最大の群の判定 Expired - Fee Related JP5025901B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US53013003P 2003-12-16 2003-12-16
US60/530,130 2003-12-16
US10/837,176 US7568195B2 (en) 2003-12-16 2004-05-01 Determining a maximal set of dependent software updates valid for installation
US10/837,176 2004-05-01

Publications (2)

Publication Number Publication Date
JP2005182784A JP2005182784A (ja) 2005-07-07
JP5025901B2 true JP5025901B2 (ja) 2012-09-12

Family

ID=34556578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004355667A Expired - Fee Related JP5025901B2 (ja) 2003-12-16 2004-12-08 インストールするのに有効な依存ソフトウェア更新の最大の群の判定

Country Status (5)

Country Link
US (1) US7568195B2 (ja)
EP (1) EP1548586B1 (ja)
JP (1) JP5025901B2 (ja)
KR (1) KR101137146B1 (ja)
CN (1) CN1645322B (ja)

Families Citing this family (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080383B1 (en) * 1999-01-29 2006-07-18 Microsoft Corporation System and method for extending functionality of a class object
US8533702B2 (en) * 2002-06-27 2013-09-10 International Business Machines Corporation Dynamically resolving fix groups for managing multiple releases of multiple products on multiple systems
US7624393B2 (en) * 2003-09-18 2009-11-24 International Business Machines Corporation Computer application and methods for autonomic upgrade maintenance of computer hardware, operating systems and application software
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549148B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US8688803B2 (en) * 2004-03-26 2014-04-01 Microsoft Corporation Method for efficient content distribution using a peer-to-peer networking infrastructure
US7472377B2 (en) * 2005-01-18 2008-12-30 International Business Machines Corporation Systems and methods for determining software package identity during a system build
US20060168572A1 (en) * 2005-01-24 2006-07-27 Niklas Backlund Generic software conversion engine
US8387037B2 (en) * 2005-01-28 2013-02-26 Ca, Inc. Updating software images associated with a distributed computing system
US7716661B2 (en) * 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
US7743373B2 (en) * 2005-05-06 2010-06-22 International Business Machines Corporation Method and apparatus for managing software catalog and providing configuration for installation
US8255363B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using dynamic tags to identify and process files
US8255362B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system
US20060288055A1 (en) * 2005-06-08 2006-12-21 Johnson Michael K Methods, systems, and computer program products for provisioning software via a networked file repository in which a parent branch has a shadow associated therewith
US20060294515A1 (en) * 2005-06-23 2006-12-28 International Business Machines Corporation Common operating system install method
US7949684B2 (en) * 2005-09-09 2011-05-24 Salesforce.Com, Inc. Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
US8122446B2 (en) * 2005-11-03 2012-02-21 International Business Machines Corporation Method and apparatus for provisioning software on a network of computers
US7831972B2 (en) * 2005-11-03 2010-11-09 International Business Machines Corporation Method and apparatus for scheduling jobs on a network
US8490082B2 (en) * 2005-11-03 2013-07-16 International Business Machines Corporation System and method for representing user processes as software packages in a software package management system
KR100746026B1 (ko) * 2006-01-04 2007-08-06 삼성전자주식회사 소프트웨어 설치 장치 및 방법
US20070294364A1 (en) 2006-06-15 2007-12-20 International Business Machines Corporation Management of composite software services
US7496893B2 (en) 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
US7950007B2 (en) * 2006-06-15 2011-05-24 International Business Machines Corporation Method and apparatus for policy-based change management in a service delivery environment
US7519711B2 (en) 2006-06-15 2009-04-14 International Business Machines Corporation Method for middleware assisted system integration in a federated environment
JP2009536395A (ja) * 2006-06-19 2009-10-08 サムスン エレクトロニクス カンパニー リミテッド Otaが可能な端末の情報アップグレードシステム及び方法{informationupgradesystemandmethodforota−capabledevice}
US7748000B2 (en) * 2006-07-27 2010-06-29 International Business Machines Corporation Filtering a list of available install items for an install program based on a consumer's install policy
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
DE102006040395A1 (de) * 2006-08-29 2007-03-15 Siemens Ag Verfahren zur Erzeugung eines größenoptimierten Delta-Files
US7567984B1 (en) * 2006-08-31 2009-07-28 Symantec Operating Corporation Operating system and application deployment based on stored user state and organizational policy
US8112508B1 (en) * 2006-09-08 2012-02-07 Dell Products L.P. Delivering data from device management services to devices using bulletin system
EP2051181A1 (en) * 2006-12-27 2009-04-22 Panasonic Corporation Information terminal, security device, data protection method, and data protection program
US20080201705A1 (en) 2007-02-15 2008-08-21 Sun Microsystems, Inc. Apparatus and method for generating a software dependency map
US8307341B2 (en) * 2007-04-25 2012-11-06 International Business Machines Corporation Generating customized documentation for a software product
US7857222B2 (en) 2007-08-16 2010-12-28 Hand Held Products, Inc. Data collection system having EIR terminal interface node
US8775822B2 (en) * 2007-08-31 2014-07-08 Flexera Software, Llc Computer-implemented method and system for protecting a software installation after certification
US8141065B2 (en) * 2007-09-27 2012-03-20 Alcatel Lucent Method and apparatus for performing non service affecting software upgrades in place
US8146069B2 (en) * 2007-09-27 2012-03-27 Alcatel Lucent Method and apparatus for performing non service affecting software upgrades in place
US8291402B2 (en) * 2007-11-29 2012-10-16 Red Hat, Inc. Using system fingerprints to accelerate package dependency resolution
US8630981B1 (en) * 2007-12-21 2014-01-14 Symantec Corporation Techniques for differencing binary installation packages
US20090172637A1 (en) * 2007-12-28 2009-07-02 Microsoft Corporation Markup-based language for manifests
JP5136105B2 (ja) * 2008-02-13 2013-02-06 富士通株式会社 データ搭載装置、及びデータ搭載装置のアップグレード方法
US7860900B2 (en) * 2008-02-25 2010-12-28 Microsoft Corporation Consistently signaling state changes
EP2169545A1 (en) * 2008-09-26 2010-03-31 Moxa Inc. Embedded system that automatically updates its software and the method thereof
US8239856B2 (en) * 2008-10-27 2012-08-07 International Business Machines Corporation Sharing unresolved information between software components
US8473942B2 (en) * 2008-11-28 2013-06-25 Sap Ag Changable deployment conditions
JP5304360B2 (ja) * 2009-03-17 2013-10-02 株式会社リコー 情報処理装置、情報処理方法および情報処理プログラム
US8959481B2 (en) * 2009-04-30 2015-02-17 International Business Machines Corporation Determining system level dependencies
US8108495B1 (en) * 2009-04-30 2012-01-31 Palo Alto Networks, Inc. Managing network devices
JP5471883B2 (ja) * 2009-07-17 2014-04-16 株式会社リコー 情報処理装置、情報処理方法、情報処理プログラム
CN102576344A (zh) 2009-07-31 2012-07-11 惠普发展公司,有限责任合伙企业 识别和清点应用的方法和系统
US8645936B2 (en) 2009-09-30 2014-02-04 Zynga Inc. Apparatuses, methods and systems for an a API call abstractor
WO2011041175A1 (en) * 2009-09-30 2011-04-07 Zynga Game Network Inc. Apparatuses, methods and systems for an api call abstractor
US9176898B2 (en) * 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US8397230B2 (en) 2009-11-09 2013-03-12 Bank Of America Corporation Software updates using delta patching
US9128799B2 (en) 2009-11-09 2015-09-08 Bank Of America Corporation Programmatic creation of task sequences from manifests
US9497092B2 (en) 2009-12-08 2016-11-15 Hand Held Products, Inc. Remote device management interface
AU2011205480B2 (en) * 2010-01-12 2015-02-05 Google Llc Operating system auto-update procedure
US8713525B2 (en) * 2010-03-25 2014-04-29 International Business Machines Corporation Software management system for network data processing systems
US8554797B2 (en) 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
FR2972821B1 (fr) 2011-03-18 2013-04-26 Airbus Operations Sas Procede et dispositif d'installation/desinstallation de modules logiciels, avec resolution centralisee de contraintes, dans des equipements d'aeronef
US20120254859A1 (en) * 2011-03-31 2012-10-04 Sony Corporation Method and apparatus for downloading software updates to place user terminal into a desired configuration state
US8997084B2 (en) * 2011-04-20 2015-03-31 Hewlett-Packard Development Company, L.P. Method and apparatus for determining compatible versions of dependent entities in a computer system
CN102356394B (zh) * 2011-08-23 2013-09-11 华为技术有限公司 文档更新方法和装置
US20130055369A1 (en) * 2011-08-24 2013-02-28 Mcafee, Inc. System and method for day-zero authentication of activex controls
US9118686B2 (en) 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
US9773102B2 (en) 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US8990561B2 (en) 2011-09-09 2015-03-24 Microsoft Technology Licensing, Llc Pervasive package identifiers
US20130067459A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Order-Independent Deployment Collections with Dependency Package Identifiers
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
US8621123B2 (en) 2011-10-06 2013-12-31 Honeywell International Inc. Device management using virtual interfaces
US8539123B2 (en) 2011-10-06 2013-09-17 Honeywell International, Inc. Device management using a dedicated management interface
US8959504B2 (en) * 2011-10-18 2015-02-17 Microsoft Corporation Update scanning
EP2821918A4 (en) * 2012-03-01 2015-12-16 Nec Corp SYSTEM CONSTRUCTION PROCEDURE CREATING DEVICE, SYSTEM CONSTRUCTION PROCEDURE CREATING METHOD, AND PROGRAM
EP2648092B1 (en) * 2012-04-04 2019-06-19 Harman Becker Automotive Systems GmbH Updating method and multi-domain embedded system
US8966467B2 (en) * 2012-04-30 2015-02-24 Dell Products, L.P. System and method for performing an in-service software upgrade in non-redundant systems
US9244673B2 (en) * 2012-06-08 2016-01-26 Apple Inc. System and method for updating application archive files
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
EP2951978A4 (en) * 2013-01-29 2016-08-31 Hewlett Packard Entpr Dev Lp METHOD AND SYSTEMS FOR STORING COMMONLY USED FILES
US20140259004A1 (en) * 2013-03-07 2014-09-11 Go Daddy Operating Company, LLC System for trusted application deployment
US20140259003A1 (en) * 2013-03-07 2014-09-11 Go Daddy Operating Company, LLC Method for trusted application deployment
FR3003366B1 (fr) * 2013-03-12 2015-04-10 Airbus Operations Sas Procede, dispositif et programme d'ordinateur pour l'installation ou la desinstallation automatique de modules logiciels dans des equipements embarques d'un aeronef
JP6102378B2 (ja) * 2013-03-15 2017-03-29 株式会社リコー サーバ、情報処理システムおよびプログラム
JP2013149271A (ja) * 2013-03-29 2013-08-01 Ricoh Co Ltd 情報処理装置、プログラム導入支援システム、表示制御方法、表示制御プログラム、及びそのプログラムを記録した記録媒体
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
US20140359593A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Maintaining known dependencies for updates
US10110594B2 (en) 2013-09-04 2018-10-23 Hewlett-Packard Development Company, L.P. Header section download of package
US9690564B2 (en) 2013-09-10 2017-06-27 International Business Machines Corporation Runtime detection of software configurations and upgrades
US9367299B2 (en) * 2013-12-31 2016-06-14 Google Inc. Preventing application downgrade in an application store
JP6379599B2 (ja) * 2014-04-02 2018-08-29 富士通株式会社 適用判定プログラム、適用判定方法、及び適用判定装置
GB2524798A (en) * 2014-04-03 2015-10-07 Ibm Method and test environment for automatic testing a software product comprising a plurality of software packages
US9383989B1 (en) * 2014-06-16 2016-07-05 Symantec Corporation Systems and methods for updating applications
US20160048383A1 (en) * 2014-08-13 2016-02-18 Microsoft Technology Licensing, Llc Isv update delivery
CN105446757B (zh) * 2014-08-21 2019-09-17 阿里巴巴集团控股有限公司 一种数据包的处理方法和设备
CN104462352B (zh) * 2014-12-04 2018-04-06 北京国双科技有限公司 数据打包方法及装置
US9684539B1 (en) * 2014-12-17 2017-06-20 VCE IP Holding Company LLC Methods, systems, and computer readable mediums for logically remediating infrastructure resource components
US10248403B2 (en) * 2015-03-13 2019-04-02 Kony, Inc. Providing updates for natively rendered mobile applications
US10402187B2 (en) * 2016-08-10 2019-09-03 Trilio Data Inc. Efficient workload deployment using containers and unikernels
US10409567B2 (en) * 2016-09-14 2019-09-10 Microsoft Technology Licensing, Llc Trimming unused dependencies using package graph and module graph
US10402229B2 (en) * 2017-01-31 2019-09-03 Sap Se Platform for orchestrating custom processes across system landscapes
US10831463B2 (en) * 2017-03-08 2020-11-10 International Business Machines Corporation Intelligent software deployment on an IaaS platform
US10977240B1 (en) 2017-10-21 2021-04-13 Palantir Technologies Inc. Approaches for validating data
US10705817B2 (en) * 2018-03-19 2020-07-07 Toyota Jidosha Kabushiki Kaisha Conflict determination and mitigation for vehicular applications
EP3764224B1 (en) * 2018-03-27 2023-08-30 Huawei Technologies Co., Ltd. Resource permission processing method and apparatus, and storage medium and chip
US10698677B2 (en) * 2018-05-04 2020-06-30 EMC IP Holding Company LLC Method and system for lifecycle management optimization
US11550593B2 (en) 2019-01-08 2023-01-10 Dell Products L.P. Information handling system quick boot
US11194589B2 (en) 2019-01-08 2021-12-07 Dell Products L.P. Information handling system adaptive component reset
US11010249B2 (en) 2019-01-08 2021-05-18 Dell Products L.P. Kernel reset to recover from operating system errors
US11126420B2 (en) 2019-01-08 2021-09-21 Dell Products L.P. Component firmware update from baseboard management controller
US11397570B2 (en) * 2019-01-10 2022-07-26 Hewlett Packard Enterprise Development Lp Abort installation of firmware bundles
US10817279B1 (en) * 2019-04-16 2020-10-27 EMC IP Holding Company LLC Providing different upgrade paths for upgrading a server
CN110531993B (zh) * 2019-08-21 2022-11-25 苏州浪潮智能科技有限公司 软件安装方法、装置、设备及介质
CN111178829B (zh) * 2019-12-19 2021-06-18 中国人民解放军国防科技大学 一种在软件项目管理中基于图算法的冲突消解方法
US11507541B2 (en) * 2020-01-21 2022-11-22 Microsoft Technology Licensing, Llc Method to model server-client sync conflicts using version trees
CN113495737B (zh) * 2020-04-01 2024-05-03 腾讯科技(深圳)有限公司 一种软件更新方法及相关设备
US11200038B1 (en) 2020-06-25 2021-12-14 Paypal, Inc. Fast compiling source code without dependencies
US11314496B2 (en) 2020-06-25 2022-04-26 Paypal, Inc. Ultra-fast install and update of an operating system
CN114356447A (zh) * 2021-12-28 2022-04-15 广东三维家信息科技有限公司 一种插件管理方法、装置、电子设备及存储介质

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974149A (en) * 1985-08-02 1990-11-27 Wang Laboratories, Inc. Data distribution apparatus and method having a data description including information for specifying a time that a data distribution is to occur
US5303384A (en) * 1990-01-02 1994-04-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration High level language-based robotic control system
US5214695A (en) * 1990-07-23 1993-05-25 International Business Machines Corporation Apparatus and method for loading a system reference diskette image from a system partition in a personal computer system
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5325532A (en) * 1992-09-25 1994-06-28 Compaq Computer Corporation Automatic development of operating system boot image
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5625693A (en) 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5757914A (en) 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5835777A (en) 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US5721824A (en) 1996-04-19 1998-02-24 Sun Microsystems, Inc. Multiple-package installation with package dependencies
JP3548529B2 (ja) * 1997-08-20 2004-07-28 パワークエスト・コーポレーション イメージ形成中のコンピュータ・パーティション操作
EP0976042B1 (en) * 1997-10-06 2001-08-08 Powerquest Corporation System and method for transferring one-to-many disk image among computers in a network
JPH11134178A (ja) * 1997-10-27 1999-05-21 Nec Eng Ltd ロードモジュールの版数情報による相互関連チェック方式およびプログラム記録媒体
US6351850B1 (en) * 1997-11-14 2002-02-26 Frank Van Gilluwe Computer operating system installation
WO1999026123A1 (en) 1997-11-18 1999-05-27 Christopher Benjamin Wakely Improvements relating to software protection systems
US7503072B2 (en) 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6243468B1 (en) 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
KR20000041146A (ko) * 1998-12-21 2000-07-15 구자홍 네트워크 컴퓨터의 소프트웨어 업데이트 방법
US6802006B1 (en) 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6697948B1 (en) 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
JP3852538B2 (ja) * 1999-05-14 2006-11-29 富士通株式会社 コンピュータシステム、コンピュータネットワークシステム、コンピュータ及び記録媒体
US6675382B1 (en) * 1999-06-14 2004-01-06 Sun Microsystems, Inc. Software packaging and distribution system
US6324692B1 (en) * 1999-07-28 2001-11-27 Data General Corporation Upgrade of a program
US6725205B1 (en) * 1999-12-02 2004-04-20 Ulysses Esd, Inc. System and method for secure software installation
WO2001044934A1 (en) * 1999-12-15 2001-06-21 Sun Microsystems, Inc. Preparation of a software configuration using an xml type programming language
US6581159B1 (en) * 1999-12-23 2003-06-17 Intel Corporation Secure method of updating bios by using a simply authenticated external module to further validate new firmware code
US6591376B1 (en) * 2000-03-02 2003-07-08 Hewlett-Packard Development Company, L.P. Method and system for failsafe recovery and upgrade of an embedded operating system
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
JP2001331327A (ja) * 2000-05-24 2001-11-30 Matsushita Electric Ind Co Ltd 電子機器
US7140013B2 (en) * 2000-06-01 2006-11-21 Aduva, Inc. Component upgrading with dependency conflict resolution, knowledge based and rules
DE10028500A1 (de) 2000-06-08 2002-01-03 Deutsche Telekom Ag Verfahren zur Installation von Software in einer Hardware
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
DE10037397A1 (de) * 2000-08-01 2002-02-14 Daimler Chrysler Ag Verfahren zum Laden von Software
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
AU2002222461A1 (en) * 2000-12-07 2002-06-18 Aduva Inc. Improved method for resolving dependency conflicts among multiple operative entities within a computing environment
US6807665B2 (en) * 2001-01-18 2004-10-19 Hewlett-Packard Development Company, L. P. Efficient data transfer during computing system manufacturing and installation
JP2003005859A (ja) * 2001-04-16 2003-01-08 Yuichi Sumiya プログラムやデータの管理方法とコンピュータ
US20020157010A1 (en) * 2001-04-24 2002-10-24 International Business Machines Corporation Secure system and method for updating a protected partition of a hard drive
US6912591B2 (en) * 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
US20040015958A1 (en) * 2001-05-15 2004-01-22 Veil Leonard Scott Method and system for conditional installation and execution of services in a secure computing environment
US7155710B2 (en) * 2001-06-08 2006-12-26 Igt Method and apparatus for gaming device software configuration
FI114416B (fi) 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US8200988B2 (en) * 2001-08-03 2012-06-12 Intel Corporation Firmware security key upgrade algorithm
US20030046482A1 (en) * 2001-08-28 2003-03-06 International Business Machines Corporation Data management in flash memory
US20030063896A1 (en) * 2001-09-28 2003-04-03 Gonzalez Tovar Victor Manuel System utility interface for software upgrades and system diagnostics in automotive or portable DVD players
US7237122B2 (en) * 2001-10-19 2007-06-26 Mcafee, Inc. Method and apparatus to facilitate software installation using embedded user credentials
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US20030182563A1 (en) * 2002-03-22 2003-09-25 Liu James C. Method and apparatus for software license verification
US7194738B2 (en) * 2002-04-09 2007-03-20 Synnex Technology International Corporation Method of creating image files and installing software bundles on target computers
US20030217358A1 (en) * 2002-05-17 2003-11-20 Sun Microsystems, Inc. Method, system, and article of manufacture for firmware downloads
US8447963B2 (en) * 2002-06-12 2013-05-21 Bladelogic Inc. Method and system for simplifying distributed server management
US20040060035A1 (en) * 2002-09-24 2004-03-25 Eric Ustaris Automated method and system for building, deploying and installing software resources across multiple computer systems
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7085957B2 (en) * 2002-11-21 2006-08-01 Texas Instruments Incorporated Upgrading of firmware with tolerance to failures
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer
WO2004073332A1 (en) * 2003-02-11 2004-08-26 Unisys Corporation Method and apparatus for updating a control file
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7117304B2 (en) * 2003-06-03 2006-10-03 Sun Microsystems, Inc. System and method for determining a file system layout
WO2004109510A2 (en) * 2003-06-04 2004-12-16 Bitfone Corporation Network having customizable generators of software updates and mobile electronic devices having customizable updating software
JP2005044011A (ja) * 2003-07-24 2005-02-17 Hitachi Ltd ソフトウェアパッケージ管理方法
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7549148B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7765592B2 (en) * 2004-01-10 2010-07-27 Microsoft Corporation Changed file identification, software conflict resolution and unwanted file removal
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Also Published As

Publication number Publication date
EP1548586B1 (en) 2013-04-03
CN1645322A (zh) 2005-07-27
EP1548586A2 (en) 2005-06-29
US7568195B2 (en) 2009-07-28
JP2005182784A (ja) 2005-07-07
US20050132350A1 (en) 2005-06-16
CN1645322B (zh) 2013-06-12
KR20050061376A (ko) 2005-06-22
EP1548586A3 (en) 2007-11-07
KR101137146B1 (ko) 2012-04-19

Similar Documents

Publication Publication Date Title
JP5025901B2 (ja) インストールするのに有効な依存ソフトウェア更新の最大の群の判定
CN1641583B (zh) 自描述软件映象更新组件
US11385890B2 (en) Shared software libraries for computing devices
US7684964B2 (en) Model and system state synchronization
US8122106B2 (en) Integrating design, deployment, and management phases for systems
US20180196665A1 (en) Managing, using, and updating application resources
CN109614165B (zh) 一种com组件的多版本并行运行方法和装置
US20160026509A1 (en) Method and system for improving startup performance and interoperability of a virtual application
US8126859B2 (en) Updating a local version of a file based on a rule
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
US9460306B1 (en) System and method for controlling access of machine code to operating system resources
US20050033767A1 (en) Computer-implemented system and method for resource caching and execution
JP7119096B2 (ja) ライセンス検証装置
US10855818B2 (en) Apparatus and methods for optimizing dirty memory pages in embedded devices
US9367686B1 (en) System and method for antivirus checking of native images of software assemblies
US11392391B2 (en) Selectively updating a bios image
US20210357419A1 (en) Preventing dbms deadlock by eliminating shared locking
US20040216132A1 (en) Runtime polymorphism
JP2011511987A (ja) 反復コンポーネントのバインディング
US20030018962A1 (en) System and method for accessing streaming data
US8453108B1 (en) Static, configurable kernel interface
CN115794955A (zh) 一种智能合约的升级方法、装置、设备及存储介质
CN117170808A (zh) 一种管控等级标记方法和系统
CN115576570A (zh) 一种软件包安装方法、装置、计算设备及可读存储介质
Jahan et al. VNE-Sim Tool User Guide

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120615

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120620

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees