Пакеты ресурсов
Пакеты ресурсов предлагают отличный способ сократить объем дисков пользователей путем сегментирования языка или масштабирования конкретного ресурса в отдельные пакеты, которые автоматически загружаются Windows в зависимости от конфигурации компьютера пользователей. Если пользователь добавляет новый язык в список языков ОС в параметрах региона и языка или изменяет конфигурацию дисплея в автоматическом обновлении хранилища, ос будет получить применимые пакеты ресурсов для всех установленных приложений на устройстве.
В Windows SDK 10.0.17095.0 AddResourcePackageAsync API позволяет разработчикам устанавливать пакет ресурсов для приложения по запросу.
Использование API AddResourcePackageAsync
AddResourcePackageAsync принимает PackageFamilyName приложения и идентификатор ресурса, который однозначно идентифицирует пакет ресурсов, который пытается скачать. Идентификатор ресурса соответствует элементу ResourceId в AppxManifest.xml пакета ресурсов.
Приложение должно перезапуститься, чтобы получить объединенное представление всех ресурсов, доступных приложению. API предлагает параметр ForceTargetApplicationShutdown , который может передаваться для перезапуска приложения.
Если при загрузке пакета ресурсов доступно обновление для приложения, API завершится сбоем, так как более старая версия приложения больше не доступна. Передав флаг ApplyUpdateIfAvailable , API обновит приложение, а также получите запрошенный пакет ресурсов в рамках той же загрузки.
API возвращает ход выполнения загрузки, который может отображаться в приложении. Кроме того, обратите внимание, что для приложений, опубликованных в магазине, приобретение пакета ресурсов отображается на странице загрузки и обновления Microsoft Store и отображается как обновление приложения. Конечный пользователь может приостановить или отменить скачивание пакета ресурсов из Microsoft Store.
Пример
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
}
}
Проверка
Для локальной проверки разработчики могут создать msixbundle или appxbundle и установить его на локальном диске, сетевом ресурсе или веб-сервере. Когда приложение вызывает API AddResourcePackageAsync, Windows получит пакет ресурсов из расположения, в котором было установлено исходное приложение. Это упрощает проверку. После работы приложение будет готово к развертыванию.
Удаление пакетов ресурсов
Приложение может удалить пакет ресурсов, скачанный с помощью API RemoveResourcePackageAsync. Однако пакеты ресурсов, применимые для пользователя или устройства в целом, не могут быть удалены.
Пример
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
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по