C# 自动更新程序代码

C# 自动更新程序代码,c#,auto-update,C#,Auto Update,这是我的代码,当我点击按钮更新时,程序崩溃了。 有人能帮我修一下吗 或者给我另一个正在运行的代码。如果Test.exe正在运行,则您无法替换它(您可能从文件.replace中得到一个异常)(您应该查看它并在问题中包含该信息)@crashmstr是的,我遇到了一个异常,你能帮我处理这个代码吗?异常中的信息(类型、字符串,可能还有任何内部异常)是一个非常重要的线索,可以说明什么是错误的。任何抛出异常的代码问题都应该包含这些信息。作为如何“修复”的说明这是:你需要有第二个程序来替换。调用它并退出,它等

这是我的代码,当我点击按钮更新时,程序崩溃了。 有人能帮我修一下吗


或者给我另一个正在运行的代码。

如果
Test.exe
正在运行,则您无法替换它(您可能从
文件.replace
中得到一个异常)(您应该查看它并在问题中包含该信息)@crashmstr是的,我遇到了一个异常,你能帮我处理这个代码吗?异常中的信息(类型、字符串,可能还有任何内部异常)是一个非常重要的线索,可以说明什么是错误的。任何抛出异常的代码问题都应该包含这些信息。作为如何“修复”的说明这是:你需要有第二个程序来替换。调用它并退出,它等待
Test.exe
关闭,然后替换旧的
Test.exe
,然后启动
Test.exe
并退出。@crashmstr伟大的补丁!:)我现在就试试!
        private void UpdatesButton_OnClick(object sender, RoutedEventArgs e)
    {
        WebRequest wr = WebRequest.Create(new Uri("http://Test.com/Updater/Test.txt"));
        WebResponse ws = wr.GetResponse();
        StreamReader sr = new StreamReader(ws.GetResponseStream());

        string currentversion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
        string newversion = sr.ReadToEnd();

        if (currentversion.Contains(newversion))
        {
            this.ShowMessageAsync("Updater", "Your client is up to date !");
        }
        else
        {
            WebClient webClient = new WebClient();
            webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
            webClient.DownloadFileAsync(new Uri("http://Test.com/Updater/Test.exe"), @"TestUpdated.exe");
        }
    }

    private void Completed(object sender, AsyncCompletedEventArgs e)
    {
        File.Replace("Test.exe", "TestUpdated.exe", "TestOld.exe");
        Process.GetCurrentProcess().Kill();
    }