AcManager.Tools.Miscellaneous.AppUpdater.InstallAndRunNewVersion C# (CSharp) Method

InstallAndRunNewVersion() private static method

private static InstallAndRunNewVersion ( ) : void
return void
        private static void InstallAndRunNewVersion() {
            /* will be replaced this file */
            var originalFilename = MainExecutingFile.Location.ApartFromLast(UpdatePostfix, StringComparison.OrdinalIgnoreCase) + ExecutableExtension;

            /* if file already exists */
            if (File.Exists(originalFilename)) {
                /* ten attempts, five seconds */
                for (var i = 0; i < 10; i++) {
                    try {
                        File.Delete(originalFilename);
                        break;
                    } catch (Exception) {
                        Thread.Sleep(500);
                    }
                }

                /* if we couldn’t delete file normally, let’s kill any process with this name */
                if (File.Exists(originalFilename)) {
                    try {
                        foreach (var process in Process.GetProcessesByName(Path.GetFileName(originalFilename))) {
                            process.Kill();
                        }
                    } catch (Exception) {
                        // ignored
                    }

                    /* four attempts, two seconds */
                    for (var i = 0; i < 4; i++) {
                        try {
                            File.Delete(originalFilename);
                        } catch (Exception) {
                            Thread.Sleep(500);
                        }
                    }
                }

                if (File.Exists(originalFilename)) {
                    MessageBox.Show(
                            string.Format(ToolsStrings.AppUpdater_CannotUpdate_HelpNeeded, Path.GetFileName(originalFilename),
                                    Path.GetFileName(MainExecutingFile.Location)),
                            ToolsStrings.AppUpdater_UpdateFailed, MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }

            File.Copy(MainExecutingFile.Location, originalFilename);
            ProcessExtension.Start(originalFilename, Environment.GetCommandLineArgs().Skip(1));
            Environment.Exit(0);
        }