我做了一个winform程序,现在想做一个自动更新的功能,当用户登录的时候会判断版本是否是最新的,如果不是最新的则要求程序进行升级,没做过这个,毫无思路,网上搜了一下,大都说用webservice,不懂啊!有做个这方面的请帮忙讲解下,有code和详细的讲解最好!

解决方案 »

  1.   

    推荐发布成ClickOnce的,版本控制自动检查都由.net framework完成,查查这方面的资料。自定义的话,
    我以前做过一个是用到EnterpriseLibrary的Update Application Block(最新的已经没有了)
    需要部署到服务端manifest,然后自己下并比较。(无服务端应用程序)现在的话,我觉得简单的就用个xml发布在IIS上,就可以控制了。
    先做个dummy.exe用于检查升级,通过 
    System.Net.WebClient.DowndLoadString("http://xxx/update.xml")
    这个version.xml格式完全可以自定义。比如:<updates>
      <update version="1.0.0.0">
         <resource name="A.dll" location="http://xxx/1.0.0.0/A.dll" />
         <resource name="B.dll" location="http://xxx/1.0.0.0/B.dll" />
         ...
      </update>
      <update version="1.0.0.1">
         <resource name="A.dll" location="http://xxx/1.0.0.1/A.dll" />
         <resource name="B.dll" location="http://xxx/1.0.0.1/B.dll" />
         ...
      </update>
    <updates>Download下来然后和本地的update.xml比较,把新的version下的dll再用
    WebClient.DownloadFile 取下来替换掉本地文件。
    然后用dummy.exe启动main.exe
      

  2.   

    看看这两个:http://www.cnblogs.com/jenry/archive/2006/08/15/477302.html
               http://www.cnblogs.com/bingyun84/archive/2010/01/28/1658673.html
      

  3.   

    虽然不用写代码,但是很麻烦的。主要就是 ClickOnce 发布,你每次发布修改下版本号就OK了,他会自动更新的。
      

  4.   

    写服务` 用服务进行程序或者DLL版本号的对比`相同就是没有更新如果不相同就是更新了 
      

  5.   

    这是我从前的一片帖子,不过加入了代码混淆,相信你也能用到。
    http://topic.csdn.net/u/20100117/00/5395816C-2A16-45BB-9A14-B1FB5E367887.html
      

  6.   

    这个很详细winform自动升级
    http://www.cnblogs.com/bingyun84/archive/2010/01/28/1658673.html
      

  7.   

    我是这么做的:先租用虚拟空间,把程序文件上传到空间里。在WinForm窗体显示前,使用WebClient(这个类使用简单,你也可以用其它更强的C#网络通信类)下载你空间中的程序版本信息(你可以将版本信息放到一个空间中的txt文件中),高于当前版本,则提示用户更新软件。
      

  8.   

    http://topic.csdn.net/u/20100907/22/e82f581a-6b82-4110-b173-79a08496a545.html?5466
      

  9.   

    每次发布程序,程序集的Assembly版本号就会自动更新,可以使用Assembly.GetExecutingAssembly().GetName().Version方法来获取程序集版本号,如果服务器端程序集版本号高则升级