Memperbarui aplikasi yang diterbitkan Store dari kode Anda

Mulai Windows 10, versi 1607 (build 14393), Windows 10 memungkinkan pengembang untuk membuat jaminan yang lebih kuat sekeliling pembaruan aplikasi dari Store. Melakukan ini membutuhkan beberapa API sederhana, menciptakan pengalaman pengguna yang konsisten dan dapat diprediksi dan memungkinkan pengembang untuk fokus pada apa yang mereka lakukan terbaik sambil memungkinkan Windows untuk melakukan pengangkatan berat.

Ada dua cara mendasar agar pembaruan aplikasi dapat dikelola. Dalam kedua kasus, hasil bersih untuk metode ini sama - pembaruan diterapkan. Namun, dalam satu kasus, Anda dapat memilih untuk membiarkan sistem melakukan semua pekerjaan sementara dalam kasus lain Anda mungkin ingin memiliki tingkat kontrol yang lebih dalam atas pengalaman pengguna.

Pembaruan sederhana

Pertama dan yang terdahulu adalah panggilan API yang sangat sederhana yang memberi tahu sistem untuk memeriksa pembaruan, mengunduhnya dan kemudian meminta izin dari pengguna untuk menginstalnya. Anda akan mulai dengan menggunakan kelas StoreContext untuk mendapatkan objek StorePackageUpdate , mengunduh dan menginstalnya.

using Windows.Services.Store;

private async void GetEasyUpdates()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();

    if (updates.Count > 0)
    {
        IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> downloadOperation = 
            updateManager.RequestDownloadAndInstallStorePackageUpdatesAsync(updates);
        StorePackageUpdateResult result = await downloadOperation.AsTask();
    }
}

Pada titik ini pengguna memiliki dua opsi yang dapat mereka pilih: terapkan pembaruan sekarang atau tangguhkan pembaruan. Pilihan apa pun yang dibuat pengguna akan dikembalikan melalui objek yang StorePackageUpdateResult memungkinkan pengembang untuk mengambil tindakan lebih lanjut seperti menutup aplikasi jika pembaruan diperlukan untuk melanjutkan atau hanya mencoba lagi nanti.

Pembaruan yang dikontrol dengan baik

Untuk pengembang yang ingin memiliki pengalaman yang sepenuhnya disesuaikan, API tambahan disediakan yang memungkinkan lebih banyak kontrol atas proses pembaruan. Platform ini memungkinkan Anda melakukan hal berikut:

  • Dapatkan peristiwa kemajuan pada unduhan paket individual atau pada seluruh pembaruan.
  • Terapkan pembaruan sesuai kenyamanan pengguna dan aplikasi, bukan hanya salah satunya.

Pengembang dapat mengunduh pembaruan di latar belakang (saat aplikasi sedang digunakan) lalu meminta pembaruan penginstalan pengguna, jika ditolak, Anda cukup menonaktifkan kemampuan yang terpengaruh oleh pembaruan jika Anda memilih.

Mengunduh pembaruan

private async void DownloadUpdatesAsync()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();

    if (updates.Count > 0)
    {
        IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> downloadOperation =
            updateManager.RequestDownloadStorePackageUpdatesAsync(updates);

        downloadOperation.Progress = async (asyncInfo, progress) =>
        {
            // Show progress UI
        };

        StorePackageUpdateResult result = await downloadOperation.AsTask();
        if (result.OverallState == StorePackageUpdateState.Completed)
        {
            // Update was downloaded, add logic to request install
        }
    }
}

Menginstal pembaruan

private async void InstallUpdatesAsync()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();    

    // Save app state here

    IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> installOperation =
        updateManager.RequestDownloadAndInstallStorePackageUpdatesAsync(updates);

    StorePackageUpdateResult result = await installOperation.AsTask();

    // Under normal circumstances, app will terminate here

    // Handle error cases here using StorePackageUpdateResult from above
}

Membuat pembaruan wajib

Dalam beberapa kasus, mungkin benar-benar diinginkan untuk memiliki pembaruan yang harus diinstal ke perangkat pengguna - membuatnya benar-benar wajib (misalnya perbaikan penting untuk aplikasi yang tidak dapat menunggu). Dalam kasus ini, ada langkah-langkah tambahan yang dapat Anda ambil untuk membuat pembaruan wajib.

  1. Terapkan logika pembaruan wajib dalam kode aplikasi Anda (perlu dilakukan sebelum pembaruan wajib itu sendiri).
  2. Selama pengiriman ke Dev Center, pastikan kotak Buat pembaruan ini wajib dipilih.

Menerapkan kode aplikasi

Untuk memanfaatkan pembaruan wajib sepenuhnya, Anda harus melakukan sedikit modifikasi pada kode di atas. Anda harus menggunakan objek StorePackageUpdate untuk menentukan apakah pembaruan bersifat wajib.

 private async bool CheckForMandatoryUpdates()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();

    if (updates.Count > 0)
    {
        foreach (StorePackageUpdate u in updates)
        {
            if (u.Mandatory)
                return true;
        }
    }
    return false;
}

Kemudian Anda harus membuat dialog kustom dalam aplikasi untuk memberi tahu pengguna bahwa ada pembaruan wajib dan bahwa mereka harus menginstalnya untuk terus menggunakan aplikasi secara penuh. Jika pengguna menolak pembaruan, aplikasi dapat menurunkan fungsionalitas (misalnya, mencegah akses online) atau mengakhiri sepenuhnya (misalnya, game khusus online).

Pusat Mitra

Untuk memastikan StorePackageUpdate menunjukkan status benar untuk pembaruan wajib, Anda harus menandai pembaruan tersebut sebagai wajib di Pusat Mitra pada halaman Paket.

Beberapa hal yang perlu diperhatikan:

  • Jika perangkat kembali online setelah pembaruan wajib digantikan oleh pembaruan lain yang tidak wajib, pembaruan yang tidak wajib tersebut masih akan muncul di perangkat sebagai wajib karena pembaruan sebelumnya terlewat ketika menjadi wajib.
  • Pembaruan yang dikontrol pengembang dan pembaruan wajib saat ini terbatas pada Toko.