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

HiUpdate工具 - 自动应用程序更新

starIconstarIconstarIconstarIconstarIcon

5.00/5 (20投票s)

2013年6月30日

CPOL

4分钟阅读

viewsIcon

76765

downloadIcon

4211

HiUpdateTools是一款易于使用的发布应用程序新版本的工具。

简介 

每个程序员和软件创建者都会遇到一个问题,那就是如何分发自己应用程序的新版本。有几种方法可以实现这一点,例如微软提供的 ClickOnce,它直接集成到 Visual Studio 中,或者您可以自己编写类似的工具。我将简要总结 ClickOnce 的优缺点。该工具非常简单且经过调试,并且完全集成到 Visual Studio 中。不幸的是,ClickOnce 的简单性也是它的弱点。该系统并非为大型项目设计,原因有几个:没有人能够控制应用程序的安装位置,无法从 ftp 服务器进行更新,并且发布速度也不是最快的。

因此,一些程序员会自己编写更新程序。当然,前提是他们不想为像 (wyBuild, AppLife Update Engine) 这样的付费工具付费。这促使我产生了一个想法,编写一个更新工具,它能够获取 ClickOnce 的优点(集成到 Visual Studio、差量更新等),同时让程序员一切尽在掌握。这就是我称之为 HiUpdateTools 的工具的由来。

HiUpdateTools 插件到 Visual Studio 的主要功能

  • 集成到 Visual Studio (可以直接在 VS 中管理和发布新版本)
  • 发布不同类型的项目 WinForms, WPF, WebApplication (准备中)
  • 多种发布方式 (ftp, 文件)
  • 每个文件在发送前都会被压缩 (传输数据量更少)
  • 文件被单独存储到目标位置,以便只下载新文件
  • 检查服务器上已有的版本
  • 对于每个已发布的版本,都可以附加关于更改的信息
  • 自动生成 Release 模式的生成版本,并在 AsemblyInfo.cs 中更改版本号
  • 可以选择要生成哪些项目以及要更新哪些版本   

HiUpdateTools.Client - 客户端的主要功能 

  • 从多个源下载 (ftp, 文件, http, https)
  • 适用于 WinForm, WPF 的客户端 
  • 易于集成到应用程序中
  • 可以开启自动更新 (无需确认)
  • 差量更新 (只下载已更改的文件)
  • 应用程序通过您的 exe 文件运行 (没有 UpdateAndRunAplication.exe)
  • 检查应用程序的多次启动
  • 在客户端配置文件中存储加密的密码 

在 Visual Studio 中使用 

如何发布您的应用程序 

将 VSX 插件安装到 Visual Studio 后,一个用于调用应用程序设置和发布对话框的新按钮将出现在您项目上方的上下文菜单中。

在此处设置应用程序名称、应用程序类型、版本。您还可以设置应用程序应发布到的服务器位置。 

在 Client config 选项卡中,您可以准备并导出应用程序的 XML 配置文件。 

一切设置好后,您可以通过单击 Deploy 按钮来首次发布您的应用程序。在目标位置应该会看到类似这样的内容

ServerConfig.Xml 文件中存储了关于版本和当前版本包含的文件信息。在单独的子文件夹中,为每个版本存储了压缩文件。 

集成到您的应用程序 

HiUpdateTools.Client.Win.exeClientConfig.Xml 引用添加到您的应用程序中,然后是 Program.cs 类中的一个静态属性。

public static string[] Args { get; set; }  

然后,在 Main 方法中填写此属性。

[STAThread]
static void Main(string[] args)
{
    Args = args;
    Application.Run(new MainForm());
}

完成后,只需捕获 MainForm 的 Load 事件并在此处添加以下代码。

if (!Program.Args.Contains("/noupdate"))
{
 using (UpdateChecker checker = new UpdateChecker("ClientConfig.xml",
   typeof(Program).Assembly.GetName().Version))
  {
       if (checker.Check())
          {
          checker.RunUpdate();
          Application.Exit();
          return;
          }
   }
}

然后,当您运行应用程序并在服务器上找到新版本时,您的应用程序将被终止,HiUpdateTools.Client.Win.exe 应用程序和更新操作将随后启动(如果设置了 AutoUpdate),或者您将等待通过单击 Update 按钮来启动。

有关该项目的更多信息,请参阅 hiupdatetools.codeplex.com

历史

  • 1.0.0.9
  • 修复了将应用程序部署到 ftp 服务器时的错误 
  • 1.0.0.8 
  • 添加了对 Visual Studio 2010 的支持 (新的 VSX 文件) 
  • 将升级过程移至 TryCatch 块 
  • 添加了错误窗体以显示错误并发送错误报告 
  • 1.0.0.6
    •  修复了移除部分解压的文件
    •  修复了 Win 客户端应用程序中抛出的异常 
  • 1.0.0.5
    •  生成 ClientConfig.xml 并添加到项目中
    •  将 ClientConfig.xml 选项设置为 "CopyToOutputDirectory"= Copy if newer
    •  修复了客户端路径未以反斜杠结尾的问题 
  • 1.0.0.4
    • 将客户端程序集添加到 VSX 包
    • 首次使用时,将工具添加到客户端程序集的引用中
    •  修复了客户端应用程序
      • 多实例应用程序
      •  运行单个更新应用程序实例 
  • 1.0.0.3 首个发布版本,发布于 2013 年 6 月 30 日
    • 添加对 WPF 客户端的支持
    • 将发布操作移至单独的线程  
    • 将配置文件编码更改为 UTF-8
    © . All rights reserved.