龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

推荐C#开发桌面自动更新程序(服务端与客户端)(5)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
编写后台代码: public Uri DownloadUri{ get { return _DownloadUri; } set { _DownloadUri = value ; }} private Uri _DownloadUri; public bool UpdateReady{ get { return _UpdateReady; } set { _Update

编写后台代码:

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”:

image

然后启动客户端程序进行测试,应该看到程序界面里什么都没有,因为客户端和服务器端程序版本是一致的。

现在我们修改客户端版本号为1.0.0.1:

image

然后重新编译程序。

因为服务器仅仅是判断版本号是否不同,而不是哪个更高,所以不仅仅是升级,降级更新也是可以的,我们来测试一下:

image

找到所谓的新版本了^^,点开始下载:

image

下载完成,这时目录里就有update.data这个文件了。

 

 

 

现在关闭程序,等待10秒,让Update.exe完成更新:

image

可以看到,程序被降级为1.0.0.0了,而且那个“更新说明.txt”也被更新出来了。

下载

示例源代码:http://www.uushare.com/user/icesee/file/2338431

本文的XPS版本:http://www.uushare.com/user/icesee/file/2338436

精彩图集

赞助商链接