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