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

 我来答
Tech_Monkeye5
2018-06-07 · TA获得超过984个赞
知道小有建树答主
回答量:330
采纳率:92%
帮助的人:78.3万
展开全部
很简单建立splash启动入口文件。
Splash每次启动时检查当前版本号是否与源版本号相同。如果相同则启动主程序不必更新。如果不同,对比文件版本号,或下载更新包进行覆盖即可。
一般情况下这种情况足以使用,不必对splash进行更新。大多数的处理方案是如果涉及到对splash更新时,要求客户手工更新或生新安装新的版本即可。
换句话来说,把splash看作是主程序的引导启动,它的功能除了引导主程序启动还会检查主程序是否需要更新。当然,如果实现全自动自更新时,可以考虑在应用程序文件夹中建立一个update文件夹。让splash启动后启动其中的批处理文件,批处理文件会干掉slpash进程,然后覆盖掉splash文件(主程序也可以这么干,但是有一定的危险性)。
我当时做过一个自动更新的应用程序(收银机自更),每天软件启动时调用的就是splash检查软件版本号。但我们使用的单一维护的方式,并不是让你下载更新包(软件统一更新,不涉及分支版本,所以统一维护即可),发现更新后,再对比所有文件版本号(与软件版本号不同),下载所有不同的软件版本下进行覆盖,覆盖完成后由splash启动主程序。
但是——我只是说但是,计划永远跟不上变化,领导要求必须会自更新splash!其实产生的原因很简单,当我们并没有计划将splash放到维护源,结果一个哥们在测试在将splash放到维护源被下载到了客户机,但确定无法覆盖正在运行的splash而导致更新失败(文档中注明了不需要将splash放到维护源的,测试人员闲的淡痛,非要试一下,然后将错误直接上报,虽然解析了原因,但领导要求一定要会更新splash自己,当然理由也非常充分——如果你的splash存在bug呢)!在这种情况下,我们使用了.bat文件,将splash运行时先检查update文件中的内容,如果有bat文件,则运行bat文件,由bat文件处理update中其他文件的拷贝。批处理就干了一件事——干掉正在运行splash,从update文件中将其拷贝出来,然后再运行splash。而且这个批处理文件的来源于维护源!也可以写复杂的bat文件进行其他一些相关的处理。update在应用程序文件夹内,所以只需要做相对路径。反正永远会存在一定的问题——你怕的是splash被无意上传到维护源,而bat文件编写错误时更有问题,而且而且而且,你不觉得这玩意是一个后门吗?测试人员只管的是测试,他们不会考虑到这个安全性的——反正没人说,如果哪天维护源被别有用心的人拿到,写了那个一个bat文件,唉呀——后果我们都不可想想!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式