Exemplo n.º 1
0
        private static void Main(string[] args)
        {
            Console.Title = COPYRIGHT;

            string langFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Wow.FileName.LANG_FILE_NAME);
            string pidFile  = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Wow.FileName.PID_FILE_NAME);

            if (!File.Exists(langFile)) //Если файл не существует, вывод сообщения, завершение работы
            {
                ConsoleHelper.WriteErrorLine("File \"{0}\" not found!", Wow.FileName.LANG_FILE_NAME);
                Console.ReadKey();
                return; //завершение работы метода (в данном случае программы)
            }

            string[] files = Directory.GetFiles(
                AppDomain.CurrentDomain.BaseDirectory, "*.mpq", SearchOption.AllDirectories);
            if (files.Length == 0) //Если файлы не найдены, вывод сообщения, завершение работы
            {
                ConsoleHelper.WriteErrorLine("Put all *.mpq files next to the program.");
                Console.ReadKey();
                return; //завершение работы метода (в данном случае программы)
            }

            StreamReader reader = null;
            string       message;

            try
            {
                reader = new StreamReader(pidFile);
                string pidHash = reader.ReadLine();
                string version = reader.ReadLine();
                message = string.Format("Enter a next version update (Current version: {0}): ", version);
                Console.Write(message);
                reader.Close();
            }
            catch (Exception ex)
            {
                ConsoleHelper.WriteErrorLine("When reading a file \"{0}\" an error has occurred:", Wow.FileName.PID_FILE_NAME);
                ConsoleHelper.WriteErrorLine(ex.Message);
                Console.ReadKey();
                return; //завершение работы метода (в данном случае программы)
            }
            finally
            {
                if (reader != null)
                {
                    reader.Dispose();
                }
            }

            uint newVersion;

            while (!uint.TryParse(Console.ReadLine(), out newVersion))
            {
                ConsoleHelper.WriteErrorLine("Error! Enter a number a next version update.");
                Console.Write(message);
            }
            Console.WriteLine();

            int    processedFilesCounter = 0;
            string localeFolderName      = FileHelper.Txt.ReadFirstLine(langFile);

            string patchFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Wow.FileName.PATCH_FILE_NAME);

            using (StreamWriter sw = File.CreateText(patchFile))
            {
                for (int i = 0; i < files.Length; i++)
                {
                    UpdateFile updFile       = UpdateFile.FromFile(files[i], localeFolderName);
                    string     formattedLine = updFile.ToString();

                    Console.WriteLine("Load => {0} {1}", updFile.FolderName, updFile.FileName);
                    Console.WriteLine("Complete => {0}", formattedLine);
                    sw.WriteLine(formattedLine);

                    //Console.WriteLine("1---------2---------3---------4---------5---------6---------7---------8---------"); //80 символов
                    ConsoleHelper.WriteSeparatorLine('-', ConsoleColor.DarkCyan);
                    processedFilesCounter++;
                }
            }

            string       newVersionHash = HashHelper.GetMD5Hash(newVersion.ToString());
            StreamWriter writer         = null;

            try
            {
                writer = new StreamWriter(pidFile);
                writer.WriteLine(newVersionHash);
                writer.WriteLine(newVersion);
                writer.Close();
            }
            catch (Exception ex)
            {
                ConsoleHelper.WriteError("When writing a file \"{0}\" an error has occurred:", Wow.FileName.PID_FILE_NAME);
                ConsoleHelper.WriteErrorLine(ex.Message);
                Console.ReadKey();
                return; //завершение работы метода (в данном случае программы)
            }
            finally
            {
                if (writer != null)
                {
                    writer.Dispose();
                }
            }

            Console.WriteLine("{0} created! Processed *.mpq files: {1}", Wow.FileName.PATCH_FILE_NAME, processedFilesCounter);
            Console.WriteLine();
            Console.WriteLine("{0}, Skype: darksapfir1,  vk.com/6stprod", COPYRIGHT);
            Console.ReadKey();
        }