Paket Sumber Daya

Paket sumber daya menawarkan cara yang bagus untuk mengurangi jejak disk pengguna dengan mengeksegmentasi bahasa atau menskalakan aset tertentu ke dalam paket terpisah yang diunduh secara otomatis dengan Windows tergantung pada konfigurasi komputer pengguna. Jika pengguna menambahkan bahasa baru ke daftar bahasa OS mereka di pengaturan bahasa Wilayah & atau mengubah konfigurasi tampilan, di seluruh pembaruan penyimpanan otomatis, OS akan mengambil paket sumber daya yang berlaku untuk semua aplikasi yang diinstal di perangkat.

Dalam Windows SDK 10.0.17095.0 AddResourcePackageAsync API memungkinkan pengembang menginstal paket sumber daya untuk aplikasi sesuai permintaan.

Cara menggunakan API AddResourcePackageAsync

  • AddResourcePackageAsync mengambil PackageFamilyName aplikasi dan ID sumber daya yang secara unik mengidentifikasi paket sumber daya yang mencoba mengunduh. ID sumber daya sesuai dengan elemen ResourceId dalam AppxManifest.xml paket sumber daya.

  • Aplikasi harus dimulai ulang untuk mendapatkan tampilan gabungan dari semua sumber daya yang tersedia untuk aplikasi. API menawarkan opsi ForceTargetApplicationShutdown yang dapat diteruskan untuk memulai ulang aplikasi.

  • Jika ada pembaruan yang tersedia untuk aplikasi saat paket sumber daya diunduh, API akan gagal karena versi aplikasi yang lebih lama tidak lagi tersedia. Dengan meneruskan bendera ApplyUpdateIfAvailable , API akan memperbarui aplikasi serta mendapatkan paket sumber daya yang diminta sebagai bagian dari unduhan yang sama.

  • API mengembalikan kemajuan untuk unduhan yang dapat ditampilkan dalam aplikasi. Perhatikan juga bahwa untuk aplikasi yang diterbitkan ke penyimpanan, akuisisi paket sumber daya muncul di halaman unduhan dan pembaruan Microsoft Store dan muncul sebagai pembaruan untuk aplikasi Anda. Pengguna akhir dapat memilih untuk menjeda atau membatalkan pengunduhan paket sumber daya dari Microsoft Store.

Contoh

 private async void DownloadGermanResourcePackage(object sender, RoutedEventArgs e)
{            
    // ResourceId that is unique to the resource package
    string resourceId = "split.language-de";
    // Warn user that application will need to restart.
    // To take update if available pass in the ApplyUpdateIfAvailable flag
    var packageCatalog = PackageCatalog.OpenForCurrentPackage();
    PackageCatalogAddResourcePackageResult result = await packageCatalog.AddResourcePackageAsync("29270depappf.CaffeMacchiato_gah1vdar1nn7a", resourceId, 
        AddResourcePackageOptions.ApplyUpdateIfAvailable | AddResourcePackageOptions.ForceTargetApplicationShutdown)
        .AsTask<PackageCatalogAddResourcePackageResult, PackageInstallProgress>(new Progress
        (progress =>;
        {
                // Draw progress
        }));

        if (result.ExtendedError != null)
        {
                //Display error or retry if needed
        }
}

Validasi

Untuk validasi lokal, pengembang dapat membuat .msixbundle atau .appxbundle dan menginstal dari drive lokal, berbagi jaringan, atau webserver Anda. Ketika aplikasi memanggil AddResourcePackageAsync API, Windows akan memperoleh paket sumber daya dari lokasi tempat aplikasi asli diinstal. Hal ini membuat validasi menjadi sederhana. Setelah ini berfungsi, aplikasi siap untuk disebarkan.

Menghapus paket sumber daya

Aplikasi ini dapat memilih untuk menghapus untuk menghapus paket sumber daya yang diunduh melalui RemoveResourcePackageAsync API. Namun, paket Sumber Daya yang berlaku untuk pengguna atau perangkat secara keseluruhan tidak dapat dihapus instalasinya.

Contoh

 private async void RemoveResourcePackage(object sender, RoutedEventArgs e)
{            
    var packageCatalog = PackageCatalog.OpenForCurrentPackage();
    List resourcePackagesToRemove = new List();
    resourcePackagesToRemove.Add("split.language-de");
    //Warn user that application will be restarted
    var removePackageResult = await packageCatalog.RemoveResourcePackagesAsync(resourcePackagesToRemove);
    if (removePackageResult.ExtendedError != null)
    {
        // display error
    }
}