Compartilhar via


Problemas na API de arquivos do Instalador de Apps

Suporte do JavaScript para APIs de arquivo do instalador de aplicativo

As classes PackageManager e Package no SDK do Windows fornecem métodos que você pode usar para adicionar ou modificar pacotes por meio de arquivos do Instalador de Aplicativo ou para recuperar informações sobre aplicativos com uma associação do Instalador de Aplicativos. Para obter mais informações, consulte a documentação relacionada.

Desses métodos, PackageManager.AddPackageByAppInstallerFileAsync, PackageManager.RequestAddPackageByAppInstallerFileAsync e Package.CheckUpdateAvailabilityAsync não têm suporte no JavaScript. No entanto, você pode criar um componente do Windows Runtime que chama esses métodos e, em seguida, chamar esse componente de um aplicativo UWP JavaScript.

Veja um exemplo.

namespace CSRuntimeComponent
{
    public sealed class UpdateAvailabilityChecker
    {
        public static IAsyncOperation<PackageUpdateAvailability> CheckForUpdatesAsync()
        {
            return AsyncInfo.Run<PackageUpdateAvailability>((result) => Task.Run<PackageUpdateAvailability>(async () =>
            {
                PackageManager pm = new PackageManager();
                Package currentPackage = pm.FindPackageForUser(string.Empty, Package.Current.Id.FullName);
                PackageUpdateAvailabilityResult apiResult = await currentPackage.CheckUpdateAvailabilityAsync();

                if (apiResult.Availability == PackageUpdateAvailability.Error)
                {
                    Logger.Error($"Error occurred, extended code: {apiResult.ExtendedError}");
                }

                return apiResult.Availability;
            }));
        }
    }
}
window.onload = function () {
    document.getElementById('mainButton').onclick = function (evt) {
        CSRuntimeComponent.UpdateAvailabilityChecker.checkForUpdatesAsync().done(function (result) {
            document.getElementById("resultLabel").innerHTML = "Update availability result:" + result;
        });
    }
}