public static void StartUpdaterProcess(List <string> args, ExitAndRestartModeT mode) { string filename = Path.Combine(System.IO.Path.GetTempPath(), "OptionsOracle Updater.exe"); try { File.Copy(OptionsOracleUpdaterFileName, filename, true); } catch { filename = OptionsOracleUpdaterFileName; } if (!File.Exists(filename)) { filename = OptionsOracleUpdaterFileName; } Process pro = new Process(); pro.StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory; pro.StartInfo.FileName = filename; if (mode == ExitAndRestartModeT.ExitAndRestart) { args.Add("/run"); args.Add(Application.ExecutablePath.Trim().TrimEnd(new char[] { '\\' })); } string arg_line = ""; foreach (string arg in args) { if (arg.Trim().Contains(" ")) { arg_line += "\"" + arg.Trim() + "\" "; } else { arg_line += arg.Trim() + " "; } } if (arg_line.Contains("/update") && System.Environment.OSVersion.Version.Major > 5) { pro.StartInfo.Verb = "runas"; pro.StartInfo.UseShellExecute = true; } pro.StartInfo.Arguments = arg_line.Trim(); pro.Start(); if (mode == ExitAndRestartModeT.Wait) { pro.WaitForExit(); } if (mode == ExitAndRestartModeT.Exit || mode == ExitAndRestartModeT.ExitAndRestart) { Environment.Exit(0); } }
public static bool ResetConfiguration(ExitAndRestartModeT mode) { List <string> args = new List <string>(); try { args.Add(@"/reset"); StartUpdaterProcess(args, mode); } catch { return(false); } // reset application settings as well Properties.Settings.Default.Reset(); Properties.Settings.Default.Save(); return(true); }