예제 #1
0
        public void Write <T>(T data, string key, string path) where T : class
        {
            var json  = new JsonParser();
            var crypt = new Crypt(Encoding.UTF8.GetBytes(key));
            var res   = crypt.Encode(Encoding.UTF8.GetBytes(json.ParseObjToStr(data)));

            crypt.AddToDataIv(ref res);

            using (var file = File.Create(path))
            {
                file.Write(res, 0, res.Length);
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            var    programId = (int)ProgramId.Error;
            string nameZip   = null;

            Console.WriteLine("Программа создает настройки для программы");
            do
            {
                Console.Write("Для какой программы генерируются настройки(1-Лаунчер,2-Программа): ");
                int.TryParse(Console.ReadLine(), out programId);
                if (programId != (int)ProgramId.Launcher && programId != (int)ProgramId.Program)
                {
                    Console.WriteLine("Ошибка, введите число 1 или 2");
                }
            }while (programId != (int)ProgramId.Launcher && programId != (int)ProgramId.Program);

            if (programId == (int)ProgramId.Launcher)
            {
                var setHelp     = new SettingHelper();
                var parserPath  = new ParserPathHelper();
                var setLauncher = new LauncherSettingSerializer();
                setLauncher.Info = new SettingSerializer();

                Console.WriteLine("Создается файл настроек для Лаунчера");
                Console.Write("Name = ");
                setLauncher.Info.Name = Console.ReadLine();
                Console.Write("Version = ");
                setLauncher.Info.Version = Console.ReadLine();
                Console.Write("StartApp = ");
                setLauncher.Info.StartApp = Console.ReadLine();
                var isValid = false;
                do
                {
                    try
                    {
                        Console.Write("DepId(0-Лаунчер) = ");
                        setLauncher.Info.Dep = int.Parse(Console.ReadLine());
                        isValid = true;
                    }
                    catch (ArgumentNullException)
                    {
                        isValid = false;
                    }
                    catch (FormatException)
                    {
                        isValid = false;
                    }
                    catch (OverflowException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Введите целое число");
                    }
                }while (!isValid);

                Console.WriteLine("Следующие данные вводить в формате {\"Paths\": [\"path\", ...]}, при этом экранирование вводить вручную\nЕсли нечего вводить то просто Enter");

                do
                {
                    isValid = false;
                    Console.Write("PathFiles = ");
                    try
                    {
                        setLauncher.Info.PathFiles = parserPath.ParseToObj <Files>(Console.ReadLine());
                        isValid = true;
                    }
                    catch (ArgumentException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Неверный формат введеных данных");
                    }
                }while (!isValid);

                do
                {
                    isValid = false;
                    Console.Write("PathDirectories = ");
                    try
                    {
                        setLauncher.Info.PathDirectories = parserPath.ParseToObj <Directories>(Console.ReadLine());
                        isValid = true;
                    }
                    catch (ArgumentException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Неверный формат введеных данных");
                    }
                }while (!isValid);


                do
                {
                    isValid = false;
                    Console.Write("PathRegistries = ");
                    try
                    {
                        setLauncher.Info.PathRegistryKeys = parserPath.ParseToObj <Registries>(Console.ReadLine());
                        isValid = true;
                    }
                    catch (ArgumentException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Неверный формат введеных данных");
                    }
                }while (!isValid);

                setHelp.Write(setLauncher, CommonConstant.KeySettings, Constant.Path + "\\" + CommonConstant.FileSettingsLauncher);

                nameZip = Regex.Replace(setLauncher.Info.StartApp, @"[.]\w+", "");
            }
            else
            {
                var setHelp    = new SettingHelper();
                var parserPath = new ParserPathHelper();
                var setProgram = new SettingSerializer();

                Console.WriteLine("Создается файл настроек для Программы");
                Console.Write("Name = ");
                setProgram.Name = Console.ReadLine();
                Console.Write("Version = ");
                setProgram.Version = Console.ReadLine();
                Console.Write("StartApp = ");
                setProgram.StartApp = Console.ReadLine();
                var isValid = false;
                do
                {
                    try
                    {
                        Console.Write("DepId(0-Лаунчер) = ");
                        setProgram.Dep = int.Parse(Console.ReadLine());
                        isValid        = true;
                    }
                    catch (ArgumentNullException)
                    {
                        isValid = false;
                    }
                    catch (FormatException)
                    {
                        isValid = false;
                    }
                    catch (OverflowException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Введите целое число");
                    }
                }while (!isValid);

                Console.WriteLine("Следующие данные вводить в формате {\"Paths\": [\"path\", ...]}, при этом экранирование вводить вручную\nЕсли нечего вводить то просто Enter");
                do
                {
                    isValid = false;
                    Console.Write("PathFiles = ");
                    try
                    {
                        setProgram.PathFiles = parserPath.ParseToObj <Files>(Console.ReadLine());
                        isValid = true;
                    }
                    catch (ArgumentException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Неверный формат введеных данных");
                    }
                }while (!isValid);

                do
                {
                    isValid = false;
                    Console.Write("PathDirectories = ");
                    try
                    {
                        setProgram.PathDirectories = parserPath.ParseToObj <Directories>(Console.ReadLine());
                        isValid = true;
                    }
                    catch (ArgumentException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Неверный формат введеных данных");
                    }
                }while (!isValid);


                do
                {
                    isValid = false;
                    Console.Write("PathRegistries = ");
                    try
                    {
                        setProgram.PathRegistryKeys = parserPath.ParseToObj <Registries>(Console.ReadLine());
                        isValid = true;
                    }
                    catch (ArgumentException)
                    {
                        isValid = false;
                    }
                    if (!isValid)
                    {
                        Console.WriteLine("Неверный формат введеных данных");
                    }
                }while (!isValid);

                setHelp.Write(setProgram, CommonConstant.KeySettings, Constant.Path + "\\" + CommonConstant.FileSettingsLauncher);

                nameZip = Regex.Replace(setProgram.StartApp, @"[.]\w+", "");
            }

            var onlyFileSetting = -1;

            do
            {
                Console.Write("Создать только файл настроек?(Да-1,Нет-2): ");
                int.TryParse(Console.ReadLine(), out onlyFileSetting);
                if (onlyFileSetting != 1 && onlyFileSetting != 2)
                {
                    Console.WriteLine("Ошибка, введите число 1 или 2");
                }
            }while (onlyFileSetting != 1 && onlyFileSetting != 2);

            if (onlyFileSetting == 1)
            {
                return;
            }

            var zip = new ArchiveHelper();

            zip.CreateZipFromPath(Constant.Path, nameZip);

            var bytesSZip = File.ReadAllBytes(nameZip + ".zip");

            var crypt1 = new Crypt(Encoding.UTF8.GetBytes(CommonConstant.Key));
            var res1   = crypt1.Encode(bytesSZip);

            crypt1.AddToDataIv(ref res1);



            using (var file = File.Create(nameZip + ".zip"))
            {
                file.Write(res1, 0, res1.Length);
            }

            Console.WriteLine("Архив успешно создан");

            Directory.Delete(Constant.Path, true);

            while (Directory.Exists(Constant.Path))
            {
                Thread.Sleep(100);
            }

            Directory.CreateDirectory(Constant.Path);

            while (!Directory.Exists(Constant.Path))
            {
                Thread.Sleep(100);
            }

            File.Move(nameZip + ".zip", Constant.Path + "\\" + nameZip + ".zip");

            while (!File.Exists(Constant.Path + "\\" + nameZip + ".zip"))
            {
                Thread.Sleep(100);
            }
        }