/// <summary>
        /// Parses build information from an INI file.
        /// </summary>
        /// <param name="iniFile">The INI file.</param>
        private void INIParse(IniFile iniFile)
        {
            var versionSection = iniFile.GetSection(VERSION_SECTION);

            if (versionSection == null)
            {
                throw new ParseException("[" + VERSION_SECTION + "] section not found from " + iniFile.FileName);
            }

            ProductVersionInfo = new ProductVersionInfo();
            ProductVersionInfo.Parse(versionSection);

            var fileKeys = iniFile.GetSectionKeys(FILES_SECTION);

            if (fileKeys == null)
            {
                return;
            }

            foreach (string key in fileKeys)
            {
                string[] parts = iniFile.GetStringValue(FILES_SECTION, key, string.Empty).Split(',');

                try
                {
                    var fileInfo = new T();
                    fileInfo.Parse(parts);

                    FileInfos.Add(fileInfo);
                }
                catch (FormatException) { UpdaterLogger.Log("FormatException when parsing file information, INI key " + key); }
                catch (ParseException) { UpdaterLogger.Log("ParseException when parsing file information, INI key: " + key); }
            }
        }
        /// <summary>
        /// Writes build information into the specified file path.
        /// Erases the file first if it already exists.
        /// </summary>
        /// <param name="filePath">The file path.</param>
        public void Write(string filePath)
        {
            File.Delete(filePath);

            var iniFile = new IniFile(filePath);

            var versionSection = new IniSection(VERSION_SECTION);

            iniFile.AddSection(versionSection);
            ProductVersionInfo.Write(versionSection);

            var filesSection = new IniSection(FILES_SECTION);

            iniFile.AddSection(filesSection);

            for (int i = 0; i < FileInfos.Count; i++)
            {
                filesSection.SetStringValue(i.ToString(), FileInfos[i].GetString());
            }

            iniFile.WriteIniFile();
        }