zoukankan      html  css  js  c++  java
  • 分享一个自己写的简单的自动更新插件

    自动更新插件通常需要三部分

    1.配合需要升级的程序的一个dll

    2.自动升级程序

    3.打包程序

    第一部分 配合主程序的dll

    在这个升级程序中我将配合主程序用来校验版本号的代码封装在AutoUpdateHelper中,主要包括两个函数,一个是检查版本并自动更新CheckAndUpdate,一个是用来获取当前的版本号GetVersion

    第二部分 自动升级程序

    升级程序主要的步骤:

    1.根据本地的update.xml中的manifest文件的远程地址下载manifest文件

    2.根据本地的version和远程manifest中的version校对

    3.如果版本不一致,下载manifest中的webpath+版本号.zip文件

    4.解压,覆盖原文件

    5.根据manifest中配置的exepath,重新启动对应的主程序

    第三部分 打包程序

    由于自动更新程序和主程序是在同一路径下,因此发布新版本打包的时候需要把自动更新程序相关的exe,dll去掉,防止自动更新程序覆盖原文件的时候,出现文件占用的错误

    因此,将项目文件过滤一下,然后执行zip打包。之后将新版本的包提交到服务器上,将服务器的manifest文件,进行相应版本的修改。

    使用说明 

    项目地址 github点击下载

    1.首先将AutoUpdate.exe和DotNetZip.dll(用了第三方的解压缩)   和AutoUpdateHelper.dll(主程序调用的dll)和update.xml(本地记录版本号)

    拷贝到主程序的目录下

    2.在主程序中加入校验代码

    try
                {
                    if (AutoUpdateHelper.AutoUpdate.CheckAndUpdate())
                    {
                        Environment.Exit(0);
                    }
                }
                catch(Exception e)
                {
                    MessageBoxEx.Show("网络异常~~~赶紧检查一下吧……");
                    Environment.Exit(Environment.ExitCode);
                }

    3.修改update.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <localconf>
      <version>1.0</version>
      <manifest>http://www.xxx.com/mainfests.xml</manifest>
      <update>AutoUpdate.exe</update>
    </localconf>

    4.将manifests.xml修改 并且放到update.xml中manifest对应的远程地址上

    <?xml version="1.0" encoding="utf-8" ?>
    <manifest>
      <!--版本号,无格式要求,更新时需要修改-->
      <version>1.1</version>
      <description>更新说明</description>
      <!--启动程序的名称-->
      <exepath>味来外卖客户端.exe</exepath>
      <webpath>http://www.xxx.com/update/</webpath>
    </manifest>

    5.将与manifests.xml中对应版本好的包上传到manifests.webpath配置的远程路径下,例如1.1.zip文件,放到 http://www.xxx.com/update/目录下

    大功告成~~~

    程序的部分截图

    自动更新程序

    打包程序

  • 相关阅读:
    python高级函数六剑客
    测试工程师用到常用的git命令
    qing理解赋值,深浅拷贝的区别
    python设计模式之单例
    Python全栈之jQuery笔记
    畅谈python之单元测试框架-unittest
    浅析python之单元测试框架-unittest
    Python之日志处理(logging模块)
    Spring整理
    Spark学习笔记11面向对象编程
  • 原文地址:https://www.cnblogs.com/mengxingxinqing/p/6517299.html
Copyright © 2011-2022 走看看