注意:自动升级程序取当前程序文件的版本,是以当前运行的程序集版本作为识别依据的。
首先在VS中为当前的主程序项目添加引用,引用“客户端”中的“SimpleUpdater.exe”。
在VS中,点开“解决方案管理器”中相应项目的“属性”节点,打开 AssemblyInfo.cs 文件,在最下面添加上一行自动更新声明:
- //--添加这行标记表示支持自动更新, 后面的网址为自动更新的根目录.
- [assembly: FSLib.App.SimpleUpdater.Updateable("http://ls.com/update.xml")]
这步是必须的,否则请求检查更新时会抛出异常;代码中的网址即上面提到的能访问到xml文件的网址。
如果您希望更加简单的使用而不用去加这样的属性,或者您想程序运行的时候自定义,您可以通过下列方式的任何一种方式取代上面的属性声明:
- 使用 FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple("升级网址") 的重载方法。这个重载方法允许你传入一个升级包的地址;
- 在检查前手动设置 FSLib.App.SimpleUpdater.Updater.UpdateUrl 属性。这是一个静态属性,也就是说,您并不需要创建 FSLib.App.SimpleUpdater.Updater.UpdateUrl 的对象实例就可以修改它。
无论使用哪种方式,请确保在检查更新前,地址已经设置。
到这里,准备工作即告完成,为代码添加上检查更新的操作即可。
- static class Program
- {
- /// <summary>
- /// 应用程序的主入口点。
- /// </summary>
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
-
- var updater = FSLib.App.SimpleUpdater.Updater.Instance;
-
- //当检查发生错误时,这个事件会触发
- updater.Error += new EventHandler(updater_Error);
- //没有找到更新的事件
- updater.NoUpdatesFound += new EventHandler(updater_NoUpdatesFound);
- //找到更新的事件.但在此实例中,找到更新会自动进行处理,所以这里并不需要操作
- //updater.UpdatesFound += new EventHandler(updater_UpdatesFound);
-
- //开始检查更新-这是最简单的模式.请现在 assemblyInfo.cs 中配置更新地址,参见对应的文件.
- FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple();
-
- /*
- * 如果您希望更加简单的使用而不用去加这样的属性,或者您想程序运行的时候自定义,您可以通过下列方式的任何一种方式取代上面的属性声明:
- * 使用Updater.CheckUpdateSimple 的重载方法。这个重载方法允许你传入一个升级包的地址;
- * 在检查前手动设置 FSLib.App.SimpleUpdater.Updater.UpdateUrl 属性。这是一个静态属性,也就是说,您并不需要创建 FSLib.App.SimpleUpdater.Updater.UpdateUrl 的对象实例就可以修改它。
- */
-
- FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple("升级网址");
-
- Application.Run(new Form1());
- }
-
- static void updater_UpdatesFound(object sender, EventArgs e)
- {
-
- }
-
- static void updater_NoUpdatesFound(object sender, EventArgs e)
- {
- System.Windows.Forms.MessageBox.Show("没有找到更新");
- }
-
- static void updater_Error(object sender, EventArgs e)
- {
- var updater = sender as FSLib.App.SimpleUpdater.Updater;
- System.Windows.Forms.MessageBox.Show(updater.Exception.ToString());
- }
- }