C#如何实现软件的自动更新

赖茅吹泡泡 2013-03-19 09:37:18
原来用过socket实现过,通过共享文件夹的方式来实现拷贝的。感觉这个方法可靠性不高。想让大虾们教教我webservice 如何来通信 或者 wcf也行 最好俩个都有。在网上看到的只有客户端请求的程序,想知道怎么弄自己的服务端,有自己的服务器,不知道怎么弄。求教。
...全文
402 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
flai 2013-04-02
  • 打赏
  • 举报
回复
支持用Shell这种方法 shell做得越简单越好,因为它是不变的.
赖茅吹泡泡 2013-04-02
  • 打赏
  • 举报
回复
引用 13 楼 flai 的回复:
支持用Shell这种方法 shell做得越简单越好,因为它是不变的.
呃,我不会做shell程序...只看到网上说是可以压缩~
  • 打赏
  • 举报
回复
用ClickOnce发布即可,MSDN有详细说明
赖茅吹泡泡 2013-03-19
  • 打赏
  • 举报
回复
引用 9 楼 tellxp 的回复:
引用 3 楼 wawzc1s13 的回复:引用 1 楼 tellxp 的回复:1. 直接挂一个http网站,然后更新文件都在上面,有xml啥的记录版本; 2. 给程序加一个shell,shell是不变的,所以你现在看到qq啥的都是platform,每次先启动shell访问网站,看看有没有新版本,有的话就更新本地文件; 3. http方便一些,web service的没……
好像有点懂了,我明天去试试~_~
赖茅吹泡泡 2013-03-19
  • 打赏
  • 举报
回复
引用 8 楼 gxingmin 的回复:
客户端必须能访问到服务端上最新的文件列表,肯定有url
那服务端是如何配置的呢?
tellxp 2013-03-19
  • 打赏
  • 举报
回复
引用 3 楼 wawzc1s13 的回复:
引用 1 楼 tellxp 的回复:1. 直接挂一个http网站,然后更新文件都在上面,有xml啥的记录版本; 2. 给程序加一个shell,shell是不变的,所以你现在看到qq啥的都是platform,每次先启动shell访问网站,看看有没有新版本,有的话就更新本地文件; 3. http方便一些,web service的没有弄过,可以试试。 哦,http用的什么……
服务器端就是一个http网站,里面都是文件,通过http协议访问而已。
gxingmin 2013-03-19
  • 打赏
  • 举报
回复
客户端必须能访问到服务端上最新的文件列表,肯定有url
赖茅吹泡泡 2013-03-19
  • 打赏
  • 举报
回复
引用 5 楼 gxingmin 的回复:
服务端不用写代码啊,你看QQ升级,就一个升级客户端,它最多去服务端验证一下,剩下的都是客户端处理下载
是不是需要iis建立虚拟目录了,这个服务器的url一请求为什么就下载下来了
gxingmin 2013-03-19
  • 打赏
  • 举报
回复
服务端所有文件列表哈希码你可以先生成成一个文本文件,客户端先下载这个文本文件,然后挨个跟本地文件哈希码比较,不一致的就下载
gxingmin 2013-03-19
  • 打赏
  • 举报
回复
服务端不用写代码啊,你看QQ升级,就一个升级客户端,它最多去服务端验证一下,剩下的都是客户端处理下载
赖茅吹泡泡 2013-03-19
  • 打赏
  • 举报
回复
引用 2 楼 gxingmin 的回复:
比较服务器文件和本地文具hash码,如果不一样,则下载下来覆盖本地的 如果当前程序正在运行,需要提示用户退出主程序才能更新 给你一个下载文件类(你根据需要下载的文件列表做成多线程) C# code?1234567891011121314151617181920212223242526272829303132333435363738394041424344using ……
那服务端应该怎么实现呢?下载的代码有呢,就是服务端不知道怎么处理他这个请求
赖茅吹泡泡 2013-03-19
  • 打赏
  • 举报
回复
引用 1 楼 tellxp 的回复:
1. 直接挂一个http网站,然后更新文件都在上面,有xml啥的记录版本; 2. 给程序加一个shell,shell是不变的,所以你现在看到qq啥的都是platform,每次先启动shell访问网站,看看有没有新版本,有的话就更新本地文件; 3. http方便一些,web service的没有弄过,可以试试。
哦,http用的什么方法呢?麻烦有没有代码啥的查考以下
gxingmin 2013-03-19
  • 打赏
  • 举报
回复
比较服务器文件和本地文具hash码,如果不一样,则下载下来覆盖本地的 如果当前程序正在运行,需要提示用户退出主程序才能更新 给你一个下载文件类(你根据需要下载的文件列表做成多线程)
using System;
using System.Net;

namespace AutoUpdate
{
	/// <summary>
	/// Class1 的摘要说明。
	/// </summary>
	public class clsDownLoad2
	{
		public clsDownLoad2()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}

		public bool DownLoad(string strRemoteFile, string strLocalFile)
		{
			WebClient wc = null;
			try
			{
				wc = new WebClient();
				wc.DownloadFile(strRemoteFile, strLocalFile);
			}
			catch
			{
				return false;
			}
			finally
			{
				if(wc!=null)
				{
					wc.Dispose();
					wc = null;
				}
			}
			return true;
		}

 

	}
}
tellxp 2013-03-19
  • 打赏
  • 举报
回复
1. 直接挂一个http网站,然后更新文件都在上面,有xml啥的记录版本; 2. 给程序加一个shell,shell是不变的,所以你现在看到qq啥的都是platform,每次先启动shell访问网站,看看有没有新版本,有的话就更新本地文件; 3. http方便一些,web service的没有弄过,可以试试。

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