推荐C#开发桌面自动更新程序(服务端与客户端)(5)
编写后台代码:
public Uri DownloadUri { get { return _DownloadUri; } set { _DownloadUri = value; } } private Uri _DownloadUri; public bool UpdateReady { get { return _UpdateReady; } set { _UpdateReady = value; } } private bool _UpdateReady; private void Window_Loaded(object sender, RoutedEventArgs e) { var u = new MyApp.ServiceReference.UpdateSoapClient(); var s=u.GetUpdate(System.Windows.Forms.Application.ProductVersion); if (!string.IsNullOrEmpty(s)) { //获取相对于Web服务所在Uri的Uri DownloadUri = new Uri(u.Endpoint.ListenUri, s); label1.Visibility = button1.Visibility = Visibility.Visible; } } private void button1_Click(object sender, RoutedEventArgs e) { var c = new WebClient(); c.DownloadFile(DownloadUri, System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "update.data")); UpdateReady = true; label2.Visibility = Visibility.Visible; } private void Window_Closed(object sender, EventArgs e) { if (UpdateReady) { Process.Start(System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "update.exe")); } }
测试
现在将主程序、附属文件和Update.exe放在一起,并将主程序及附属文件复制一份放到服务器端的App_data/Update/目录中,再添加一个“更新说明.txt”:
然后启动客户端程序进行测试,应该看到程序界面里什么都没有,因为客户端和服务器端程序版本是一致的。
现在我们修改客户端版本号为1.0.0.1:
然后重新编译程序。
因为服务器仅仅是判断版本号是否不同,而不是哪个更高,所以不仅仅是升级,降级更新也是可以的,我们来测试一下:
找到所谓的新版本了^^,点开始下载:
下载完成,这时目录里就有update.data这个文件了。
现在关闭程序,等待10秒,让Update.exe完成更新:
可以看到,程序被降级为1.0.0.0了,而且那个“更新说明.txt”也被更新出来了。
下载
示例源代码:http://www.uushare.com/user/icesee/file/2338431
本文的XPS版本:http://www.uushare.com/user/icesee/file/2338436