Problemas de API de archivo del instalador de aplicacionesApp Installer file API issues

Compatibilidad de JavaScript con las API de archivo del instalador de aplicacionesJavaScript support for App Installer file APIs

Las clases PackageManager y Package del Windows SDK proporcionan métodos que puede usar para agregar o modificar paquetes a través de archivos de instalador de aplicaciones o para recuperar información acerca de las aplicaciones con una asociación de instalador de la aplicación.The PackageManager and Package classes in the Windows SDK provide methods you can use to add or modify packages via App Installer files or to retrieve information about apps with an App Installer association. Para obtener más información, consulta la documentación.For more information, see Related documentation.

De estos métodos, PackageManager. AddPackageByAppInstallerFileAsync, PackageManager. RequestAddPackageByAppInstallerFileAsyncy Package. CheckUpdateAvailabilityAsync no se admiten en JavaScript.Of these methods, PackageManager.AddPackageByAppInstallerFileAsync, PackageManager.RequestAddPackageByAppInstallerFileAsync, and Package.CheckUpdateAvailabilityAsync are not supported in JavaScript. Sin embargo, puede crear un componente Windows Runtime que llame a estos métodos y, a continuación, llame a este componente desde una aplicación UWP de JavaScript.However, you can create a Windows Runtime component that calls these methods and then call this component from a JavaScript UWP app.

A continuación se muestra un ejemplo:Here is an example.

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;
        });
    }
}