MSIX アプリ パッケージの差分更新Differential updates for MSIX app packages

MSIX アプリ パッケージの更新についてUnderstanding MSIX app package updates

MSIX アプリ パッケージが作成されると、MSIX アプリ パッケージに含まれているファイルに関連する詳細を含むマニフェスト ファイルが生成されます。When an MSIX app package are created, a manifest file is generated containing details related to the files included in the MSIX app package. パッケージ作成中に 1 つのメタデータが作成され、.msix または .msixbundle パッケージに保存されます。これにより、パッケージの一部を Windows で一意に識別できます。During package creation, a piece of metadata is created and stored in the .msix or .msixbundle package which allows parts of the package to be uniquely identified by the Windows. 後で更新中に、Windows でこのメタデータ ファイルを使用して古いパッケージと新しいパッケージを比較し、デバイスに何をダウンロードする必要があるかを判断できます。Later on, during update, Windows can use this metadata file to compare the old package to the new package and determine the things that need to be downloaded to the device. このメタデータによってパッケージの一部を一意に識別できるため、差分更新機構がパッケージの任意のバージョンからパッケージの他の任意のバージョンまで完全に機能します (ソース パッケージのバージョンがターゲット パッケージより低いことを想定しています)。Given this metadata allows parts of the package to be uniquely identified, this means the differential update machinery fully functions from any version of a package to any other version of a package (assuming source package has a lower version than target package).

必ず AppxBlockMap.xml ファイル (前述のメタデータ) から開始します。It all starts at the AppxBlockMap.xml file (the aforementioned metadata). AppxBlockMap.xml ファイルは、パッケージ内のファイルに関する情報の 2 次元の一覧が含まれている XML ドキュメントです。The AppxBlockMap.xml file is an XML document that contains a two dimensional list of information about files in the package. 最初の次元はファイルに関する概要 (たとえば、名前およびサイズ) を示し、2 番目の次元はそのファイルの各 64 KB スライス ("ブロック") の SHA2-256 ハッシュ表現を提供します。The first dimension lays out high level details on the file (e.g. name and size) and the second dimension provides SHA2-256 hash representations of each 64KB slice of that file (aka the "block").

最初のハッシュは、ファイルの最初の 64 KB ブロックを表します。2 番目のハッシュは、残りの 35 KB を表します (ファイルのサイズが 101,188 バイトの場合)。The first hash represents the first 64KB block of the file and the second hash represents the remaining 35KB - given the file is 101188 bytes.

更新中にこのファイルの 2 番目のブロックが変更されると、それを反映するようハッシュも更新されます。During an update, if the second block of that file was modified, the hash would also be updated to reflect this fact. ダウンロード コンポーネントでこれが認識され、2 番目のブロックのみが取得されて、変更されていない最初のブロックが古いパッケージから再利用されます。The download component understands this and will only pull down the second block and reuse the first unchanged block from the old package.

さらに、ファイル全体が変更されていない場合 (ブロック全体が変更されていないことで判断されます)、そのファイルは既存のパッケージから再利用できます。その結果、Windows 10 ユーザーにとって大幅な節約になりますFurthermore, if an entire file hasn't changed (which is determined by the full set of blocks not changing) then that file can be reused from the existing package - resulting in tremendous savings for Windows 10 users

新しいバージョンへのアップグレードUpgrading to newer versions

新しいバージョンの MSIX アプリ パッケージがインストールされると、マニフェスト ファイルが比較され、変更されたファイル ブロックが特定されます。When a newer version of the MSIX app package is installed, the manifest file is compared and modified file blocks are identified. MSIX アプリ パッケージが新しいバージョンにアップグレードされると、変更されたファイルのみが取得され、更新されたアプリケーションがネットワーク共有または組織の外部にある場合には、帯域幅の消費が少なくなります。As the MSIX app package is upgraded to the newer version only the modified files are retrieved decreasing the bandwidth consumption if updated applications reside on a network share or external to an organization.

古いバージョンへのアップグレードUpgrading to older versions

