使用的是app update
个人感觉什么都设置正确了, 但是升级的时候,报错:“405 不允许的方法”,有那位碰到过类似的情况?谢谢。我web 服务端是在一台2000的机器上装的apache 2.0.52
这个版本好像已经是最高版本了。

解决方案 »

  1.   

    我下载了appupdate.zip里面有samples
    我修改了一下SampleApp_Complete里面的一个app代码,生成了一个myapp,这个myapp里面包含了一个appupdater,在appupdater属性里面进行了设置,其updateurl指向了一个web service的目录下的updateversion.xml那现在我用appstart 启动本地目录下1.0.0.0下面的myapp程序。回到C#下,我修改了myapp的版本信息为2.0.0.0,以及其他背景颜色,将编译好的myapp,放到web service目录的2.0.0.0目录下,这时修改updateversion.xml里的信息。过了一会,已经运行的myapp.exe会下载system.resource.dll,还要一个什么msro*.resource.dll,以及一个appupdate.xml到本地的1.0.0.0(这里没有创建2.0.0.0目录,奇怪??),这是弹出一个错误对话框,内容如下:
      
    Download of new update from "http://172.16.16.11/SampleApp_server/2.0.0.0/"fail with the network error:远程服务器返回错误:(405)不允许的方法。
    To Correct this problem ,try rebooting the computer & re-launching this appaction.我觉得update机制已经起来了,但是下载的时候有什么问题。微软的表示,使用appupdate需要http dav协议支持,那么我的web service环境是win2000 + apache2.0.52,apache已经是最高版本了,应该是支持http dav协议的,但是为什么会出现上诉情况,请指点一二。
      

  2.   

    我来说两句:我也研究了很久,也有问题,就是没人能解决.首先你肯定没有设置SampleApp_ServerSetup文件夹为虚拟目录,缺少system.resource.dll和mscorlib.resources.dll两个文件,我用别的文件改名给替代了,不报错.但是有新的问题,就是它自动下在的不是2.0.0.0目录,而是1.0.0.0目录,如果已经有了1.0.0.0目录,它会自动形成一个1.0.0.0_1的目录,程序当然是没有更新了,但是里面的文件要多些,原来1.0.0.0目录下只有SampleApp.exe,  SampleApp.pdb,AppUpdater.dll, SimpleForm.dll四个文件,更新后多的1.0.0.0_1的目录下多了mscorlib.resources.dll,System.resources.dll,UpdateVersion.xml三个文件.我还做了些测试,比如把启动文件夹名字改为demo,AppStart.config文件改为<Config>
    <AppFolderName>demo</AppFolderName>
      <AppExeName>SampleApp.exe</AppExeName>
      <AppLaunchMode>process</AppLaunchMode>
    </Config>  弹出更新,按确定,你会发现目录下多的还是1.0.0.0目录,我做了以上测试后发现,没别的地方有1.0.0.0这个标志了,怎么还是形成1.0.0.0目录那.只有编译原程序是AssemblyInfo.cs有1.0.0.0了
    所以我把启动程序一开始就编译问2.0.0.0版本放在SampleApp_ClientSetup的1.0.0.0目录下,AppStart.config文件改为
    <Config>
    <AppFolderName>2.0.0.0</AppFolderName>
      <AppExeName>SampleApp.exe</AppExeName>
      <AppLaunchMode>process</AppLaunchMode>
    </Config>
    在SampleApp_ServerSetup目录的UpdateVersion.xml文件改为
    <VersionConfig>
    <AvailableVersion>3.0.0.0</AvailableVersion>
    <ApplicationUrl>http://localhost/SampleApp_ServerSetup/3.0.0.0/</ApplicationUrl>
    </VersionConfig>
    改为3.0.0.0或4.0.0.0都无所谓,只要比编译的版本高就行.
    现在再执行SampleApp_ClientSetup目录下的AppStart.exe, 弹出更新,按确定,在SampleApp_ClientSetup目录下形成了一个2.0.0.0目录,我想结论是有的了.我希望能有多一定人来研究智能客户端网易泡泡:[email protected]
    MSN:     [email protected]
    与我联系哦
      

  3.   

    我已经用微软的Update appaction block 实现自动更新了
    不用这个app update了,没什么问题了
      

  4.   

    AppUpdater组件是可以更新的,主要的问题在于,要把服务端的虚拟目录配置,访问权限设置 "目录浏览".Smart Client开发: 使用AppUpdater组件 
    本来今天打算介绍Updater Application Block的,后来想想一些朋友经常反馈说用将UAB集成到自己开发的应用程序中太麻烦了,询问有没有更简单的方法布署智能客户端。在Whidbey的ClickOnce出来之前,答案当然还是有的,那就是使用AppUpdater组件。在美国举行的TechED 2004上介绍的IssueVision,TaskVision这些经典的Smart Client Demo用的都是这个组件来实现智能客户端的布署。使用AppUpdater组件要用到下面这些文件:大家可以在http://windowsforms.net/downloads/GDN/dotnetupdater.zip 中下载
    文件名               功能描述
    AppStart.exe      类似中介代理的程序,由它来启动真正的应用程序。不直接启动主应用程序是为了防止主应用程序升级的过程中被锁死而造成升级失败。
    AppStart.config      AppStart.exe的配置文件,它指定要启动的应用程序所在目录,以及要启动应用程序的名称
    appupdater.dll      最重要的部件,自动升级的主要组件
    system.Resources.dll      资源文件
    mscorlib.Resources.dll      核心资源文件
    UpdateVersion.xml      服务器端版本升级配置文件OK,开始介绍如何使用它吧。(1) .在Custom Control中导入AppUpdater
    (2).配置自动下载选项AutoFileLoad      :True
    ChangeDetectionMode      ServerManifestCheck
    UpdateUrl      http://YourServerDomainName/SmartServer/UpdateVersion.xml
    ShowDefaultUI: TrueAutoFileLoad 可以让 服务器上的文件动态加载,大家可以把它想像成 Un-Touch 部署中的Assembly.LoadFrom类似的功能
    ChangeDetectonMode是设置检测模式:根据配置文件进行检测,也就是UpdateUrl属性指定的文件。如果设成DirectFileCheck则是比较每一个文件的时间戳来决定要不要下载这个文件。
    UpdaterUrl指服务器上的更新配置文件,其中UpdateVersion.xml内容如下:
    <VersionConfig>
          <AvailableVersion>2.0.0.0</AvailableVersion>
          <ApplicationUrl>http://YourServerDomainName/SmartServer/Ver/</ApplicationUrl>
    </VersionConfig> UpdateVersion.xml解释:
    <AvailableVersion>2.0.0.0</AvailableVersion>
    告诉客户端目前可用的版本,客户端appupdater组件会比较本地主应用程序版本号和该项配置的版本号,如果比本地的版本号更高,则进行下载更新。 <ApplicationUrl>http://YourServerDomainName/SmartServer/Ver/</ApplicationUrl>
    告诉客户端到哪个网址进行下载更新建议大家把这个属性设置成Dynamic,即从配置文件中读出来,不过,要让服务器的.config文件允许被下载,我们还要在IIS中 ASP.net应用程序”配置“中对它进行设置,默认是不允许访问的。ShowDefaultUI表示下载结束时用一个简单的界面提示你要不要启动新版本。你还可以用自己的窗体显示,方法是设成False,并在OnUpdateComplete事件中写代码把你的窗体显示出来。当然,还有一些其他的属性,比如,是否要使用公钥(可以是一个,也可以提供一个Assembly,里面包括多个公钥)验证要下载的文件。由于时间关系,我就不多说了。(3) 使用AppStart.exe启动实际的应用程序。
    (4) 在IIS把下载文件夹设成允许目录浏览,因为AppUpdater要枚举里面的所有文件,并把它们都下载到本地。如果是Windwos 2003,麻烦一点,要允许WebDAV,并把.config文件设置成允许下载。
    (5) 做个msi安装文件,打包应用程序,这样,当应用程序运行时,它就能自动判断有无最新版本,并下载到本地运行。 posted @ 2004