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