软件自动升级程序之执行dos命令和自运行程序的升级包|C/S框架网

  软件自动升级程序之执行dos命令和自运行程序的升级包|C/S框架网

基于C/S架构设计的自动升级程序支持封装命令升级包,以及在本地用户的PC机能自动运行的子程序(类似在客户端植入木马程序),程序员通过升级程序制作执行dos命令的升级包和木马程序升级包。

基于C/S架构设计的自动升级程序


一、什么是命令升级包?

命令升级包是指客户端根据升级包的内容执行某些动作,比如删除当前应用程序目录下的文件,或者运行一个指定的程序。自动升级程序支持【删除文件的命令升级包】以及【运行程序的命令升级包】。

点击【制作命令升级包】菜单,弹出管理员登录界面,输入密码:csframework,按【回车键】或点【登录】按钮打开【封装执行命令的升级包】界面,预设显示【删除文件的命令】界面。

二、制作运行dos命令的升级包:

制作运行dos命令的升级包

根据界面提示,在文件输入框键入删除文件的DOS命令,如:tmp*.txt, test.dll
(注意:只需要输入带有统配符的文件名)。

自动升级程序下载升级包到用户的机器,将自动运行升级包内的dos命令。


三、制作运行程序的升级包:

制作运行程序的升级包

选择能够独立运行的EXE程序文件,点【封装升级包】。

自动升级程序下载升级包到用户的机器,将自动运行EXE程序文件。



四、命令升级包接口设计

C# Code:

/// <summary>
/// 命令管理器
/// </summary>
public class PackageCommand
{
   /// <summary>
   /// 执行升级包命令
   /// </summary>
   /// <param name="files"></param>
   public static void Execute(List<PackageFileItem> files)
   {
      foreach (PackageFileItem item in files)
      {
         (item as IMyCommand).Execute();
      }
   }
}

/// <summary>
/// 命令升级包接口
/// </summary>
public interface IMyCommand
{
   bool Execute();
}

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


五、运行EXE程序的命令升级包

C# Code:

/// <summary>
/// 运行程序的命令升级包
/// </summary>
[Serializable]
public class CmdRunProgram : PackageFileItem, IMyCommand
{
   /// <summary>
   /// 构造器
   /// </summary>
   /// <param name="programFile"></param>
   public CmdRunProgram(string programFile)
   {
      this.SetBody(programFile);
      this.FileName = Path.GetFileName(programFile);
      this.CreateDate = DateTime.Now;
   }
   
   /// <summary>
   /// 封装升级包,转化为byte[]数值
   /// </summary>
   /// <param name="programFile"></param>
   private void SetBody(string programFile)
   {
      using (FileStream fs = File.OpenRead(programFile))
      {
         byte[] bs = new byte[fs.Length];
         fs.Read(bs, 0, (int)fs.Length);
         this.FileBody = bs;
         this.FileSize = bs.Length;
      }
   }
   
   /// <summary>
   /// 执行命令升级包
   /// </summary>
   /// <returns></returns>
   public bool Execute()
   {
      try
      {
         string file = "tmp_exe_" + Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(this.FileName);
         string path = Path.Combine(Application.StartupPath, file);
         File.WriteAllBytes(path, this.FileBody);
         
         UpgraderLog.AddLog("正在运行程序:" + path);
         
         //运行程序
         Process.Start(path);
         
         return true;
      }
      catch
      {
         return false;
      }
   }
}

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


DB下载策略



参考文档:

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




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


C#程序升级框架-软件版本自动升级系统|C/S框架网



版权声明:本文为CSFramework文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

软件自动升级程序执行dos命令运行程序升级|C/S框架
C/S自动升级软件下载升级策略设计|C/S框架
C#程序升级框架-软件版本自动升级系统|C/S框架
C#.NET C/S结构版本自动升级解决方案升级实现
C/S框架新功能:自动检测升级并强制关闭应用程序进行版本升级
C# C/S架构软件自动升级程序Winform+多数据库(MySQL,MsSQL,Oracle)
Winform自动升级框架源码(C#.NET)-C/S框架
C/S框架主程序调用版本自动升级程序(CSFrameworkV5.AutoUpgrader)VersionCheckNEW类
MES开发使用什么系统框架程序语言|C/S框架
自动升级是封装在框架里吧?运行客户端程序自动升级
CSFramework.DB-扩展命令超时连接超时参数设置|C/S框架
版本自动升级程序AutoUpgrader数据库结构
C# Winform C/S架构自动升级软件 AutoUpgrader V1.2版本
C#.NET C/S结构版本自动升级解决方案自我替换
C# Winform软件版本自动升级 | 软件系统自动更新工具
C# do while循环
C#.NET C/S结构版本自动升级解决方案升级策略
C#使用Process类运行外部程序,已运行程序自动还原主窗体
CS开发框架增字段(Identity),时间戳(Timestamp)字段处理|C/S框架
Winform开发框架测试程序测试环境配置|C/S框架