资源简介

一款C#开发的通用的自动更新程序,包含源码。按步骤包含:检查更新,关闭打开的程序,备份程序,按文件清单更新文件,成功后更新程序版本号和更新时间,失败后还原程序,最后删除备份程序。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using System.Net;
using System.Threading;

namespace AutoUp
{
    public class AutoUpdate
    {
        UpdateConfigModel _model = new UpdateConfigModel();
        string _appbaseDir = ““;//本地应用程序根目录
        string _remoteDir = ““;//服务器更新文件根目录
        string _backDir = ““;//本地文件备份路径


        //公共方法
        private bool Work(Func func string workName string faildMessage)
        {
            bool flag = false;
            try
            {
                if (!string.IsNullOrEmpty(workName))
                    Console.WriteLine($“正在执行 --> {workName}“);

                flag = func();

                if (!flag)
                {
                    if (!string.IsNullOrEmpty(faildMessage))
                        Console.WriteLine(faildMessage);
                    return false;
                }

                if (!string.IsNullOrEmpty(workName))
                    Console.WriteLine($“结束执行 --> {workName}“);


                Console.WriteLine(“...“);

                return flag;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
        }
        public void Start()
        {
            //更新
            Update();

            //重启
            ReStart();


        }

        //更新
        public void Update()
        {
            Console.WriteLine(“***************开始更新****************“);

            //1. 检查更新,获取UpdateConfig.xml从而获得需要新增,更新,删除的工作清单 
            if (!Work(CheckUpdate “检查更新“ “不需要更新“)) return;


            //2. 检查更新文件数量
            if (!Work(HasUpdateFiles ““ “没有可更新的文件“)) return;


            //3. 如果程序已经打开,进程kill掉。
            if (!Work(IsAppClose “检查应用程序启动状态“ “未关闭应用程序,更新停止“)) return;


            //4. 备份本地程序
            if (!Work(BackUp “备份程序“ “未能备份应用程序,更新停止“)) return;


            //5. 开始更新,从任务清单获取任务列表依次下载文件,然后执行相关操作(增删改)
            if (Work(DoUpdate “更新文件“ ““))
            {
                //6.1 为true时,更新本地版本号和更新时间

                string localConfig = $@“{ConfigurationManager.AppSettings[“LocalConfig“]}“;
                xmlHelper.Update(localConfig $“/AutoUpdater/UpdateInfo/Version“ “Num“ _model.Version);
                xmlHelper.Update(localConfig $“/AutoUpdater/UpdateInfo/UpdateTime“ “Date“ _model.UpdateTime);
            }
            else
            {
                //6.2 为false时,还原本地程序
                if (!Work(ReBack “系统还原“ “系统还原失败“)) return;
            }


            //7. 删除备份程序
            Work(DeleteBackFiles “删除备份文件“ “备份文件删除失败“);


            Console.WriteLine(“***************更新完毕!****************“);

        }

        //重新启动
        public void ReStart()
        {
            if (_

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-03 12:00  自动更新\
     目录           0  2018-08-03 12:00  自动更新\AutoUp\
     文件         505  2018-08-03 11:50  自动更新\AutoUp\App.config
     文件        2478  2018-08-02 19:15  自动更新\AutoUp\AutoUp.csproj
     文件       15131  2018-08-03 12:00  自动更新\AutoUp\AutoUpdate.cs
     文件         467  2018-08-03 10:40  自动更新\AutoUp\Program.cs
     目录           0  2018-08-03 12:00  自动更新\AutoUp\Properties\
     文件        1310  2018-08-02 14:04  自动更新\AutoUp\Properties\AssemblyInfo.cs
     文件        3547  2018-08-02 22:50  自动更新\AutoUp\UpdateConfigModel.cs
     文件       22718  2018-08-02 16:08  自动更新\AutoUp\xmlHelper.cs
     目录           0  2018-08-03 12:00  自动更新\AutoUp\bin\
     目录           0  2018-08-03 12:00  自动更新\AutoUp\bin\Debug\
     文件       19456  2018-08-03 12:00  自动更新\AutoUp\bin\Debug\AutoUp.exe
     文件         505  2018-08-03 11:50  自动更新\AutoUp\bin\Debug\AutoUp.exe.config
     文件       46592  2018-08-03 12:00  自动更新\AutoUp\bin\Debug\AutoUp.pdb
     目录           0  2018-08-03 12:20  自动更新\AutoUp\bin\Debug\Download\
     目录           0  2018-08-03 12:20  自动更新\AutoUp\bin\Release\
     目录           0  2018-08-03 12:00  自动更新\AutoUp\obj\
     目录           0  2018-08-03 12:00  自动更新\AutoUp\obj\Debug\
     文件         334  2018-08-03 12:00  自动更新\AutoUp\obj\Debug\AutoUp.csproj.FileListAbsolute.txt
     文件        2064  2018-08-03 12:00  自动更新\AutoUp\obj\Debug\AutoUp.csprojResolveAssemblyReference.cache
     文件       19456  2018-08-03 12:00  自动更新\AutoUp\obj\Debug\AutoUp.exe
     文件       46592  2018-08-03 12:00  自动更新\AutoUp\obj\Debug\AutoUp.pdb
     文件          42  2018-08-02 19:06  自动更新\AutoUp\obj\Debug\CoreCompileInputs.cache
     文件        6690  2018-08-02 19:06  自动更新\AutoUp\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     目录           0  2018-08-03 12:20  自动更新\AutoUp\obj\Debug\TempPE\
     文件         185  2018-08-02 18:38  自动更新\localconfig.xml
     文件         746  2018-08-03 10:20  自动更新\updateconfig.xml
     文件         905  2018-08-03 12:19  自动更新\使用说明.txt

评论

共有 条评论