Ejemplo n.º 1
0
        static bool PlatformEnsureDeclared(PermissionType permission, bool throwIfMissing)
        {
            var uwpCapabilities = permission.ToUWPCapabilities();

            // If no actual UWP capabilities are required here, just return
            if (uwpCapabilities == null || !uwpCapabilities.Any())
            {
                return(true);
            }

            var doc              = XDocument.Load(appManifestFilename, LoadOptions.None);
            var reader           = doc.CreateReader();
            var namespaceManager = new XmlNamespaceManager(reader.NameTable);

            namespaceManager.AddNamespace("x", appManifestXmlns);
            foreach (var cap in uwpCapabilities)
            {
                // If the manifest doesn't contain a capability we need, throw
                if ((!doc.Root.XPathSelectElements($"//x:DeviceCapability[@Name='{cap}']", namespaceManager)?.Any() ?? false) &&
                    (!doc.Root.XPathSelectElements($"//x:Capability[@Name='{cap}']", namespaceManager)?.Any() ?? false))
                {
                    if (throwIfMissing)
                    {
                        throw new PermissionException($"You need to declare the capability `{cap}` in your AppxManifest.xml file");
                    }
                    else
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        static void PlatformEnsureDeclared(PermissionType permission)
        {
            var uwpCapabilities = permission.ToUWPCapabilities();

            // If no actual UWP capabilities are required here, just return
            if (uwpCapabilities == null || !uwpCapabilities.Any())
            {
                return;
            }

            var doc   = XDocument.Load(appManifestFilename, LoadOptions.None);
            var xname = XNamespace.Get(appManifestXmlns);

            foreach (var cap in uwpCapabilities)
            {
                // If the manifest doesn't contain a capability we need, throw
                if (!doc.Root.XPathSelectElements($"//{xname}Capabilities[@Name='{cap}'")?.Any() ?? false)
                {
                    throw new PermissionException($"You need to declare the capability `{cap}` in your AppxManifest.xml file");
                }
            }
        }