1、使用NuGet安装SimpleUpdater
我使用的是Visual Studio 2017,右键引用,管理NuGet包,如下:
2、设置项目版本Assembly Version
右键项目属性,打开程序面板点击装备版本并设置版本号,如下:
3、客户端使用SimpleUpdater
新建一个AutoUpdater类,如下:
public class AutoUpdater : HYSingleton<AutoUpdater>
{
public AutoUpdater()
{
//获得当前的更新实例
fsLibUpdater = FSLib.App.SimpleUpdater.Updater.Instance;
/*
* 1.注册程序集。当程序集被注册的时候,任何程序集中实现了 FSLib.App.SimpleUpdater.Defination.IUpdateNotify 接口的都将会被自动实例化并调用
* 通过此方法可以实现自己的事件捕捉以及处理类
* 此例中, 类 CustomConnect 将会被实例化并调用
*/
fsLibUpdater.UsingAssembly(System.Reflection.Assembly.GetExecutingAssembly());
}
/// <summary>
/// Checks the update.检查更新
/// </summary>
/// <returns></returns>
public bool CheckUpdate()
{
if (Properties.Settings.Default.IsAutoUpdate)
{
string updateUrl = Properties.Settings.Default.UpdateUrl;
return FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple(updateUrl, "update.xml");
}
else
{
return true;
}
}
/// <summary>
/// The fs library updater,程序更新对象
/// </summary>
private FSLib.App.SimpleUpdater.Updater fsLibUpdater;
}
在WinForm程序构造中调用SimpleUpdater,如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//检查更新===========使用SimpleUpdater
bool ret = AutoUpdater.GetInstance().CheckUpdate();
}
private void button1_Click(object sender, EventArgs e)
{
//初始化日志文件
string state = ConfigurationManager.AppSettings["IsWriteLog"];
//判断是否开启日志记录
if (state == "1")
{
var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
ConfigurationManager.AppSettings["log4net"];
var fi = new System.IO.FileInfo(path);
log4net.Config.XmlConfigurator.Configure(fi);
}
LogHelper.WriteLog("holle world");
}
}
配置文件配置升级路径(本例在本机上测试,注意升级路径格式),如下图:
目前界面是这样的,如下图:
4、测试自动升级
4.1 创建测试环境目录结构
将Debug中的所有文件(此时程序的版本是1.0.0.0)拷贝至Debug_client文件夹中,为后续测试做准备
- Debug:为解决方案生成的目录(重新生成的文件都在这个文件夹下)
- Debug_client:为模拟客户端程序目录(存放旧版本的程序文件)
- Debug_forbuilding:为后续使用升级包创建工具输入目录(存放需要制作成升级包的文件)
4.2 IIS创建网站(为测试升级做准备)
----或者使用WCF
创建网站,物理路径为存放升级包文件的目录,本例中将升级包放在了“D:\学习测试\C#测试\TestSimpleUpdater”路径下,如下:
4.3 使用升级包创建工具-BY iFish
前面我们已经将Debug中的文件拷贝至了Debug_client文件夹中(此时的程序是1.0.0.0版本),如下图:
接下来我们修改程序界面,增加一个按钮,为了方便我们观察程序是否真的自动升级了,如下:
接着,修改装配版本,只要比之前的1.0.0.0版本高就可以了,我设置成了1.0.0.5(记得重新生成项目或解决方案),如下:
将Debug文件夹中最新生成的两个文件拷贝至Debug_forbuilding文件夹,如下:
使用升级包创建工具-BY iFish,本例中将“更新选项1”面板中“默认文件检测更新模式”设置成了“始终更新”,具体设置如下(注意新版本目录与升级包目录的设置,当前版本号与程序应匹配):
设置完毕后,点击右下角的“创建升级包”按钮,就自动把需要升级的文件打包到之前我们部署的升级目录中了,这时就可以打开Debug_client文件夹中的可执行程序,进行测试了,如下:
至此,自动升级测试完毕!
资源下载:
使用SimpleUpdater实现WinForm自动升级-C#文档类资源-优快云下载
源码:
FSLib.App.SimpleUpdater-C#文档类资源-优快云下载
官网: