Problèmes liés à l’API du fichier du programme d’installation d’application

Prise en charge de JavaScript pour les API de fichier Du programme d’installation d’application

Les classes PackageManager et Package du Kit de développement logiciel (SDK) Windows fournissent des méthodes que vous pouvez utiliser pour ajouter ou modifier des packages via des fichiers App Installer ou pour récupérer des informations sur les applications avec une association App Installer. Pour plus d’informations, consultez Documentation connexe.

De ces méthodes, PackageManager.AddPackageByAppInstallerFileAsync, PackageManager.RequestAddPackageByAppInstallerFileAsync et Package.CheckUpdateAvailabilityAsync ne sont pas pris en charge dans JavaScript. Toutefois, vous pouvez créer un composant Windows Runtime qui appelle ces méthodes, puis appeler ce composant à partir d’une application UWP JavaScript.

Voici un exemple.

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