Forward と reverse の差を使用した Windows の更新プログラム

Windows 10 の月間品質更新プログラムは累積的で、一貫性と簡素化性を確保するために、以前にリリースされたすべての修正プログラムが含まれています。 Windows 10 などのオペレーティングシステムプラットフォームでは、複数の年でサポートされていますが、毎月の品質更新プログラムのサイズが急速に大きくなり、ネットワーク帯域幅の消費が直接影響を受けることがあります。

現在、この問題に対処するには、高速ダウンロードを使用します。この問題は、更新されたすべてのファイルの差分ダウンロードが、選択した履歴のリビジョンと基本バージョンに基づいて生成されます。 このドキュメントでは、基本バージョンの任意のリビジョンに適用できるコンパクトなソフトウェア更新プログラムパッケージをビルドするための新しい手法を紹介し、Windows 10 品質更新プログラムがこの手法をどのように使用するかについて説明します。

一般的な用語

このドキュメント全体に適用される一般的な用語は、次のとおりです。

  • 基本バージョン: windows 10、バージョン 1809 (Windows 10 ビルド 17763.1) などの大幅な変更を加えた主要なソフトウェアリリース

  • リビジョン: KB4464330 などのメジャーバージョンリリースとのマイナーリリース (Windows 10 ビルド 17763.55)

  • ベースレスの修正プログラム記憶域ファイル (ベースレス PSF): 完全なバイナリまたはファイルを含むパッチストレージファイル

概要

このドキュメントでは、元のリビジョンと移行先のリビジョンのペアに合わせて最適化されたコンパクトなソフトウェア更新プログラムを生成できる新しい手法を紹介します。 これは、変更されたファイルの差分を基本バージョンから転送し、その逆の差分を基本バージョンに戻すことで行われます。 次に、forward と reverse の両方の差が更新としてパッケージ化され、ソフトウェアを実行しているエンドポイントに配布されます。 更新パッケージのコンテンツは、次のようにすることができます。

更新パッケージコンテンツのシンボル表現。 2つの式が含まれている box: delta sub 0 をサブフォームに変換し、その後に差分サブゼロをサブゼロに変換する

ファイルのベースバージョン (v 0) を持つエンドポイントは、単純な変換を適用することにより、ターゲットリビジョン (v N) を hydrate します。

数式: V sub 0 + < sub N = V sub n への値の変換

ファイルのリビジョン N を持つエンドポイント (v N) では、次の変換セットを適用することによってターゲットリビジョン (v R) を hydrate します。

数式 1: V sub n + 差分サブ変換 0 = V 太陽0数式 2: V sub 0 + delta sub 0 変換 (R = V サブ R)

エンドポイントは、差がオンになっているソフトウェアリビジョンのリバースを保持するため、hydrating に使用し、次のリビジョン更新プログラムを適用することができます。

一般的なベースラインを使用すると、この手法では、次のように多くの利点を備えた1つの更新パッケージが生成されます。

  • コンパクトなサイズ

  • すべての基準計画に適用される

  • 簡単に構築

  • インストールの効率化

従来、Windows 10 の品質更新プログラム (Windows 10、バージョン1803、および従来サポートされているバージョンの Windows 10) のダウンロードサイズは、エクスプレスダウンロードを使用して最適化されています。 簡易ダウンロードは最適化されているため、Windows 10 システムを更新すると、最小バイト数がダウンロードされます。 これを実現するには、同じファイルと基本バージョンまたは RTM バージョンの選択された履歴ベースのリビジョンに基づいて、更新されたすべてのファイルに対して差を生成します。

たとえば、10月の品質更新プログラムによって Notepad.exe が更新されている場合、差ファイルの場合は、年9月から10月から10月から10月、10月から10月、10月から10月、元の機能リリースから10月までの間に変更が加えられます。 これらの差はすべて、パッチストレージファイル (PSF、"express download files" とも呼ばれます) に保存され、Windows Update またはその他の更新管理または配布サーバー (たとえば、Windows Server Update Services (WSUS)、システム) にホストまたはキャッシュされます。Center Configuration Manager、またはエクスプレス更新をサポートする、Microsoft 以外の更新プログラム管理または配布サーバー)。 エクスプレス更新プログラムを利用するデバイスでは、ネットワークプロトコルを使用して最適な差を特定し、更新プログラム配布エンドポイントから必要なものだけをダウンロードします。

高速ダウンロードの flipside では、差が計算された過去のベースラインの数に応じて、PSF ファイルのサイズが大きくなる可能性があります。 大規模な PSF ファイルをオンプレミスまたはリモート更新の配布サーバーにダウンロードしてキャッシュすることは、ほとんどの組織で問題を発生させるため、高速更新を利用して、Windows 10 を実行しているデバイスを最新の状態に保つことはできません。 第2の理由として、更新配布サーバーにキャッシュする必要がある簡易ファイルの差とサイズの生成が複雑になるため、最も一般的なベースラインの高速ダウンロードファイルを生成するだけで、簡単な更新が可能になります。選択した基準計画に適用されます。 最後に、最適な差の計算は、システムメモリ使用量の観点から高くなります。特に低コストのシステムでは、更新プログラムのダウンロードと適用がシームレスに機能します。

