65.9K
CodeProject 正在变化。 阅读更多。
Home

为您的程序添加自动更新 - 第一部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (62投票s)

2007年7月16日

CPOL

6分钟阅读

viewsIcon

1200775

downloadIcon

11755

本文描述了如何使用 DDay.Update 库快速轻松地为您的应用程序添加自动更新功能。

引言

在当今世界,应用程序正迅速朝着一种简单、包罗万象的分发模式发展。 Web 应用程序因其可伸缩性和易于部署而越来越受欢迎,而桌面应用程序则变得越来越少。这既有积极的后果,也有消极的后果——主要是在功能和用户体验方面。

大多数应用程序都需要确保在任何给定情况下都能提供最佳的用户体验。在许多情况下,网站可以满足开发人员和消费者的需求。然而,有些应用程序更适合作为客户端分发应用程序。

对于这些应用程序,需要一种简单可靠的部署方法,该方法可以为各种场景提供灵活性。它应该能够优雅地处理应用程序的更新,并且易于远程管理。正因如此,DDay.Update 应运而生——它提供了一个简单的接口,用于为您的应用程序添加自动更新功能,从而避免了更新过程中大部分的麻烦,同时又提供了最大的灵活性。

背景

将要介绍的技术利用了 Visual Studio 2005 内置的 Microsoft ClickOnce 发布机制。它使用 ClickOnce 本身。原因有很多:

  1. 使用您自己的部署方法(例如,使用 Windows Installer)并且仍然使用 ClickOnce 进行自动更新非常困难。
  2. 您无法轻松地使用 ClickOnce 更新单个文件,默认情况下,它是“全有或全无”的更新。当您的应用程序体积很大,或者用户很少时,这会变得很麻烦。
  3. 要使用不同的 GUI 和 ClickOnce,需要一个完全手工构建的界面。DDay.Update 的 GUI 是可插拔的。目前有一个针对 Windows Forms 2.0 的预构建界面,并且即将推出一个针对 .NET 3.0 (WPF) 的界面。
  4. DDay.Update 不会干扰您应用程序的安全权限。
  5. 开源应用程序有助于更好地理解底层技术。由于 DDay.Update 及其所有控件都是开源的,因此您可以自由地研究和扩展代码。

话虽如此,如果您还没有尝试过,我鼓励您尝试 ClickOnce。您可能会发现它适合您的需求。当您发现它的一些功能不足时,再尝试 DDay.Update。

注意:DDay.Update 不是 ClickOnce 的封装。它只是消耗 ClickOnce 清单文件。

好了,接下来呢?

在本文中,我将演示一个最基本的应用程序,并为其添加自动更新功能。

准备工作

首先,从 SourceForge.net 下载 DDay.Update 的最新二进制版本。为方便起见,本文也包含该文件。

下载完成后,您就可以开始了。

我们将按照以下步骤进行:

  • 第一步 - 创建一个需要自动更新的应用程序
  • 第二步 - 发布应用程序
  • 第三步 - 创建引导程序应用程序
  • 第四步 - 进行测试

第一步 - 创建一个需要自动更新的应用程序

在 Visual Studio 中创建一个新的控制台项目。单击文件 -> 新建 -> 项目,然后从列表中选择“控制台应用程序”。我将其命名为“AutoUpdatingApplication”。您可以选择任何您喜欢的名称(不过,如果您使用相同的名称,可能会更容易遵循示例)。

在此应用程序中添加一行基本代码,例如:

Console.WriteLine("This is my application.");

第二步 - 发布应用程序

我们将使用 Visual Studio 的 ClickOnce 机制来发布这个简单的应用程序。这个过程非常简单。如果您已经知道如何发布 ClickOnce 应用程序,请跳到第三步

首先,右键单击控制台应用程序项目,然后选择“属性”。

Screenshot - ProjectProperties.png

然后,单击左侧的“发布”选项卡,然后单击“发布向导”按钮。

