限于篇幅原因,如下只贴译文
(接上篇)
前面我们讨论了 .NET 应用程序更新是如何工作的,现在我们来将它应用在实例中。
** 第一步:建立应用程序来进行更新 ** ** **
在这一步我们将建立应用程序来演示如何实现自动更新。
1. 使用 VS.NET 生成一个新的 Windows 应用项目,命名为“ SampleApp ”。
2. 给窗体一个你选择的有趣的背景色。我们将使用背景色来与后面更新的版本区别。
3. 现在让我们给这个应用程序增加一个细微的功能,首先给你的窗体增加一个按钮。压缩文件中包含一个拥有简单 Windows 窗体的程序集。给压缩文件中 Samples\SampleApp\SimpleForm 程序集增加一个引用。然后在你的按钮事件句柄中添加两行代码:
SimpleForm.Form1 F = new SimpleForm.Form1();
F.Show();
4. 将你的 build 标志从 debug 转换为 RELEASE 。这将允许我们避免稍后当我们生成一个应用程序的新版本而同时原始拷贝正在运行产生的 pdb 文件锁定问题。
生成并测试你的应用程序。
** 第二步:添加 ** ** .NET ** ** 应用程序更新组件 ** ** **
在这一步我们将给 SampleApp 添加 .NET 应用程序更新组件。
1. 在 VS.NET 工具栏的组件标签上,右击选择“自定义工具栏”。选择‘ .NET 框架组件’标签。点“浏览”并选择位于压缩文件中 AppUpdater 项目下的 AppUpdater.dll ,单击 OK 。
2. 一个 AppUpdater 图标现在应该出现在工具栏的组件列表的底部。 将 AppUpdater 组件拖放到 SampleApp 窗体上。一个名为 appUpdater1 的 .NET 应用程序更新组件的实例会出现在窗体的底部。
** 第三步:设置 ** ** .NET ** ** 应用程序更新组件 ** ** **
在这一步我们将设置 .NET 应用程序更新组件。注意这个示例你只需改变最开始的四个属性,其它的,默认值就够了。
_ AppUpdater _ _ 属性 _ ――这是 .NET Application 应用程序更新的核心,对于本程序需要做以下设置:
** 属性名称 ** ** **
|
** 描述 ** ** **
---|---
AutoFileLoad
|
这个控制后面要描述的命令下载特征,现在将它设置为 true 。
ChangeDetectionMode
|
该枚举决定如何为更新进行检查。在该例中,我们将使用一个服务器显式检查,因此将这个值设置为“ ServerManifestCheck ”。
ShowDefaultUI
|
.NET 应用程序更新组件具有一系列用户界面来通知用户一些事件,对于该例我们将使用默认的用户界面,因此将这个值设置为 true 。
UpdateUrl
|
UpdateUrl 是决定更新程序到何处去寻找更新的。在该例中设置为服务器显式文件的 URL :
http://yourWebserver/SampleApp_ServerSetup/UpdateVersion.xml .
用你的 Web 服务器名称来代替 ”yourWebserver”
_ Downloader _ _ 属性 _ ―― AppUpdater 组件有两个子组件。第一个称之为 Downloader ,它控制组件的下载和安装。下面是该属性的描述,对于我的示例来说默认的属性值就能工作的很好。
** 属性名称 ** ** **
|
** 描述 ** ** **
---|---
DownloadRetryAttempts
|
在下载期间如果有错误发生(比如 Web 服务器宕机) downloader 会稍后重试。这个属性控制 downloader 认为是彻底的应用程序更新错误之前重试网络请求的次数。
SecondsBeteweenDownloadRety
|
重试网络请求之前等待的秒数。
UpdateRetryAttempts
|
这个属性控制试图更新的次数。
ValidateAssemblies
|
这个属性控制下载程序集有效完成的级别。更多信息参见这篇文章的安全一节。
_ _
_ Poller _ _ 属性 _ ―― AppUpdater 的第二个子组件是 Poller 。 Poller 控制更新检查。下面是该属性的描述,对于我们的示例而言,所有的默认属性值就工作的很好。
** 属性名称 ** ** **
|
** 描述 ** ** **
---|---
AutoStart
|
布尔值,在应用程序启动时控制 Poller 是否应当开始轮询或它是否应当等待直到有计划的显式开始。
DownloadOnDetection
|
布尔值,控制 Poller 在一个新的更新发现时是否立即开始下载更新,或者是否通过调用 DownloadUdpate() 方法必须开始显式下载。
InitialPollInterval
|
应用程序启动后在第一次执行更新检查前等待的秒数。
PollInterval
|
第一次更新检查之后, PollInterval 控制后续每次更新检查之间间隔的秒数,注意:默认为每 30 秒进行一次检查。
所有这一切完成之后,你的属性表格看起来应当是下面这个样子:

Samples\SampleApp\SampleApp_Complete 目录包含应用程序正确安装的一个版本。
** 第四步:生成并在客户端部署应用程序 ** ** V1 ** ** 版本。 ** ** **
在这一步我们将生成应用程序 V1 版本并将它部署在客户端。
在 SampleApp 项目中,打开 AssemblyInfo.cs 文件。将 AssemblyVersion 的值从“ 1.0 ”修改为“ 1.0.0.0 ” . 这会引起在生成程序集时获得值为“ 1.0.0.0 ”的标记,该标记代替 VS.NET 通常指定为递增的值。
1. 生成应用程序。
2. 从压缩文件中将 Samples\SampleApp\SampleApp_ClientSetup 目录拷贝到你的本地机器上。要注意 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 服务器上为 <SPAN lan