以下のセクションでは、windows 10 と Windows Server の新しいリリースのフォワードおよびリバース差に基づいて、Windows 10 品質更新プログラムがこの手法をどのように活用するかについて説明します。

高レベルのデザイン

パッケージの更新

Windows 10 品質更新プログラムパッケージには、RTM 以降に変更された各ファイルについて、差 forward (∆ RTM → N) と、差 back (∆ N > RTM) への逆の転送が含まれています。 RTM 版をベースラインとして使用することで、すべてのデバイスのペイロードが同じであることが保証されます。 更新パッケージのメタデータ、コンテンツマニフェスト、および forward/reverse 差はキャビネットファイル (.cab) にパッケージ化されます。 この .cab ファイルと適用ロジックは、Microsoft 単体更新 (.msu) 形式でもラップされます。

サービスの実行中に新しいファイルがシステムに追加される場合もあります。 これらのファイルは RTM ベースラインを持たないため、forward と reverse 差は使用できません。 これらのシナリオでは、差を使用してサービスを処理します。 Null 差は、完全なバイナリの圧縮された、最適化されたバージョンです。 更新パッケージには、差の forward または reverse のいずれか、またはその2つのバイナリの null 差分を含めることができます。 次の画像は、Windows 10 品質更新プログラムのインストーラーの内容を示しています。

次の2つのサブボックスを含む .msu というタイトルのボックス: 1) [適用ロジック]、[2] というラベルの付いた containg の4つのサブボックス: 1) update metadata (2) コンテンツマニフェスト、3) delta sub RTM トランスフォーム (ファイル1、file2 など)、および 4) delta sub N transform (ファイル1、ファイル 2)など)

Hydration とインストール

更新パッケージで通常の適用対象のチェックが実行され、適用可能であると判断されると、Windows コンポーネントのサービスインフラストラクチャは、プレインストール中に完全なファイルを hydrate して、通常のインストールプロセスに進みます。

次に示すのは、更新プログラムのインストールを完了するために、コンポーネントのサービスインフラストラクチャがトランザクションで実行する、高レベルのアクティビティのシーケンスです。

  • 更新プログラムのインストールに必要なすべてのファイルを特定します。

  • ファイルの現在のバージョン (v n) を使って、ファイルの最新バージョン (v n---) を使用して、ファイルの品質更新プログラムの rtm/Hydrate >rtm) と forward differential (v RTM--->R) を使用して、必要なファイルをそれぞれします。機能更新プログラム RTM/基本バージョンからターゲットバージョンへのアップグレード。 また、null のディファレンシャル hydration を使って、null 圧縮ファイルを hydrate します。

  • Hydrated ファイル (完全なファイル) をステージングし、差 (' f ' フォルダーの下) に移動します。また、(' r ' フォルダーの下にある) 差を逆にします。

  • 依存関係を解決し、コンポーネントをインストールします。

  • 以前の状態をクリーンアップする(V N-1);以前の状態 VNは、アンインストールと復元、修復のために保持されます。

弾性 Hydration

特定の種類のハードウェアがファイルシステムの破損の原因によって発生する可能性がある、コンポーネントストアの破損または見つからないファイルに対する保護を確保するために、破損修復サービスが従来はコンポーネントストアの回復に使用されていました。オンラインまたはローカルの修復ソースを使って、自動的に ("自動破損修復") またはオンデマンド ("手動での破損修復") を行います。 このサービスには、hydration のコンテンツを修復して復元する機能と、必要に応じて更新プログラムが正常にインストールされます。

更新操作中に破損が検出されると、通常どおり自動で破損の修復が開始され、破損したマニフェスト、バイナリ差、または hydrated または完全なファイルを修正するために、更新プログラムごとに、Windows Update に公開されたベースレスの修正プログラムストレージファイルが使用されます。 ベースレスの修正プログラム記憶域のファイルには、更新された各コンポーネントの差と forward の完全なファイルが含まれます。 修復ファイルの整合性はハッシュで確認されます。

破損修復では、コンポーネントマニフェストを使って、不足しているファイルを検出し、破損検出用のハッシュを取得します。 更新プログラムのインストール中に、コンピューター上の各差分の新しいレジストリフラグが設定されます。 自動破損修復を実行すると、フラグを使ってマニフェストファイルと差分ファイルを使って hydrated ファイルをスキャンします。 差分が見つからないか、確認できない場合は、修復する破損の一覧に追加されます。

自動破損修復の遅延

"遅延自動破損修復" は、破損したバイナリと差を検出するために更新操作中に実行されます。 更新プログラムを適用しているときに、ファイルの hydration に失敗した場合、"遅延" 自動破損修復は自動的に開始され、破損したバイナリまたは差分ファイルが特定され、破損リストに追加されます。 後では、更新操作は可能な限り継続して実行されるため、"遅延" 自動破損修復では、できるだけ多くの破損ファイルを収集することができます。 Hydration セクションの最後に、更新が失敗し、自動の破損修復が開始されます。 自動破損修復は、通常どおりに実行され、操作が終了すると、新しいリストの上に "レイジー" 自動破損修復によって生成された破損リストが追加されます。 自動破損修復によって、破損リストのファイルが修復され、更新プログラムのインストールは次の試みで成功します。