软件自动升级程序AutoUpgrader优化:获取最新升级包


软件自动升级程序AutoUpgrader优化:获取最新升级包

软件自动升级程序CSFramework.AutoUpgrader优化完成,CheckVersion方法由原来的临时文件方式更改为通过.NET反射机制调用DLL的方法。

解决方案

UpgraderController.cs 新增一个函数

VS打开 CSFramework.AutoUpgrader 解决方案,在UpgraderController.cs 新增一个函数:

C# 全选
 /// <summary>
        /// 检查是否有新的升级包
        /// </summary>
        /// <returns>返回升级包数量</returns>
        public int GetNewlyPackageCount()
        {
            UpgraderConfig.ReadConfig();//读取本地配置            
            IDownloader download = CreateDownloader();//创建升级策略
            if (download.TestConnection())//测试连接数据库
            {
                IList files = download.GetServerPackageFile();//获取最新的升级包

                var log = "检测可下载升级包数:" + files.Count.ToString();
                UpgraderLog.AddLog(log);
                //UpgraderLogDB.AddLog("CheckPkg", log);

                return files.Count;
            }
            else
            {
                UpgraderLog.AddLog("连接版本升级服务器失败!");
                throw new Exception("连接版本升级服务器失败!");
            }
        }

 

软件自动升级程序AutoUpgrader优化:获取最新升级包

 

VersionCheckNEW.cs 替换CheckVersion方法的代码

VS打开主程序,找到VersionCheckNEW.cs文件,替换CheckVersion方法

C# 全选
 /// <summary>
        /// 检查更新,有更新要退出主程序
        /// </summary>
        /// <param name="AppExit">退出应用程序</param>
        public static void CheckVersion(ref bool AppExit)
        {
            AppExit = false;
            try
            {
                string upgraderPath =Path.Combine(Application.StartupPath,DEF_UPGRADER_NAME);

                //获取升级程序的程序集
                byte[] fileData = File.ReadAllBytes(upgraderPath);
                Assembly upgrader = Assembly.Load(fileData);

                //通过.NET反射机制创建UpgraderController实例
                Type t = upgrader.GetType(DEF_UPGRADER_CONTROLLER);
                object o = t.Assembly.CreateInstance(t.FullName);

                //获取升级包数量
                MethodInfo M = t.GetMethod("GetNewlyPackageCount");
                object ret = M.Invoke(o, null);
                int count = ConvertEx.ToInt(ret);

                frmWaitingEx.HideMe(null);

                if (count > 0)//有新版本,升级包的文件数>0
                {
                    AppExit = true;

                    //启动通用升级程序(商业版)。程序参数:MainEXECall YourERP.exe
                    Process.Start(upgraderPath, Arg_MainEXECall + " " + DEF_MAIN_PROGRAM_NAME);
                }
            }
            catch (Exception ex)
            {
                dalLog.AddLog(ex);
                Msg.ShowError("检查版本失败!CheckVersion:" + ex.Message);
            }
        }

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:Windows桌面系统软件开发框架 - 基于.NET Framework开发平台
下一篇:Mssql server收缩数据库日志文件
评论列表

发表评论

评论内容
昵称:
关联文章

软件自动升级程序AutoUpgrader优化获取升级
AutoUpgrader自动升级程序使用指南
AutoUpgrader软件版本自动升级程序 - 自动升级流程图
AutoUpgrader软件版本自动升级程序 - 软件说明
版本自动升级程序AutoUpgrader数据库结构
C/S框架功能:自动检测升级并强制关闭应用程序进行版本升级
AutoUpgrader软件版本自动升级程序 - 网络环境
AutoUpgrader自动升级程序编写目的
AutoUpgrader自动升级程序-软件著作权登记证书
CSFramework.AutoUpgrader上传大文件升级测试报告
CSFramework软件版本自动升级程序 - 升级业务逻辑关系图
C/S框架主程序调用版本自动升级程序(CSFrameworkV5.AutoUpgrader)VersionCheckNEW类
AutoUpgrader软件版本自动升级程序 - 运行环境
AutoUpgrader版本自动升级软件 V1.2
软件自动升级程序之执行dos命令和自运行程序升级|C/S框架网
C# Winform C/S架构自动升级软件 AutoUpgrader V1.2版本
CSFramework版本自动升级程序AutoUpgrader增加日志Log功能
AutoUpgrader版本自动升级软件 V1.2软件截图
CSFramework软件版本自动升级程序 - 升级策略接口说明
CSFramework软件版本自动升级程序 - 升级历史记录文件 (version.xml)