public static MobileProvision LoadFromFile(string fileName) { var data = File.ReadAllBytes(fileName); var m = new MobileProvision(); m.Load(PDictionary.FromBinaryXml(data)); m.Data = data; if (m.Platforms == null) { switch (Path.GetExtension(fileName).ToLowerInvariant()) { case ".provisionprofile": m.Platforms = new MobileProvisionPlatform[1]; m.Platforms[0] = MobileProvisionPlatform.MacOS; break; case ".mobileprovision": m.Platforms = new MobileProvisionPlatform[1]; m.Platforms[0] = MobileProvisionPlatform.iOS; break; } } return(m); }
public static MobileProvision LoadFromData(byte[] data) { var m = new MobileProvision(); m.Load(PDictionary.FromBinaryXml(data)); m.Data = data; return(m); }
/// <summary> /// All installed provisioning profiles, sorted by newest first. /// </summary> public static IList <MobileProvision> GetAllInstalledProvisions(MobileProvisionPlatform platform, bool includeExpired) { if (!Directory.Exists(ProfileDirectory)) { return(new MobileProvision[0]); } var uuids = new Dictionary <string, MobileProvision> (); var list = new List <MobileProvision> (); var now = DateTime.Now; string pattern; switch (platform) { case MobileProvisionPlatform.MacOS: pattern = "*.provisionprofile"; break; case MobileProvisionPlatform.tvOS: case MobileProvisionPlatform.iOS: pattern = "*.mobileprovision"; break; default: throw new ArgumentOutOfRangeException(nameof(platform)); } foreach (var file in Directory.EnumerateFiles(ProfileDirectory, pattern)) { try { var data = File.ReadAllBytes(file); var m = new MobileProvision(); m.Load(PDictionary.FromBinaryXml(data)); m.Data = data; if (includeExpired || m.ExpirationDate > now) { if (uuids.ContainsKey(m.Uuid)) { // we always want the most recently created/updated provision if (m.CreationDate > uuids[m.Uuid].CreationDate) { int index = list.IndexOf(uuids[m.Uuid]); uuids[m.Uuid] = m; list[index] = m; } } else { uuids.Add(m.Uuid, m); list.Add(m); } } } catch (Exception ex) { LoggingService.LogWarning("Error reading " + platform + " provision file '" + file + "'", ex); } } //newest first list.Sort((x, y) => y.CreationDate.CompareTo(x.CreationDate)); return(list); }