static public bool LoadKeyValuePairs( this NullSafeOfStringDictionary <string> list, string filePath, string separator, bool showError = true) { try { list.Clear(); foreach (string line in File.ReadAllLines(filePath)) { if (!line.IsCommentedText()) { var parts = line.SplitNoEmptyLines(separator); if (parts.Length == 1) { list.Add(parts[0].Trim(), string.Empty); } else if (parts.Length == 2) { list.Add(parts[0].Trim(), parts[1].Trim()); } else if (parts.Length > 2) { list.Add(parts[0].Trim(), parts.Skip(1).Join(separator)); } } } return(true); } catch (FileNotFoundException) { if (showError) { MessageBox.Show(SysTranslations.FileNotFound.GetLang(filePath), Globals.AssemblyTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); } return(false); } catch (Exception ex) { if (showError) { MessageBox.Show(SysTranslations.LoadFileError.GetLang(filePath, ex.Message), Globals.AssemblyTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); } return(false); } }
static private (Version, string) GetVersionAndChecksum(WebClientEx client, bool useGitHub) { SystemManager.CheckServerCertificate(useGitHub ? Globals.CheckUpdateGitHubURL : Globals.CheckUpdateURL, useGitHub, true); List <string> lines; try { string path = useGitHub ? Globals.CheckUpdateGitHubURL : Globals.CheckUpdateURL; lines = client.DownloadString(path).SplitNoEmptyLines(useGitHub).Take(2).ToList(); } catch (Exception ex) { throw new WebException(SysTranslations.CheckUpdateReadError.GetLang(ex.Message)); } LoadingForm.Instance.DoProgress(); var list = new NullSafeOfStringDictionary <string>(); foreach (string line in lines) { var parts = line.Split(':'); if (parts.Length != 2) { continue; } list.Add(parts[0].Trim(), parts[1].Trim()); } string fileVersion = list["Version"]; string fileChecksum = list["Checksum"]; if (fileVersion.IsNullOrEmpty() || fileChecksum.IsNullOrEmpty()) { throw new WebException(SysTranslations.CheckUpdateFileError.GetLang(lines.AsMultiLine())); } var partsVersion = fileVersion.Split('.'); Version version; try { version = partsVersion.Length switch { 2 => new Version(Convert.ToInt32(partsVersion[0]), Convert.ToInt32(partsVersion[1])), 3 => new Version(Convert.ToInt32(partsVersion[0]), Convert.ToInt32(partsVersion[1]), Convert.ToInt32(partsVersion[2])), 4 => new Version(Convert.ToInt32(partsVersion[0]), Convert.ToInt32(partsVersion[1]), Convert.ToInt32(partsVersion[2]), Convert.ToInt32(partsVersion[3])), _ => throw new ArgumentException(SysTranslations.CheckUpdateFileError.GetLang(lines.AsMultiLine())), }; } catch (Exception ex) { throw new WebException(SysTranslations.CheckUpdateFileError.GetLang(lines.AsMultiLine()) + Globals.NL2 + ex.Message); } LoadingForm.Instance.DoProgress(); return(version, fileChecksum); }
/// <summary> /// Creates the export targets. /// </summary> /// <typeparam name="T"></typeparam> static public NullSafeOfStringDictionary <T> CreateExportTargets <T>(params T[] list) where T : struct, Enum { var result = new NullSafeOfStringDictionary <T>(); foreach (var value in Enums.GetValues <T>()) { if (list.Length == 0 || list.Contains(value)) { result.Add(value, "." + value.ToString().ToLower()); } } return(result); }