void UninstallApp(CurApp curapp)
        {
            string uninstallString = curapp.UninstallString.ToLower();

            #region Удаляем Msi пакеты используя msiexec
            if (!string.IsNullOrEmpty(uninstallString) && uninstallString.Contains("msiexec"))
            {
                Console.WriteLine($"Будем удалять {curapp.DisplayName} версии {curapp.DisplayVersion} используя msiexec");
                if (uninstallString.Contains("/i"))
                {
                    Console.WriteLine("Vmesto udaleniy zapustinza ustanovka");
                    uninstallString = uninstallString.ToLower().Replace("/i", "/x");
                    Console.WriteLine($"New uninstallstring: {uninstallString}");

                    Console.ReadKey();
                }

                if (!uninstallString.Contains("quiet"))
                {
                    uninstallString = uninstallString + " /quiet";
                }

                if (ForceRestart & !uninstallString.Contains("forcerestart"))
                {
                    uninstallString = uninstallString + " /forcerestart";
                }
                uninstallString = uninstallString + $" /log {PathToTempFileLog}";
                int numuninst = Cmd(uninstallString);

                switch (numuninst)
                {
                case 0:
                    EventLog?.Invoke(this, new InstallEvent("Event: программа удалена", PathToTempFileLog, ResultJob.Uninstall));
                    break;

                case 1641:
                    EventLog?.Invoke(this, new InstallEvent("Event: программа установлена и требуется перезагрузка", PathToTempFileLog, ResultJob.Uninstall));
                    Environment.Exit(0);
                    break;

                default:
                    EventLog?.Invoke(this, new InstallEvent($"Event: ошибка № {numuninst} при удалении программы", PathToTempFileLog, ResultJob.ErrorUninstall));
                    Environment.Exit(0);
                    break;
                }
            }
            #endregion
        }
        public bool IsNeedInstall(CurApp curapp)
        {
            string[] arrVersionCurApp = curapp.DisplayVersion.Trim().Split('.');
            string[] arrversionMSI    = Version.Trim().Split('.');
            int      count            = (arrVersionCurApp.Count() >= arrversionMSI.Count()) ? arrversionMSI.Count() : arrVersionCurApp.Count();

            for (int i = 0; i < count; i++)
            {
                Console.WriteLine($"arrversionMSI[{i}] = {int.Parse(arrversionMSI[i])} arrvDisplayVersion[{i}] = {int.Parse(arrVersionCurApp[i])}");
                if (int.Parse(arrversionMSI[i]) > int.Parse(arrVersionCurApp[i]))
                {
                    return(true);
                }

                else if ((int.Parse(arrversionMSI[i]) < int.Parse(arrVersionCurApp[i])))
                {
                    return(false);
                }
            }

            return(false);
        }
        public void InstallApp()
        {
            // 1. Проверяем: есть ли установленная версия данной программы?
            CurApp curapp = ListProg();


            if (curapp != null)
            {
                Console.WriteLine($"Cur app version {curapp.DisplayVersion}");
                Console.WriteLine($"Cur app UninstallString {curapp.UninstallString}");
                if (!IsNeedInstall(curapp))
                {
                    // Если версия установленного приложения больше или равно версии msi - то просто выходим из приложения.
                    Console.WriteLine("программа не требует обновления  - завершаем работу");
                    Environment.Exit(0);
                }
                else
                {
                    // если Update = false - то удаляем текущую установленную программу.
                    if (!Update)
                    {
                        UninstallApp(curapp);
                        if (ForceRestart)
                        {
                            Environment.Exit(0);
                        }
                    }
                }
            }



            string installString = $"msiexec /i \"{PathMsi}\" /quiet";

            if (ForceRestart)
            {
                installString = installString + " /forcerestart";
            }
            installString = installString + $" /log {PathToTempFileLog}";

            int numinst = Cmd(installString);

            switch (numinst)
            {
            case 0:
                EventLog?.Invoke(this, new InstallEvent("Event: программа установлена", PathToTempFileLog, ResultJob.Install));
                break;

            case 1641:
                EventLog?.Invoke(this, new InstallEvent("Event: программа установлена и требуется перезагрузка", PathToTempFileLog, ResultJob.Install));
                Environment.Exit(0);
                break;

            default:
                EventLog?.Invoke(this, new InstallEvent($"Event: ошибка № {numinst} при установки программы", PathToTempFileLog, ResultJob.ErrorInstall));
                Environment.Exit(0);
                break;
            }

            if (ForceRestart)
            {
                Environment.Exit(0);
            }
        }