软件自动升级程序之执行dos命令和自运行程序的升级包|C/S框架网
作者:作者不详  发布日期:2019/02/02 18:57:37
  软件自动升级程序之执行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框架网



上一篇 下一篇