实现.NET应用程序的自动更新(3)

2008-02-22 09:33:19来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


OnUpdateComplete)并弹出自定义用户界面。对于该例我们将使用默认的用户界面,因此将这个值设置为true 。

  (4)UpdateUrl :UpdateUrl 是决定更新程序到何处去寻找更新的。在该例中我们使用一个服务器显式文件来检查更新,因此这个属性应当设置为服务器显式文件的URL 。

  在该例中将它设置为:http://yourWebserver/SampleApp_ServerSetup/UpdateVersion.xml。请用你的Web 服务器名
称来代替“yourWebserver ”。

  Downloader 属性:AppUpdater 组件有两个子组件。第一个称之为Downloader,它控制组件的下载和Poller属性:AppUpdater的第二个子组件是Poller,Poller控制更新检查。

  (1)AutoStart:布尔值,在应用程序启动时控制Poller 是否应当开始轮询或它是否应当等待直到有计划的更新查询开始。

  (2)DownloadOnDetection:布尔值,控制Poller 在一个新的更新发现时是否立即开始下载更新,或者是否通过调用DownloadUdpate() 方法开始显式下载。

  (3)InitialPollInterval:应用程序启动后在第一次执行更新检查前等待的秒数。

  (4)PollInterval:第一次更新检查之后,PollInterval 控制后续每次更新检查之间间隔的秒数,注意:默认为每30 秒进
行一次检查;显然,你会希望你的应用程序减少更新检查的频率。

  所有这一切完成之后,你的属性表格看起来应当是下面这个样子:


Samples\SampleApp\SampleApp_Complete目录包含应用程序正确安装的一个版本。

  安装:

  (1)DownloadRetryAttempts:在下载期间如果有错误发生(比如Web 服务器宕机)downloader 会稍后重试。这个属性控制downloader 认为是彻底的应用程序更新错误之前重试网络请求的次数。

  (2)SecondsBeteweenDownloadRety:重试网络请求之前等待的秒数。

  (3)UpdateRetryAttempts: 在更新期间如果发生严重错误,(例如downloader 超过了试图重试的次数),就会产生一个应用程序更新错误。默认的,将会停止试图更新。但是在应用程序下一次启动时会试图恢复(比如更新Web 服务器可能会宕机好几天)。这个属性控制试图更新的次数。如果超过这个值,updater 就会取消更新,重置它的状态并返回更新检查。

  (4)ValidateAssemblies: 这个属性控制下载程序集有效完成的级别。更多信息参见这篇文章的安全一节。

  第四步:生成并在客户端部署应用程序V1版本。

  在SampleApp项目中,打开AssemblyInfo.cs文件。将AssemblyVersion的值从“1.0”修改为“1.0.0.0”。这会引起在生成程序集时获得值为“1.0.0.0”.. 的标记,该标记代替VS.NET通常指定为递增的值。

  1. 生成应用程序。

  2.从压缩文件中将Samples\SampleApp\SampleApp_ClientSetup目录拷贝到你的本地机器上。要注意此目录已经包含了AppStart.exe。AppStart.config已经设置为指向1.0.0.0目录并且启动SampleApp.exe。

  从SampleApp的release目录下拷贝SampleApp(Appupdater.dll,SimpleForm.dll和SampleApp.exe)

  到客户端SampleApp_ClientSetup\1.0.0.0目录下。至此,一个功能完整的应用程序版本已被“安装”到了客户端,可以通过运行AppStart.exe来执行。

  第五步:安装Web服务器

  在这一步我们将安装Web服务器以提供更新轮询功能。.NET应用程序更新组件使用HTTP-DAV来下载应用程序更新,因此需要一个支持HTTP-DAV的Web服务器。Windows 2000上的IIS5.0和更新的操作系统都支持HTTP-DAV。

  1.将Samples/SampleApp_ServerSetup目录拷贝到你的Web服务器上的wwwroot目录下。

  2. 将SampleApp的V1版本拷贝到Web服务器的1.0.0.0文件夹。

  3. 在Web服务器上为SampleApp_ServerSetup目录启用IIS的“目录浏览”权限。

  第六步:自动更新应用程序

  OK,.. 现在是时间来通过自动安装一个新版本来看看以上这些艰苦工作的结果了。

  1. 如果你部署在客户端的SampleApp版本没有运行,加载它让它运行,记得使用AppStart.exe。

  2. 回到VS.NET并在SampleApp窗体中做一些可以被注意到的修改(比如修改背景色)。

  3. 将AssemblyInfo.cs的版本信息改为2.0.0.0。

  4. 重新生成。

  5. 回到Web服务器并生成一个和1.0.0.0目录同等的目录2.0.0.0。从release生成目录下将新版本应用程序拷贝到Web服务器上新建的2.0.0.0目录下。

  6.打开UpdateVersion.xml 并修改AvailableVersion为2.0.0.0。修改ApplicationURL为指向新的2.0.0.0路径。

  7. 保存对UpdateVersion.xml所做的修改。

  一旦你保存了新的UpdateVersion.xml,在30秒之内,运行中的SampleApp拷贝将会探测到新的可用版本。
四、按需安装、安全、可扩展性及调试

  (一)按需求安装

  所谓按需求安装,指只有主可执行程序被显式安装到客户机上。应用程序剩下的部分可以根据基本需要自动下载和安装。

  通过.NET应用程序更新组件的AutoFileLoad属性来启动按需求安装。你必须仔细考虑在你的应用程序中程序集边界所处的位置以及什么动作会引起程序集被下载。由于程序集的下载涉及到网络输入输出,因此下载所花费的时间是可变的。在程序集下载期间,应用程序会被冻结等待程序集下载完成。

  (二)部署安全

  自动安装应用程序更新的能力具备很多好处,但它也伴随着一些潜在的危险。当你使得安装更新变得简单时,如果不小心,你也可能使得安装恶意代码变得简单。有两种危险,第一种危险是有人会用自己的Web服务器欺骗用来部署更新的Web服务器。他们可能会利用那台Web服务器在你的应用程序路径安装一个病毒程序。阻止欺骗或其它通过网络进行的不正当干预的最简单的方法是使用HTTPS。要和.NET应用程序更新组件一起使用HTTPS,可以简单地用HTTPS URLs来代替HTTP URLs。当然,HTTPS 不是银弹。使用HTTPS有两个问题,第一是可伸缩性。使用HTTPS需要服务器加密所有从Web服务器上下载的文件。如果一个应用程序的更新文件很大,加密更新文件的代价会使服务器的负担过重。使用HTTPS的另一个问题是它对第二种安全危险毫无益处。第二种危险是黑客既可能从内部也可能从外部来攻击你的服务器。一旦攻击成功,则有可能意味着成百上千的客户端也通过自动更新遭受连累,这种情况将是灾难性的。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:.NET下正则表达式应用的四个示例

下一篇:使用asp.net进行多关键字查询的例子