最近公司用ClickOnce技术发布的一个产品,在客户那边出现了些奇怪的现象。客户那边的具体的情况是这样的:例如是1.0.0.6版本号的程序在服务器A上发布,同一版本号1.0.0.6也同时发布在服务器B上。问题来了,假如客户机器是干净的,也即是这台机器是从来没有运行过这个程序的,如果客户先登录服务器A,那么客户机就会下载1.0.0.6版本的程序回来在本机运行,这是正确的。此时客户把程序关了,然后去到服务器B上运行,那么客户机还会不会再从服务器B上下载1.0.0.6这个版本呢?那么ClickOnce技术的具体更新策略是怎样的呢?
我找啊找啊,发现ClickOnce技术这个东西只有在msdn有些更新策略,但是根本不是我想要的那些,所以我就自己来试观察它的更新策略。
如下是我总结出来的更新策略:
1、测试条件:在同一服务器上发布两个同一版本1.0.0.6的程序,地址分别是:http://www.kk.com/kay/A.html ,http://www.kk.com/kay/B.html ,虽然版本号不变,但是B版本的Code是在A版本上做了些更改的。
测试结果:你先从哪条link登录上去,那么它就下载那条link的执行,如果你再登录第二条link的,虽然它下载了,但是安装是会失败的。具体原因是不知道。
例如:你先用http://www.kk.com/kay/A.html登录,那么它就下载这个来安装执行。此时你把http://www.kk.com/kay/A.html的这个程序关了,再登陆http://www.kk.com/kay/B.html 那么它是不会安装http://www.kk.com/kay/B.html这个的
2、测试条件:先在服务器上发布1.0.0.6版本的A,然后用http://www.kk.com/kay/A.html来下载运行。此时改变A的code,但是版本号还是1.0.0.6,然后把原先在服务器上的删掉,再把改变了code但是版本号没有改变的发布上去,link还是http://www.kk.com/kay/A.html,然后在客户机还是用这条link去登录
测试结果:发现在客户机上运行的还是旧的code,所以ClockOnce的更新是只看版本号的,如果你版本号没有变,即使你改了Code,它也是不会自动更新的。
3、如果是同一版本的发布在两台不同ip地址的服务器的话,那么它还是会下载的,在客户机上各保存一份跟对应服务器上对应的副本。