Problèmes liés à l’API du fichier d’installation d’applicationApp Installer file API issues

Prise en charge JavaScript pour les API de fichier d’installation d’applicationJavaScript support for App Installer file APIs

Les classes packagemanager et Package de l’SDK Windows fournissent des méthodes que vous pouvez utiliser pour ajouter ou modifier des packages via des fichiers de programme d’installation d’application ou pour récupérer des informations sur les applications avec une association de programme d’installation d’application.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. Pour plus d’informations, consultez Documentation connexe.For more information, see Related documentation.

Parmi ces méthodes, packagemanager. AddPackageByAppInstallerFileAsync, packagemanager. RequestAddPackageByAppInstallerFileAsyncet Package. CheckUpdateAvailabilityAsync ne sont pas pris en charge dans JavaScript.Of these methods, PackageManager.AddPackageByAppInstallerFileAsync, PackageManager.RequestAddPackageByAppInstallerFileAsync, and Package.CheckUpdateAvailabilityAsync are not supported in JavaScript. Toutefois, vous pouvez créer un composant Windows Runtime qui appelle ces méthodes, puis appeler ce composant à partir d’une application JavaScript UWP.However, you can create a Windows Runtime component that calls these methods and then call this component from a JavaScript UWP app.

Voici un exemple.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;
        });
    }
}