Example #1
0
        public void RewriteLastToNewSettingsLauncher(LauncherSettingSerializer thisSet, LauncherSettingLastSerializer lastSet, string key, string path)
        {
            if (lastSet.InfoInstallPrograms != null)
            {
                var progs = new List <SettingSerializer>(lastSet.InfoInstallPrograms.Count());
                foreach (var prog in lastSet.InfoInstallPrograms)
                {
                    progs.Add(new SettingSerializer()
                    {
                        Name             = prog.Name,
                        Dep              = prog.Dep,
                        Version          = prog.Version,
                        Path             = prog.Path,
                        StartApp         = prog.StartApp,
                        PathFiles        = prog.PathFiles,
                        PathDirectories  = prog.PathDirectories,
                        PathRegistryKeys = prog.PathRegistryKeys
                    });
                }
                thisSet.InfoInstallPrograms = progs;
            }

            Write(thisSet, key, path);
        }
        private async void DownloadInstallProgram()
        {
            _mainWindowVeiwModel.IsEnabledTable = false;
            _mainWindowVeiwModel.CheckProgramTimer.Stop();
            var selectedRow = _mainWindowVeiwModel.SelectedRow;

            var programInfo = new ProgramInfoSerializer();

            var net = new Net();

            var setHelp = new SettingHelper();
            LauncherSettingSerializer launcherSet = null;

            try
            {
                launcherSet = setHelp.Read <LauncherSettingSerializer>(CommonConstant.KeySettings, CommonConstant.FileSettingsLauncher);
            }
            catch (Exception ex)
            {
                if (ex is DirectoryNotFoundException || ex is FileNotFoundException)
                {
                    MessageBox.Show(CommonConstant.NotFoundFileSettings);
                }
                else
                {
                    MessageBox.Show(CommonConstant.ErrorReadOrWriteSettings);
                }
                Application.Current.Shutdown();
                return;
            }

            programInfo.dep = selectedRow.Dep;


            var request = await net.RequestAsync(
                Constant.UrlGetProgram,
                Net.Post,
                programInfo,
                _mainWindowVeiwModel.Auth,
                null,
                (s, e) =>
            {
                _mainWindowVeiwModel.ProgressValue = e.BytesReceived * 100 / e.TotalBytesToReceive;
            });

            if (request.detail != null)
            {
                _mainWindowVeiwModel.CheckProgramTimer.Start();
                MessageBox.Show(ErrorParser.Parse(request.detail));
                _mainWindowVeiwModel.IsEnabledTable = true;
                return;
            }

            var cryptBytesProgram = Convert.FromBase64String(request.data);


            if (Hash.Sha256Bytes(cryptBytesProgram) == request.hash)
            {
                var crypt = new Crypt(Encoding.UTF8.GetBytes(CommonConstant.Key));
                crypt.RemoveAndSetIv(ref cryptBytesProgram);

                var bytesProgram = crypt.Decode(cryptBytesProgram);


                var zip = new ArchiveHelper();

                var bytesProgramSetting = zip.Extract(bytesProgram, request.hash);


                var getProgramSetting = setHelp.Read <SettingSerializer>(bytesProgramSetting, CommonConstant.KeySettings);

                getProgramSetting.Path = request.hash;


                if (launcherSet.InfoInstallPrograms == null || launcherSet.InfoInstallPrograms?.Count() == 0)
                {
                    launcherSet.InfoInstallPrograms = new List <SettingSerializer>()
                    {
                        getProgramSetting
                    };
                }
                else
                {
                    (launcherSet.InfoInstallPrograms as List <SettingSerializer>).Add(getProgramSetting);
                }


                setHelp.Write(launcherSet, CommonConstant.KeySettings, CommonConstant.FileSettingsLauncher);

                _mainWindowVeiwModel.SelectedRow.SetStateAfterDownloadAndInstall();
                _mainWindowVeiwModel.SelectedRow.Status = StatusHelper.InstallAndUpdated;
                _mainWindowVeiwModel.ProgressValue      = 0;
            }
            else
            {
                MessageBox.Show(Constant.NoHashEqual);
            }
            _mainWindowVeiwModel.IsEnabledTable = true;
            _mainWindowVeiwModel.CheckProgramTimer.Start();
        }
        private async void UpdateProgram()
        {
            var programInfo = new ProgramInfoSerializer();

            _mainWindowVeiwModel.CheckProgramTimer.Stop();
            _mainWindowVeiwModel.IsEnabledTable = false;
            var net = new Net();

            var setHelp = new SettingHelper();
            SettingSerializer         selectProgram = null;
            LauncherSettingSerializer launcherSet   = null;

            try
            {
                launcherSet = setHelp.Read <LauncherSettingSerializer>(CommonConstant.KeySettings, CommonConstant.FileSettingsLauncher);

                selectProgram = launcherSet.InfoInstallPrograms?.FirstOrDefault(p => p.Dep == _mainWindowVeiwModel.SelectedRow.Dep);
                if (selectProgram == null)
                {
                    MessageBox.Show(Constant.NotFoundInstallProgram);
                    _mainWindowVeiwModel.IsEnabledTable = true;
                    return;
                }
            }
            catch (Exception ex)
            {
                if (ex is DirectoryNotFoundException || ex is FileNotFoundException)
                {
                    MessageBox.Show(CommonConstant.NotFoundFileSettings);
                }
                else
                {
                    MessageBox.Show(CommonConstant.ErrorReadOrWriteSettings);
                }
                Application.Current.Shutdown();
                return;
            }

            programInfo.dep = _mainWindowVeiwModel.SelectedRow.Dep;



            var request = await net.RequestAsync(
                Constant.UrlGetProgram,
                Net.Post,
                programInfo,
                _mainWindowVeiwModel.Auth,
                null,
                (s, e) =>
            {
                _mainWindowVeiwModel.ProgressValue = e.BytesReceived * 100 / e.TotalBytesToReceive;
            });

            if (request.detail != null)
            {
                _mainWindowVeiwModel.CheckProgramTimer.Start();
                MessageBox.Show(ErrorParser.Parse(request.detail));
                _mainWindowVeiwModel.IsEnabledTable = true;
                return;
            }

            var cryptBytesProgram = Convert.FromBase64String(request.data);


            if (Hash.Sha256Bytes(cryptBytesProgram) == request.hash)
            {
                var crypt = new Crypt(Encoding.UTF8.GetBytes(CommonConstant.Key));
                crypt.RemoveAndSetIv(ref cryptBytesProgram);

                var bytesLauncher = crypt.Decode(cryptBytesProgram);


                try
                {
                    setHelp.RemoveProgram(selectProgram.Path, true);
                    setHelp.RemoveDumps <SettingSerializer, IRemoveData>(selectProgram);
                }
                catch (DirectoryNotFoundException)
                {
                    MessageBox.Show(Constant.NotFoundFileOrDirectoryWithProgram);
                }
                catch (FileNotFoundException)
                {
                    MessageBox.Show(Constant.NotFoundFileOrDirectoryWithProgram);
                }


                var zip = new ArchiveHelper();

                var bytesProgramSetting = zip.Extract(bytesLauncher, request.hash);

                var getProgramSetting = setHelp.Read <SettingSerializer>(bytesProgramSetting, CommonConstant.KeySettings);

                getProgramSetting.Path = request.hash;


                var instalProgs = launcherSet.InfoInstallPrograms.ToList();
                for (int i = 0; i < instalProgs.Count; i++)
                {
                    if (instalProgs[i].Dep == getProgramSetting.Dep)
                    {
                        instalProgs[i] = getProgramSetting;
                        break;
                    }
                }


                setHelp.Write(launcherSet, CommonConstant.KeySettings, CommonConstant.FileSettingsLauncher);

                _mainWindowVeiwModel.SelectedRow.SetStateAfterUpdate();
                _mainWindowVeiwModel.SelectedRow.Status  = StatusHelper.InstallAndUpdated;
                _mainWindowVeiwModel.SelectedRow.Version = getProgramSetting.Version;
                _mainWindowVeiwModel.ProgressValue       = 0;
            }
            else
            {
                MessageBox.Show(Constant.NoHashEqual);
            }
            _mainWindowVeiwModel.IsEnabledTable = true;
            _mainWindowVeiwModel.CheckProgramTimer.Start();
        }
Example #4
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);
            }
        }