private static void InvokeReplace() { var originalLocation = Location.GetOriginalLocation(); var tempLocation = Location.GetTempLocation(); try { var replaceArgs = new ReplaceArgs { OriginalLocation = originalLocation, TempLocation = tempLocation }; Process.Start(tempLocation, replaceArgs.ToString()); } catch (Exception ex) { var message = string.Format("Unable to start executable {0}", originalLocation); try { File.Delete(tempLocation); } catch { } throw new InvalidOperationException(message, ex); } }