public static MobileProvisionIndex CreateIndex(string profilesDir, string indexName) { var index = new MobileProvisionIndex(); if (Directory.Exists(profilesDir)) { foreach (var fileName in Directory.EnumerateFiles(profilesDir)) { if (!fileName.EndsWith(".mobileprovision", StringComparison.Ordinal) && !fileName.EndsWith(".provisionprofile", StringComparison.Ordinal)) { continue; } try { var profile = ProvisioningProfile.Load(fileName); index.ProvisioningProfiles.Add(profile); } catch (Exception ex) { LoggingService.LogWarning("Error reading provisioning profile '{0}': {1}", fileName, ex); } } index.ProvisioningProfiles.Sort(CreationDateComparer); } else { Directory.CreateDirectory(profilesDir); } index.Version = IndexVersion; index.LastModified = Directory.GetLastWriteTimeUtc(profilesDir); index.Save(indexName); return(index); }
public static MobileProvisionIndex Load(string fileName) { var previousCreationDate = DateTime.MaxValue; var index = new MobileProvisionIndex(); var sorted = true; using (var stream = File.OpenRead(fileName)) { using (var reader = new BinaryReader(stream)) { index.Version = reader.ReadInt32(); index.LastModified = new DateTime(reader.ReadInt64(), DateTimeKind.Utc); int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var profile = ProvisioningProfile.Load(reader); index.ProvisioningProfiles.Add(profile); if (profile.CreationDate > previousCreationDate) { sorted = false; } previousCreationDate = profile.CreationDate; } if (!sorted) { index.ProvisioningProfiles.Sort(CreationDateComparer); } return(index); } } }