.NET程序更新问题

xhueducls 2009-03-04 02:22:34
我们用C#2.0开发的WinForm程序(主文件目录下包括几个dll,几个文本文件夹,一个config文件),原来是用installshield打包后分发给用户安装实现程序版本的更新,现在要求有了新版本后将新版本放到服务器,客户端(几百个)自动检测版本如果是新版本则下载dll和文件替换原来的即可。
现在想问的是怎样实现这种自动更新更好呢?看了下大概有用WebSersive的,有用Updater application block的(好像比较麻烦),直接下载文件的,我想实现的是程序启动后能自动判断更新,整个dll有50M,还有一个附加的数据库也差不多50M,也就是说如果我们改动了文件版本和数据库对方就要下载100多M的东西,原来用IS打包的安装文件只有10多M,如果更新的时候断线又怎么处理呢? 有更新部署经验的兄弟们来说说你们都怎么实现这种自动更新的啊!谢谢
...全文
289 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhueducls 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovehongyun 的回复:]
汗..怎么数据库要更新?
那你里边的数据怎么办?
[/Quote]我的数据库是程序启动时候附加上去的,我们修改好数据库后用户直接附加使用
xhueducls 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 jinjazz 的回复:]
引用 14 楼 xhueducls 的回复:
引用 11 楼 hhxxcj 的回复:
你可以考虑做一个依赖,然后如果检查到依赖发生了变化也就是升级了,自动提示升级,也就是到一定时间时就去检测一下服务器中的内容吧,你可以试试,做一个标识,到时标识改了就升级呗
我是每次启动程序就会检测这没问题,问题是用什么方式把dll下载到本地覆盖,


我们是程序启动,问web要当前各dll的版本和下载地址,然后检查本地dll版本,发现要升级的就去下载…
[/Quote]好的 ,结贴了
jinjazz 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xhueducls 的回复:]
引用 11 楼 hhxxcj 的回复:
你可以考虑做一个依赖,然后如果检查到依赖发生了变化也就是升级了,自动提示升级,也就是到一定时间时就去检测一下服务器中的内容吧,你可以试试,做一个标识,到时标识改了就升级呗
我是每次启动程序就会检测这没问题,问题是用什么方式把dll下载到本地覆盖,
[/Quote]

我们是程序启动,问web要当前各dll的版本和下载地址,然后检查本地dll版本,发现要升级的就去下载,只需要普通http方式下载就行了.另外即便是smartclient也要注意支持手工下载升级,就是提示用户某文件需要升级,并把地址告诉他,这样碰到大文件或者糟糕的网络环境时有较大周旋的余地.
天乐 2009-03-04
  • 打赏
  • 举报
回复
学习
悔说话的哑巴 2009-03-04
  • 打赏
  • 举报
回复

[Quote=引用 5 楼 lovehongyun 的回复:]
汗..怎么数据库要更新?
那你里边的数据怎么办?
[/Quote]
就是
qinggeer 2009-03-04
  • 打赏
  • 举报
回复
呵呵,来学习。帮顶。
xhueducls 2009-03-04
  • 打赏
  • 举报
回复
大家都说说啊,明天结贴给分,都有分
xhueducls 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 qinhl99 的回复:]
嗯,clickonce
[/Quote]
我作这个更改的前提是当前程序发布的方式不能变,
chuxue1342 2009-03-04
  • 打赏
  • 举报
回复
学习~
iGouzy 2009-03-04
  • 打赏
  • 举报
回复
楼主,打包、下载、解包行不行
qinhl99 2009-03-04
  • 打赏
  • 举报
回复
可以参考这里的文章
http://blog.csdn.net/mydriverc/archive/2007/09/27/1803209.aspx
qinhl99 2009-03-04
  • 打赏
  • 举报
回复
嗯,clickonce
zzxap 2009-03-04
  • 打赏
  • 举报
回复
改成智能客户端吧.
wenyegood 2009-03-04
  • 打赏
  • 举报
回复
clickonce搞定一切
xhueducls 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hhxxcj 的回复:]
你可以考虑做一个依赖,然后如果检查到依赖发生了变化也就是升级了,自动提示升级,也就是到一定时间时就去检测一下服务器中的内容吧,你可以试试,做一个标识,到时标识改了就升级呗
[/Quote]我是每次启动程序就会检测这没问题,问题是用什么方式把dll下载到本地覆盖,
xhueducls 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ProjectDD 的回复:]
改成智能客房端吧...没说的;
[/Quote]我这已经是基于2.0的smart client了,
ProjectDD 2009-03-04
  • 打赏
  • 举报
回复
改成智能客房端吧...没说的;
hhxxcj 2009-03-04
  • 打赏
  • 举报
回复
你可以考虑做一个依赖,然后如果检查到依赖发生了变化也就是升级了,自动提示升级,也就是到一定时间时就去检测一下服务器中的内容吧,你可以试试,做一个标识,到时标识改了就升级呗
xhueducls 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hbxtlhx 的回复:]
比如下载没成功重新下载,最好有某种验证
-----------------------
把文件读成字节流,由字节数组的长度为判读条件,不难写出判断是否传完的程序。如果没有传完可以接着传,不需要重来的啊。
[/Quote]
因为原来只需要下载一个setup文件采用的是HttpWebRequest,HttpWebResponse, respStream = Response.GetResponseStream();来下载的,现在我可以照用这个方式来下载吗?
北京的雾霾天 2009-03-04
  • 打赏
  • 举报
回复
比如下载没成功重新下载,最好有某种验证
-----------------------
把文件读成字节流,由字节数组的长度为判读条件,不难写出判断是否传完的程序。如果没有传完可以接着传,不需要重来的啊。
加载更多回复(8)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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