Pembaruan paket aplikasi

Memperbarui paket aplikasi Windows modern dioptimalkan untuk memastikan bahwa hanya bit penting yang diubah dari aplikasi yang diunduh untuk memperbarui aplikasi Windows yang ada.

Metadata dalam file AppxBlockMap.xml

Pada tingkat tinggi, selama pembuatan paket, sepotong metadata dibuat dan disimpan dalam file paket aplikasi (.appx atau .msix) yang memungkinkan bagian paket diidentifikasi secara unik oleh Windows. Saat memperbarui paket aplikasi, Windows menggunakan file metadata untuk membandingkan paket lama dengan paket baru dan menentukan apa yang perlu diunduh ke perangkat.

Karena metadata memungkinkan bagian paket diidentifikasi secara unik, ini berarti mesin pembaruan diferensial berfungsi penuh dari versi paket apa pun ke versi paket lainnya (dengan asumsi paket sumber memiliki versi yang lebih rendah daripada paket target).

Metadata terkandung dalam file AppxBlockMap.xml (metadata yang disebutkan di atas). File AppxBlockMap.xml adalah file XML yang berisi daftar informasi dua dimensi tentang file dalam paket. Dimensi pertama menjabarkan detail tingkat tinggi pada file (misalnya, nama dan ukuran) dan dimensi kedua menyediakan representasi hash SHA2-256 dari setiap ikatan 64KB file tersebut ("blok").

Berikut adalah sampel file AppxBlockMap.xml.

<!--?xml version="1.0" encoding="UTF-8"?-->
<blockmap hashmethod="http://www.w3.org/2001/04/xmlenc#sha256" 
          xmlns="http://schemas.microsoft.com/appx/2010/blockmap">
  <file lfhsize="66" size="101188" name="asset1.jpg">
    <block hash="2bidNE0JyaO+FjaTpRe0g8HzUCblUf/cfBcTXiZR74c="/>
    <block hash="+jeFwKrGk5gw9wSICWsWRtEQXwcLC7af4EWS7DgrAkY="/>
  </file>
  <file lfhsize="61" size="108823" name="asset2.jpg">
    <block hash="u0+5S0GOzwyAfYx54tKycZyHRBYm2ybvq27dkIKqDsQ="/>
    <block hash="F9h0FRMetL6BNCszAYB0bgyx2KWN+dO1bls4Q9m267c="/>
  </file>
  ...
</blockmap>

File pertama (asset1.jpg) memiliki dua hash blok. Hash pertama mewakili blok file 64KB pertama dan hash kedua mewakili 35KB yang tersisa - mengingat file 101188 byte.

Selama pembaruan, jika blok kedua file tersebut dimodifikasi, hash juga diperbarui untuk mencerminkan itu. Komponen unduhan menarik blok kedua dan menggunakan kembali blok pertama yang tidak berubah dari paket lama.

Pada skala yang lebih besar, jika seluruh file tidak berubah (ditentukan oleh set lengkap blok yang tidak berubah), file tersebut dapat digunakan kembali dari paket yang ada, menghemat waktu dan sumber daya.

Batasan pembaruan aplikasi

Pembaruan dilakukan dalam keluarga paket yang sama

Nama keluarga paket terdiri dari Nama Paket dan Penerbit. Agar dapat diperbarui, metadata paket baru harus sama dengan paket yang diinstal sebelumnya. Berikut ini adalah contoh nama keluarga paket: Contoso.ContosoApp_8wekyb3d8bbwe.

Pembaruan aplikasi harus meningkat ke versi yang lebih tinggi

Secara umum, pembaruan aplikasi mengharuskan versi paket baru lebih tinggi dari yang saat ini. Proses pembaruan aplikasi tidak akan memungkinkan paket dengan versi yang lebih rendah diinstal secara default. Mulai Windows 10 versi 1809, Anda dapat menggunakan ForceUpdateToAnyVersion untuk memungkinkan paket versi yang lebih rendah diinstal ketika sakelar penimpaan disediakan sebagai bagian dari argumen pembaruan. Saat ini tersedia di PowerShell menggunakan opsi ForceUpdateFromAnyVersion , melalui PackageManager API, EnterpriseModernAppManagement CSP dan dalam file AppInstaller.

Catatan

Jika Anda menggunakan ForceUpdateToAnyVersion pada aplikasi dari Windows Store, Windows Update akan secara otomatis memperbarui ke versi terbaru yang berlaku.

Paket pembaruan aplikasi dapat memiliki arsitektur yang berbeda

Paket pembaruan ke paket aplikasi yang saat ini diinstal dapat memiliki arsitektur yang berbeda selama arsitektur baru didukung pada OS tempatnya disebarkan. Misalnya: Jika Anda memiliki versi x86 MyFavApp(v1.0.0.0) yang diinstal pada perangkat x64 Windows 10 dan paket pembaruan (v2.0.0.0) adalah versi x64: MyFavApp(1.0.0.0) akan diperbarui ke MyFavApp(v2.0.0.0) dengan sukses.

Paket dapat diperbarui dari MSIX ke MSIXbundle

Paket pembaruan dapat dari paket MSIX ke paket MSIXbundle tetapi bukan sebaliknya. Ketika MSIXbundle diinstal, pembaruan paket harus tetap menjadi bundel.

Mengoptimalkan teknologi pembaruan diferensial

Ada beberapa cara untuk memastikan bahwa teknologi pembaruan diferensial dioptimalkan hingga maksimal.

  • Menjaga file dalam paket tetap kecil - melakukan ini akan memastikan bahwa jika perubahan diperlukan yang akan berdampak pada file lengkap, pembaruan akan tetap kecil.
  • Perubahan pada file harus aditif jika memungkinkan - perubahan aditif akan memastikan bahwa perangkat pengguna akhir hanya mengunduh blok yang diubah tersebut.
  • Perubahan pada file harus dimuat ke blok 64KB jika memungkinkan - jika aplikasi Anda memang memiliki file besar dan memerlukan perubahan di tengah file, yang berisi perubahan pada sekumpulan blok akan membantu secara signifikan.