随着GitHub在开发者中的普及,经常需要更新应用程序以获取最新的功能和修复。本文将介绍一个简单而有效的自动更新机制,它可以从GitHub获取最新的发布版本,并自动更新应用程序。
首先,需要一个名为ZZupdate0.exe
的更新器。将这个文件添加到项目根目录,并在属性中设置为Embedded Resource
。这样,更新器就会被嵌入到项目中。更新器是一个小型的引导程序,允许应用程序关闭,以便在重新运行应用程序之前替换可执行文件和锁定的文件。
需要使用程序集版本信息,以便更新器能够处理版本控制。确保始终设置程序集版本。
将Updater.cs
文件添加到项目中,并在Program.cs
的顶部添加命名空间:
using AutoUpdate;
在程序的Main
函数中,在执行任何其他操作之前,插入以下代码:
// 设置自动更新,并在有更新时退出
Updater.GitHubRepo = "GitHub仓库地址";
if (Updater.AutoUpdate(args))
return;
如果需要明确地强制更新到特定版本,可以调用:
Updater.Update(new Version(major, minor, bld, rev));
已经在示例中包含了Updater shim。Visual Studio有时在尝试将输出嵌入到AutoUpdate
示例时会出现问题,但只需再次构建,错误应该会消失。
在运行示例时,请注意表单报告的版本。可能会发现更新窗口短暂地闪过,但随后会看到表单重新弹出,显示程序集版本和从命令行接收的参数,以便可以看到更新发生了。参数是最初传递给应用程序的。
以下是向GitHub添加更新发布的步骤。请严格按照以下步骤操作。也可以参考附带的示例:
这最适合已经使用GitHub进行源代码管理的项目,所以可能需要创建一个。无论如何,都需要一个仓库来提取。如果没有,请在上面创建一个。
创建后,转到发布页面,并起草一个新发布。
标签必须是(区分大小写)Refresh.v<AssemblyVersion>
,例如:Refresh.v1.0.0.5
压缩文件必须直接包含二进制文件夹的内容,而不是文件夹本身。应用程序的可执行文件应该在压缩文件的根目录。通常会去bin\Release
并突出显示除.pdb
之外的所有内容,然后发送到|压缩文件夹...
将zip文件命名为<GitRepoName>.Refresh.v<AssemblyVersion>
,例如MyApp.Refresh.v1.0.0.5
,如果MyApp
是仓库名称,1.0.0.5
是压缩文件中包含的程序集版本。