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); } }