求教winform程序自动升级的方案

时间:2023-02-21 10:12:50
初学c# winform编程,请大家给一个比较详细的自动升级方案,客户端和服务端都有,谢谢了。

15 个解决方案

#1


首先你要在程序中加一个功能,每次启动前 先判断当前版本是否为最新版本,如果是正常启动,如果不是,从服务器下载最新的动态库将现有的库给替换。这样就可以了吧。

#2


给个简单的思路:做个启动程序,启动主程序前先到服务器检测是否有新版本,有则下载覆盖之;没有就直接启动主程序。

这里有个文档和源码都齐全的升级组件,你可以参考下  http://download.csdn.net/detail/vb763305825/5305468

#3


引用 1 楼 luoye4321 的回复:
首先你要在程序中加一个功能,每次启动前 先判断当前版本是否为最新版本,如果是正常启动,如果不是,从服务器下载最新的动态库将现有的库给替换。这样就可以了吧。

谢谢指教,不过我更需要一个比较具体的例子

#4


具体方案,你就用微软的ClickOnce部署吧。

#5


引用 3 楼 woshizhaoxuhui 的回复:
Quote: 引用 1 楼 luoye4321 的回复:

首先你要在程序中加一个功能,每次启动前 先判断当前版本是否为最新版本,如果是正常启动,如果不是,从服务器下载最新的动态库将现有的库给替换。这样就可以了吧。

谢谢指教,不过我更需要一个比较具体的例子

你要的到底是方案还是源码?
方案很简单,两个程序,一个主程序,一个升级程序,先启动哪个都无所谓.
然后判断版本,下载.
下载方式可以很多种,socket传输,http下载,数据库读取文件,或者共享目录直接COPY,根据环境选择一种
直接求 DEMO,每个人实现方式不一样,也不能保证在你的应用中合适.
问题并不复杂,把问题分解开,哪里不会用查下就行了.
想不劳而获,直接拿到源码改都不改就用,不现实.

#6


引用 4 楼 bwangel 的回复:
具体方案,你就用微软的ClickOnce部署吧。

这个是实行方法里面比较简单的

#7


程序启动时和将本地版本和服务器版本进行比对,如果没有更新版本就直接启动程序;如果有更新版本则先启动更新程序,从服务器获取更新文件将本地文件覆盖即可,更新成功之后自动启动应用程序。如果你还想做得更好一点的话,可以再程序中加一个检查更新的按钮,可以随时检查是否有更新版本。方案是这样,源码得自己写。

#10


楼上都说的很清楚了,两个进程,一个主进程,一个升级进程,升级进程负责判断本地程序版本v1跟服务器版本v2,如果v2>v1,就从服务端下载更新包到本地,然后解压覆盖即可,很简单,自己尝试着写写吧

#11


文件要覆盖的目录可以根据你的主进程名称到注册表里找

#12


可以用iis的下载来实现呀,我是做过,看上去笨一些,但是很实用很好用的。原理大家都知道就是判断文件日期然后替换即可,把握这个思路其实只要做一个判断->下载->替换->启动的程序就可以了,专门做一个下载器,伪装成程序的主入口,每次进入都点击,但是内部是一个判断是否有更新的逻辑,下载完成后再隐藏当前窗体然后启动主程序窗口即可,前提是你的程序得做成dll单个模块的才好一些,如果只是一个单个的exe的话也一样的原理,每次只要下载一个更新文件即可。

#13


我的更新程序是写在主exe里的。但是更新文件需要用Inner setup做成安装包。判断完本地版本和服务器版本后 ,主程序调下载安装包,调用安装包然后关掉自己就行了。

这样避免了升级进程的存在,麻烦打是每次都要打包。

#14


moeny 多多 就有人给你了

#15


顶,我也需要这个

#1


首先你要在程序中加一个功能,每次启动前 先判断当前版本是否为最新版本,如果是正常启动,如果不是,从服务器下载最新的动态库将现有的库给替换。这样就可以了吧。

#2


给个简单的思路:做个启动程序,启动主程序前先到服务器检测是否有新版本,有则下载覆盖之;没有就直接启动主程序。

这里有个文档和源码都齐全的升级组件,你可以参考下  http://download.csdn.net/detail/vb763305825/5305468

#3


引用 1 楼 luoye4321 的回复:
首先你要在程序中加一个功能,每次启动前 先判断当前版本是否为最新版本,如果是正常启动,如果不是,从服务器下载最新的动态库将现有的库给替换。这样就可以了吧。

谢谢指教,不过我更需要一个比较具体的例子

#4


具体方案,你就用微软的ClickOnce部署吧。

#5


引用 3 楼 woshizhaoxuhui 的回复:
Quote: 引用 1 楼 luoye4321 的回复:

首先你要在程序中加一个功能,每次启动前 先判断当前版本是否为最新版本,如果是正常启动,如果不是,从服务器下载最新的动态库将现有的库给替换。这样就可以了吧。

谢谢指教,不过我更需要一个比较具体的例子

你要的到底是方案还是源码?
方案很简单,两个程序,一个主程序,一个升级程序,先启动哪个都无所谓.
然后判断版本,下载.
下载方式可以很多种,socket传输,http下载,数据库读取文件,或者共享目录直接COPY,根据环境选择一种
直接求 DEMO,每个人实现方式不一样,也不能保证在你的应用中合适.
问题并不复杂,把问题分解开,哪里不会用查下就行了.
想不劳而获,直接拿到源码改都不改就用,不现实.

#6


引用 4 楼 bwangel 的回复:
具体方案,你就用微软的ClickOnce部署吧。

这个是实行方法里面比较简单的

#7


程序启动时和将本地版本和服务器版本进行比对,如果没有更新版本就直接启动程序;如果有更新版本则先启动更新程序,从服务器获取更新文件将本地文件覆盖即可,更新成功之后自动启动应用程序。如果你还想做得更好一点的话,可以再程序中加一个检查更新的按钮,可以随时检查是否有更新版本。方案是这样,源码得自己写。

#8


#9


#10


楼上都说的很清楚了,两个进程,一个主进程,一个升级进程,升级进程负责判断本地程序版本v1跟服务器版本v2,如果v2>v1,就从服务端下载更新包到本地,然后解压覆盖即可,很简单,自己尝试着写写吧

#11


文件要覆盖的目录可以根据你的主进程名称到注册表里找

#12


可以用iis的下载来实现呀,我是做过,看上去笨一些,但是很实用很好用的。原理大家都知道就是判断文件日期然后替换即可,把握这个思路其实只要做一个判断->下载->替换->启动的程序就可以了,专门做一个下载器,伪装成程序的主入口,每次进入都点击,但是内部是一个判断是否有更新的逻辑,下载完成后再隐藏当前窗体然后启动主程序窗口即可,前提是你的程序得做成dll单个模块的才好一些,如果只是一个单个的exe的话也一样的原理,每次只要下载一个更新文件即可。

#13


我的更新程序是写在主exe里的。但是更新文件需要用Inner setup做成安装包。判断完本地版本和服务器版本后 ,主程序调下载安装包,调用安装包然后关掉自己就行了。

这样避免了升级进程的存在,麻烦打是每次都要打包。

#14


moeny 多多 就有人给你了

#15


顶,我也需要这个