项目架构:
    1--采用智能客户端的架构,结合.net Remoting技术
    2--用户在客户端只需要部署一个MainForm程序,点击具体的菜单的时候,就可以从远程服务器上下载具体功能的窗体(Control形式),在客户端应用程序下也建有一个cache目录,如果版本和服务器上的一样,就不下载了。
    3--每个窗体没有使用sn强签名问题:
    1--有新版本了,配置正确,用户的cache目录中的对应版本也正确
    2--但是运行的时候,程序运行的还是旧的版本
    3--在用户winnt\assembly\download\下有过去的所有版本
求问:
    1--如何让程序一定运行最新的版本
    2--如何清楚winnt\assembly\download\的缓存,不要用gacutil(用户那里没有这个工具)
最后:
    谢谢每位关心这个问题的人,若解决了,我一定把方法贴上:)

解决方案 »

  1.   

    我也正在做这方面的东西,我想先问一下你的智能更新采用的是什么技术,还有就是你用GUI了吗,很多问题都会造成升级失败
      

  2.   

    你是WEBSERVICE做过生成吗?不是点重新生成而是生成,WEBSERVICE的版本号匹配吗?
    客户端更新WEB引用了吗?
      

  3.   

    我的做法是,将升级包转成二进制数据,放在数据库里。
    客户端有一个下载模块使用NetRemoting将未下载过的新的升级数据包下载。然后启动一个专门用于升级解压的进程(升级前要检查版本和备份旧版本)。
      

  4.   

    我市直接用升级包文件名表示版本,如2005020601.xxx表示2005年02月06日第一次升级。工作很正常!
      

  5.   

    还可以通过数据库里的相关字段,制定该升级包输入哪个(种)客户端。
    我们的客户端应用是分部模式,也有数据库和多个终端,那么每一个客户端通过XML存放本地版本,启动时检查数据库自动判断是否进行升级。这样只有分部的一个客户端进行下载,就可以实现每个终端的升级。
    另外还可以利用数据库字段设定强制升级或允许不升级也可兼容。以及利用可以指定某个升级包作废。
    升级包的数据可以是更新型,不必要包含以前的升级数据。
    还可以通过设定检查点使客户端在升级时的版本备份保留下来,用于恢复。非检查点的备份在确定正常时可以删除。
      

  6.   

    各位请注意一下,我的模型中升级是没有问题的,只是运行的时候调用的assembly不对
      

  7.   

    如果你装SKYPE咱们可以语音聊我觉得你这写得太累了用户名:stvb168
      

  8.   

    如果没有请把你客户端调用时WEBSERVICE返回的XML信息贴出来,要不猜到明年也猜不出来啊
      

  9.   

    看到一篇法语文章,讲述如何通过API删除ADC的(Assembly Download Cache),消化完告诉大家,谢谢了!
      

  10.   

    找到答案了,简单的说就是删文件夹
    参考网址
    http://www.dotnet-magazin.de/itr/online_artikel/psecom,id,550,nodeid,31.html
    还有一段代码:
    using System;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.IO;
    sealed class App
    {
    [DllImport("fusion.dll",CharSet=CharSet.Unicode,SetLastError=true)]
    static extern int GetCachePath(int flags, [Out] StringBuilder path, ref int count);
    static void Main() {
    StringBuilder path = new StringBuilder();
    int count = 260;
    GetCachePath(4, path, ref count);
    try {
    Directory.Delete(path.ToString(), true);
    }
    catch(SystemException) {
    // ignore
    }
    }
    }
    This unsupported API won't work for the next .NET Framework release...
      

  11.   

    试验过了,Assembly Download Cache里的全部都被清了。
    提醒继续关注的朋友,我的下载的版本是正确的,只是运行的时候不正确。
    忘了说:我运行调用的方法是Assembly.Load("cache\....")