日期:2014-05-17  浏览次数:20883 次

一个通用自动更新demo
一个用于自动更新主程序的辅助小工具,通过本地配置更新信息实现自动更新

UpdateApp.exe使用说明:
1.在服务器上配置好更新的xml(例如:http://iamsheep.net/update/modeupdate.xml),以及对应需要更新的文件
2.在本地UpdateSet.xml中配置好服务器xml路径,当前版本号,以及主程序名字

在主程序中直接调用打开UpdateApp.exe即可开始自动更新


这是第一个版本,只是完成最基本的更新功能,发现bug欢迎邮箱告知381126994@qq.com

欢迎大牛指点改进





下载地址:http://download.csdn.net/detail/ihateot/5166957

------解决方案--------------------
微软有提供clickonce,为什么不用
------解决方案--------------------
引用:
引用:微软有提供clickonce,为什么不用
Clickonce很多方面都不太自由吧。真用起来其实有时候挺无语的


ClickOnce还是很方便的, 稍微感觉有点奇怪的就是没有发生变化的文件, 也会被一起下载.
------解决方案--------------------
通过修改XML, 或者修改程序集的Version,  用来判断文件是否有变化, 控制被更新的文件更精细了, 但是反之就是手动的更改版本号会增加额外的工作.


------解决方案--------------------
代码和我的差不多。
http://blog.csdn.net/linjimu/article/details/5155586
调用界面:

以前用的:

------解决方案--------------------
我做的是把版本信息和新版软件写到数据库中的自动更新。
------解决方案--------------------
顶楼主。
我现在正好遇到自动升级的问题。客户端中有一个dll是涉及硬件的,不用的硬件用不用的dll,如果需要更新dll该怎么做呢?(dll文件名字都是一样的,不过内部实现是不一样的)
------解决方案--------------------
引用:
引用:现在都网页程序,不需要这些DD了。顶LZ。
现在 桌面程序有这么悲催么..........


桌面程序可以使用clickonce发布。
------解决方案--------------------
引用:
ClickOnce还是很方便的, 稍微感觉有点奇怪的就是没有发生变化的文件, 也会被一起下载.

如果是引用其它工程,那么你在编译时不要选择“重新build”。一旦重新build,那么自然即使是没有修改的工程也编译新版本了。

lz的概念也是可以的。毕竟.net程序只要copy就可以运行了,根本用不着去安装。

例如我们做一个即时通讯程序,它就可以自己去更新。这个时候其实根本不需要去比较什么“版本号”,只要先下载一个文件列表,列表中有每一个文件的md5值,然后只有那些需要下载的文件才下载,不需要下载的文件就不必下载。

其实根本不需要比较什么版本号。


------解决方案--------------------
ClickOnce好像要借助VS发布,而且还要源代码.....对于正规企业而言,发布人员在安全制度上是没有权限得到源代码的...
------解决方案--------------------
问一下楼主,及楼上的大牛们:


有些自己写的DLL,第1次安装时,是安装到了 GAC中,
如果想自动更新GAC中的DLL 要怎么做? 


------解决方案--------------------
楼主,如果有新增文件,而且客户在更新时,没有连续,
即 vs2003 直接到vs2010,中间间断,这种处理方式,是不是就不合适了
------解决方案--------------------
我开发的自动更新就更简单,直接把要更新的文件放在服务端和客户端同结构的文件夹内,甪一个服务直接遍历文件夹获取文件信息列表下到客户端,由客户端和本地文件比对决定更新哪些文件,维护量基本为0,因为要做的只是把最新文件扔进去,文件自己有时间戳。
当然,自动更新程序是一个很有意思的小软件,有很多细节要处理.比如自动更新自身的更新,如何绕开IIS的下载限制等
------解决方案--------------------
引用:
问一下楼主,及楼上的大牛们:


有些自己写的DLL,第1次安装时,是安装到了 GAC中,
如果想自动更新GAC中的DLL 要怎么做?


谁让你安装的?

安装了也不必它。COPY执行就够了。
------解决方案--------------------
比如说有人说“哦GAC中要有某某某dll才能执行啊!”这种话,你直接就把相应的dll拷贝到自己的程序目录里就行了,管它什么GAC呢?