Screenshot - PublishTab.png

然后,按照向导中的步骤进行。我的操作如下:

Screenshot - PublishWizardStep1.png

Screenshot - PublishWizardStep2.png

PublishWizardStep3-1.png

单击“完成”,您的应用程序现在应该已发布到您在向导第一步中指定的目录。在我的例子中,它是“C:\Deployment\DDay.Update.Test”。

就是这样,您的应用程序现在应该已通过 ClickOnce 发布!

第三步 - 创建引导程序应用程序

DDay.Update 使用一个引导程序应用程序来“模拟”您“真实”应用程序的外观和感觉。为了创建这个引导程序应用程序,您需要使用 DDay.Update 二进制发行版中包含的配置工具

首先,打开本示例准备步骤中下载的配置工具。然后,选择文件 -> 打开部署清单

ConfigToolOpenDMFromFile2.png

您将看到以下屏幕:

ConfigToolOpenDMFromUrl_ChooseUrl.png

输入您发布应用程序的目录。这将包括您的项目名称,并带有 .application 扩展名。在我的例子中,它是:

C:\Deployment\DDay.Update.Test\AutoUpdatingApplication.application

然后,单击打开。您将看到主配置屏幕,其中已自动确定了一些信息。更新 URI 应该已经提供——如果没有,它应该与您发布应用程序的位置匹配。在我的例子中,它是 C:\Deployment\DDay.Update.Test。当提供更新 URI 时,您可以单击“验证 URI”按钮来确保 URI 有效。

ConfigToolUpdateURI_Validate2.png

然后,选择一个更新通知程序。这是 DDay.Update 用于向用户显示更新信息的“可插拔”GUI。

之后,为引导程序应用程序的创建选择一个目标文件夹。我在桌面上添加了一个新文件夹:

Screenshot - ConfigToolDestFolder.png

完成这些步骤后,您就可以构建引导程序应用程序了。单击“创建引导程序”按钮,您应该会看到如下消息:

Screenshot - ConfigToolBootstrapSuccess.png

然后,目标文件夹将自动打开,您将看到崭新的引导程序!如果您运行该文件夹中的可执行文件,您将看到您的应用程序下载最新版本并运行它,并且您的文件夹将如下所示:

Screenshot - ConfigToolDestFolderOpened.png

请注意名为“1.0.0.0”的文件夹。您的“真实”应用程序就存储在那里。

恭喜您,您已为您的应用程序设置了自动更新!

第四步 - 进行测试

要查看更新的效果,请再次打开 Visual Studio,并发布新版本的应用程序。然后,返回到您创建引导程序的“目标文件夹”,并运行应用程序。您应该会看到如下消息:

Screenshot - Bootstrap_UpdateAvailable.png

选择“立即升级”,新版本将下载并运行。您还会注意到您的应用程序的目录结构如下所示:

Screenshot - ConfigToolDestFolderOpenedUpgraded.png

请注意新的“1.0.0.1”文件夹。新版本的应用程序已放置在此处。

注意:如果您选择“稍后升级”,将运行版本 1.0.0.0,并且不会发生任何更新。

就是这样!

您的应用程序现在已启用自动更新。

重要信息

当您将应用程序分发给用户时,只需将引导程序应用程序而不是“真实的东西”提供给他们,他们将始终收到自动更新。您甚至可以通过此方法将应用程序分发给用户——无需让他们一次性下载您的庞大应用程序。他们可以下载引导程序应用程序,它将下载其余部分。

关注点

DDay.Update 处于 Beta 测试中期。如果您看到任何奇怪或无法解释的问题,请通过提交错误报告告诉我。

历史

  • 2007/12/31 - 文章更新(版本 0.63)
  • 2007/11/13 - 文章更新(版本 0.61.1)
  • 2007/11/12 - 文章更新(版本 0.61)
  • 2007/07/23 - 文章更新
  • 2007/07/16 - 初始版本(版本 0.52)
© . All rights reserved.