C/S框架主程序调用版本自动升级程序(CSFrameworkV5.AutoUpgrader)VersionCheckNEW类
作者:作者不详  发布日期:2020/03/23 16:08:24
  C/S框架主程序调用版本自动升级程序(CSFrameworkV5.AutoUpgrader)VersionCheckNEW类


贴图图片-CS框架主程序调用版本自动升级程序


Program.cs文件,调用调用版本自动升级程序:


C# Code:

//系统配置:是否启动版本自动升级程序
if (SystemSettings.Current.CheckVersion)
{
  
bool exitApp = false;
  VersionCheckNEW.AutoUpgrader(
ref exitApp);
  
if (exitApp) return;//检测到新版本,退出程序
  
}
  
  
//来源:C/S框架网 | www.csframework.com | QQ:23404761



自动升级检测:


C# Code:

/// <summary>
/// 自动升级
/// </summary>
public static void AutoUpgrader(ref bool exitApp)
{
  
//CSFramework.AutoUpgrader.exe
  
string file = Application.StartupPath + @"\" + DEF_UPGRADER_NAME;
  
  
//本地没有升级程序文件,不进行自我升级
  
if (!File.Exists(file)) return;
  
  frmWaiting.ShowMe(
null, "正在获取最新的升级程序.......");
  VersionCheckNEW.CheckUpgraderByDownloader();
  
  frmWaiting.ShowMe(
null, "正在获取升级包.......");
  VersionCheckNEW.CheckVersion(
ref exitApp);
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761



VersionCheckNEW类的CheckUpgraderByDownloader方法:检查升级程序。


C# Code:


/// <summary>
/// 检查版本升级程序,有新版本自动下载
/// </summary>
/// <returns>True:有新版本, False:无新版本</returns>
public static bool CheckUpgraderByDownloader()
{
  
string upgraderPath = Application.StartupPath + @"\" + DEF_UPGRADER_NAME;
  
string serverVer = "";
  
  
try
  {
    
    
//获取升级程序的程序集
    
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("DownloadUpgrader");
    
    
//调用DownloadUpgrader方法
    
//参数名:destPath,传值:upgraderPath==Application.StartupPath
    
object r = M.Invoke(o, new object[] { upgraderPath });
    
    serverVer
= r.ToString();
    
if (serverVer != "")//有新版本,保存配置文件
    
{
    IniFile ini
= new IniFile(Application.StartupPath + @"\" + UpgraderINIFile);
    ini.IniWriteValue(
"Setup", "UpgraderFileVersion", serverVer.ToString());//写入版本号
    
}
    
  }
  
catch (Exception ex)
  {
    LogUserOperate.Write(ex);
    Msg.Warning(
"检查升级程序失败!\r\n" + ex.Message);
  }
  
  
return serverVer != "";
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761



VersionCheckNEW类的CheckVersion方法:检查升级包。


C# Code:


/// <summary>
/// 检查升级包,有升级包要退出主程序进行升级
/// </summary>
/// <param name="AppExit">退出应用程序</param>
public static void CheckVersion(ref bool AppExit)
{
  AppExit
= false;
  
try
  {
    
string fileName = Guid.NewGuid().ToString().Replace("-", "") + ".ver";//生成版本临时文件名
    
string checkResultFile = Application.StartupPath + @"\" + fileName; //存储版本号的临时文件路径
    
string upgrader = Application.StartupPath + "\\" + DEF_UPGRADER_NAME;//升级程序文件名
    

    File.WriteAllText(checkResultFile,
""); //创建空文件
    
    
//运行升级程序
    
Process pro = new Process();
    pro.StartInfo
= new ProcessStartInfo(upgrader, Arg_CheckVersion + " " + fileName);//获取升级包的文件数
    
pro.StartInfo.UseShellExecute = false;
    pro.Start();
    pro.WaitForExit(WAIT_SECONDS);
//等待升级程序关联程序退出
    

    frmWaiting.HideMe(
null);
    
    
//如果生成临时文件,返回可更新的文件数。如:1c9cc55be36e4be9881ab0e416764e45.ver
    
if (File.Exists(checkResultFile))
    {
      
string result = File.ReadAllText(checkResultFile);//读取临时文件内容
      
File.Delete(checkResultFile); //删除临时文件
      

      
if ((result != "") && (int.Parse(result) > 0))//有新版本,升级包的文件数>0
      
{
      AppExit
= true;
      
      
//启动CS5标配升级程序,程序参数:MainEXECall,传入1个参数.
      
//Process.Start(upgrader, Arg_MainEXECall);
      
      
//启动通用升级程序,程序参数:MainEXECall XXX.exe,传入2个参数.2018-05-12
      
Process.Start(upgrader, Arg_MainEXECall + " " + DEF_MAIN_PROGRAM_NAME);
    }
  }
}
catch (Exception ex)
{
  LogUserOperate.Write(ex);
  Msg.ShowError(
"检查版本失败!CheckVersion:" + ex.Message);
}
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761



C/S 系统版本自动升级软件V1.0

适用软件 适用软件:C/S系统、Winform桌面应用软件。
运行平台 运行平台:Windows + .NET Framework 4.5

C/S系统版本自动升级软件


 产品介绍


  C/S系统自动升级软件帮助开发者将桌面管理软件升级到最新版本,可以轻松实现多渠道的同步更新,是进行存量用户更新的有效手段。使用自动更新程序后(即客户端已经部署升级程序以及集成了自动更新接口),当用户启动应用程序时,自动更新程序会将用户终端上的版本信息与服务器上开发者上传的升级包版本信息进行比较,如果服务器的版本更高,则会提示用户有新的版本更新,用户选择更新之后,则开始下载升级包,然后替换旧的版本。
   产品特点: 1.以升级包方式自动升级,2.可发布执行命令或独立程序的升级包,3.产品开源,4.成熟稳定!



C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


上一篇 下一篇