古いバージョンの MSIX アプリ パッケージがインストールされると、マニフェスト ファイルが比較され、変更されたファイル ブロックが特定されます。When an older version of the MSIX app package is installed, the manifest file is compared and modifed file blocks are identified. MSIX アプリ パッケージが古いバージョンにアップグレードされると、変更されたファイルのみが取得され、更新されたアプリケーションがネットワーク共有または組織の外部にある場合には、帯域幅の消費が少なくなります。As the MSIX app package is upgraded to the older version only the modified files are retrieved decreasing the bandwidth consumption if updated applications reside on a network share or external to an organization.

アップグレード エクスペリエンスの最適化Optimizing upgrade experiences

デバイスへの MSIX アプリ パッケージの配信またはインストールは、ユーザー エクスペリエンスが向上するように構成できます。The delivery or installation of an MSIX app package to a device can be configured to improve the users experience. アプリを展開するとき、ユーザーがアプリを終了した後にアプリが更新されるようにデバイスを構成できます。または、アプリケーションを強制的に閉じ、アプリを強制的に更新することもできます。When an app is deployed the device can be configured to update the app after the user closes the app , or force the application to be closed and update the app forcably.

PowerShellPowerShell

PowerShell を使用して MSIX アプリ パッケージをデバイスにインストールすると、add-appxpackage コマンドレットが活用されます。Installing an MSIX app package to a device using PowerShell leverages the add-appxpackage cmdlet. このコマンドレットには、MSIX アプリ パッケージのインストールを変更したり、ユーザー エクスペリエンスをアップグレードしたりする次のパラメーターが含まれています。This cmdlet contains the following parameters which alter the MSIX app package installation or upgrade user experience.

-DeferRegistrationWhenPackagesAreInUse-DeferRegistrationWhenPackagesAreInUse このコマンドレットにより、ユーザーがアプリを開いている間は MSIX アプリ パッケージが更新されないことを示します。Indicates that this cmdlet will prevent the MSIX app package from updating while the user currently has the app open.
-ForceApplicationShutdown-ForceApplicationShutdown このコマンドレットにより、パッケージまたはその依存関係に関連付けられているすべてのアクティブなプロセスが強制的にシャットダウンされることを示しますIndicates that this cmdlet forces all active processes that are associated with the package or its dependencies to shut down
-ForceUpdateFromAnyVersion-ForceUpdateFromAnyVersion 新しいバージョンが既にステージングされているか、または登録されているかどうかに関係なく、MSIX アプリ パッケージによって特定のバージョンのパッケージが強制的にステージングまたは登録されることを示します。Indicates that the MSIX app package will force a specific version of a package to be staged/registered, regardless of whether a higher version is already stages/registered.
-InstallAllResources-InstallAllResources コマンドレットによって、バンドル引数から指定されたすべてのリソース パッケージが強制的に展開されることを示します。Indicates that the cmdlet forces the deployment of all resource packages specified from a bundle argument. これにより、展開エンジンのリソースの適用性チェックがオーバーライドされ、すべてのリソース パッケージのステージングが強制されます。This overrides the resource applicability check of the deployment engine and forces staging of all resource packages.
-RetainFilesOnFailure-RetainFilesOnFailure 展開が失敗したときにこのスイッチが True に設定されていると、インストール処理中にターゲット コンピューター上に作成されたファイルが削除されません。In the case of a failed deployment, if this switch is set to True, files that have been created on the target machine during the installation process are not removed.
-Update-Update 追加しているパッケージが依存関係パッケージの更新プログラムであることが指定されます。Specifies that the package being added is a dependency package update. 親アプリが削除されると、依存関係パッケージが削除されます。A dependency package is removed when the parent app is removed. 指定しない場合、親アプリを削除してもパッケージは削除されません。If not specified, the package will not be removed when the parent app is removed.

このコマンドレットで使用できるパラメーターの完全な一覧については、add-appxpackage の PowerShell に関する記事を参照してください。For a full list of parameters available for this cmdlet, please visit the PowerShell article on add-appxpackage.