public static UpdateSourceBase[] FindUpdateSources(string searchDirectory) { var updateSourcesPath = Path.Combine(searchDirectory, "UpdateSources"); var updateSourcesPathDebug = Path.Combine(searchDirectory, "UpdateSourcesDebug"); var updateSources = new string[0]; Console.WriteLine("Looking for update sources..."); if (File.Exists(updateSourcesPathDebug) && File.ReadAllText(updateSourcesPathDebug).Trim().Length > 0) { Console.WriteLine("Loading sources from UpdateSourcesDebug file at " + updateSourcesPathDebug); updateSources = File.ReadAllLines(updateSourcesPathDebug).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); } else { try { updateSources = new WebClient().DownloadString(PathTools.AdjustFormat(Resources.UpdateSourcesUrl)).Split().Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); Console.WriteLine($"Found {updateSources.Length} sources"); } catch (Exception ex) { Console.WriteLine("Failed to get update sources: " + ex.Message); } // If any sources were found, save them to the cache. If not, try loading the cached sources if (updateSources.Any()) { File.WriteAllLines(updateSourcesPath, updateSources); } else if (File.Exists(updateSourcesPath) && File.ReadAllText(updateSourcesPath).Length > 0) { Console.WriteLine("Loading cached sources from UpdateSources file at " + updateSourcesPath); updateSources = File.ReadAllLines(updateSourcesPath).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); } } return(GetUpdateSources(updateSources.Select(PathTools.AdjustFormat).ToArray())); }