C#制作的WinForm程序启动时,判断是否能够连接到指定的服务器,判断系统及使用的组件等是否需要更新,怎么实现呢?

解决方案 »

  1.   

    系统所使用的文件和版本已经配置在XML中
      

  2.   

    那你就把文件的MD5 值也加到XML中去,运行程序时读取服务器上的XML,然后解析,判断本地的文件是否和服务器上的的文件的MD5值相等,如果不相等就下载
      

  3.   

    "clickonce"~~~自己看下msdn中相关内容,检查和更新都会由.net帮你干掉
      

  4.   


    try
    {
    }
    catch
    {
    }
      

  5.   

    clickOne 、Bits 都可办到
      

  6.   

    bits 可以做,像自动更新一样,一旦系统带宽允许就去检查下载更新。
    自己做,提供如下思路:
    1.服务端需有一个收集程序组件文件信息的服务(简称:AppService),每次发生更新时,检查组件的更新情况并缓存。
    2.编写一个专门负责客户端更新的组件。该组件为程序的入口。每次启动程序,会先检查AppService是否正常。如正常,将客户端组件版本信息发送给AppService,由AppService对比缓存的组件最新版本信息,确定该请求客户端的更新包。AppSerivce提供更新包的生成。完成更新后,负责更新模块在按照配置信息加载真正的客户端程序入口组件。
    ps:对于负责客户端更新组件的自身更新需特殊处理。
      

  7.   

    SmartClient是不是要搞WebService,没有搞过不是太懂。
    clickOne 、Bits在msdn里没有看到相应的内容,是在哪里可以找到?
      

  8.   

    使用appupdater自动更新(一)
    除了在软件架构设计中需要规划好各功能项以备分别可以实现局部升级外,重要的是配置好自动升级组件。然而该自动升级组件并非直接引用即可,它需要遵守一定的规则部署才能完成自动升级。以下给出它的配置手册。 
    必备的文件清单: 文件名 
     功能描述 
     
    AppStart.exe 
     类似中介代理的程序,由它来启动真正的应用程序。不直接启动主应用程序是为了防止主应用程序升级的过程中被锁死而造成升级失败。 
     
    AppStart.config 
     AppStart.exe的配置文件,它指定要启动的应用程序所在目录,以及要启动应用程序的名称 
     
    appupdater.dll 
     最重要的部件,自动升级的主要组件 
     
    system.Resources.dll 
     资源文件 
     
    mscorlib.Resources.dll 
     核心资源文件 
     
    UpdateVersion.xml 
     服务器端版本升级配置文件 
      自动升级配置: 注意事项: 1.  因为自动升级组件appupdater代码里写死的原因,AppStart.config和AppStart.exe是不能改名的! 2.  服务器端最好使用Windows 2000 Server .  使用Windows 2003 Server 会因为网络安全策略造成访问不了服务器目录资源,升级失败。 3.  服务器端需要把提供升级的该站点配置为允许目录浏览。 4.  文件的层次结构必须如下配置: 客户端执行程序目录结构如下   
     AppStart.exe   (不能改名) 
     
      
     AppStart.config (不能改名) 
     
      
     ClientExe  (这个目录名称可以自定,但必须同时修改AppStart.config的AppFolderName项内容)   
       
     TrySmartClient.exe(这个是自定的主应用程序) 
     
      
       
     appupdater.dll (自动升级组件) 
     
      其中AppStart.config内容如下: <Config>   <AppFolderName>ClientExe</AppFolderName>   <AppExeName>TrySmartClient.exe</AppExeName>  </Config>   AppStart.config解释: <AppFolderName>ClientExe</AppFolderName> 告诉AppStart.exe要寻找的主应用程序目录名称。   <AppExeName>TrySmartClient.exe</AppExeName> 告诉AppStart.exe要寻找的主应用程序名。     服务器端目录结构(该目录需要设置为允许目录浏览):   
     UpdateVersion.xml (必须,不能改名) 
     
      
     Ver  (可自定,但必须同时修改UpdateVersion.xml的ApplicationUrl项内容) 
     
       
       
     TrySmartClient.exe  (新版本主应用程序) 
     
      
       
     mscorlib.Resources.dll (资源文件) 
     
      
       
     system.Resources.dll(资源文件) 
     
      其中UpdateVersion.xml内容如下: <VersionConfig>    <AvailableVersion>6.0.0.0</AvailableVersion>    <ApplicationUrl>http://YourServerDomainName/SmartServer/Ver/</ApplicationUrl> </VersionConfig>   UpdateVersion.xml解释: <AvailableVersion>6.0.0.0</AvailableVersion> 告诉客户端目前可用的版本,客户端appupdater组件会比较本地主应用程序版本号和该项配置的版本号,如果比本地的版本号更高,则进行下载更新。   <ApplicationUrl>http://YourServerDomainName/SmartServer/Ver/</ApplicationUrl> 告诉客户端到哪个网址进行下载更新 
      

  9.   

    用了AppUpdater.dll后系统启动会出现下列问题,什么原因呢?
    -------------------------------------------------
    有关调用实时(JIT)调试而不是此对话框的详细信息,
    请参见此消息的结尾。************** 异常文本 **************
    System.InvalidOperationException: 该属性已经设置,不能修改。
       在 System.Threading.Thread.set_Name(String value)
       在 Microsoft.Samples.AppUpdater.AppDownloader.Start()
       在 Microsoft.Samples.AppUpdater.AppUpdater.Initialize()
       在 Microsoft.Samples.AppUpdater.AppUpdater.EndInit()
       在 Setup.WZ.Custom.FormInstall.FormInstall_Load(Object sender, EventArgs e)
       在 System.Windows.Forms.Form.OnLoad(EventArgs e)
       在 System.Windows.Forms.Form.OnCreateControl()
       在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       在 System.Windows.Forms.Control.CreateControl()
       在 System.Windows.Forms.Control.WmShowWindow(Message& m)
       在 System.Windows.Forms.Control.WndProc(Message& m)
       在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       在 System.Windows.Forms.ContainerControl.WndProc(Message& m)
       在 System.Windows.Forms.Form.WmShowWindow(Message& m)
       在 System.Windows.Forms.Form.WndProc(Message& m)
       在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    ************** 已加载的程序集 **************
    mscorlib
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    autorun
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.0.0
        基本代码: file:///D:/WZGT/Setup.WZ.Custom/Setup.WZ.Custom/bin/AppUpdate_4408/autorun.exe
    ----------------------------------------
    System.Windows.Forms
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    AppUpdater
        程序集版本: 1.0.0.17845
        Win32 版本: 1.0.0.17845
        基本代码: file:///D:/WZGT/Setup.WZ.Custom/Setup.WZ.Custom/bin/AppUpdate_4408/AppUpdater.DLL
    ----------------------------------------
    System.Runtime.Serialization.Formatters.Soap
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Serialization.Formatters.Soap/2.0.0.0__b03f5f7f11d50a3a/System.Runtime.Serialization.Formatters.Soap.dll
    ----------------------------------------
    System.Xml
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Configuration
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    mscorlib.resources
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
        基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    System.resources
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.42 (RTM.050727-4200)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.resources.dll
    ----------------------------------------
    System.Windows.Forms.resources
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.42 (RTM.050727-4200)
        基本代码: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------************** JIT 调试 **************
    要启用实时(JIT)调试,
    该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
    jitDebugging 值。
    编译应用程序时还必须启用
    调试。例如: <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>启用 JIT 调试后,任何无法处理的异常
    都将被发送到在此计算机上注册的 JIT 调试器,
    而不是由此对话框处理。
      

  10.   

    路过 对此一窍不通 偶也想学习  苦于无从下手 LZ是高手可否带偶入门啊
    QQ1013767936