Python自动升级exe程序版本并自动运行,Python自动更新脚本,适合Python自动化运维。

  • 一、此教程是使用bat脚本+NFS实现自动更新。(也可以使用FTP或者使用html实现自动更新)
    • 1、编写version.ini文件
    • 2、编写update.py
    • 3、修改主程序

一、此教程是使用bat脚本+NFS实现自动更新。(也可以使用FTP或者使用html实现自动更新)

检查NFS服务器上的version.ini配置文件和当前运行的程序版本是否一至,如果检测出来有新的版本,程序就自动编写upgrade.bat脚本将旧版本的程序删除,将NFS服务器上的新版本程序下载下来并启动最新版本的exe程序。
将编译好最新的exe和对应的version.ini版本的配置文件放到NFS服务器即可,前提是当前运行的程序有以下自动更新的功能。

1、编写version.ini文件

[select]
version=v4

2、编写update.py

编写bat部分参考于https://blog.csdn.net/u013193899/article/details/78686039

# coding=UTF-8
import os
import sys
import subprocess
import configparser
#编写bat脚本,删除旧程序,运行新程序
def writeUpgrade(exe_name):b = open("upgrade.bat",'w')TempList = "@echo off\n"TempList += "if not exist" + 'z:\\' + exe_name + " exit \n"  #判断是否有新版本的程序,没有就退出更新。TempList += "echo 正在更新至最新版本...\n"TempList += "timeout /t 10 /nobreak\n"  #等待10秒TempList += "del " + os.path.realpath(exe_name) + "\n" #删除旧程序TempList += "copy  z:\\" + exe_name + " " + exe_name + '\n' #复制新版本程序TempList += "echo 更新完成,正在启动...\n"TempList += "timeout /t 3 /nobreak\n"TempList += "start " + exe_name   #"start 1.bat\n"TempList += "exit"b.write(TempList)b.close()# subprocess.Popen("upgrade.bat") #不显示cmd窗口os.system('start upgrade.bat')  #显示cmd窗口#如果是FTP就编写FTP的相应代码def checkVersion(): #检查版本if not os.path.isdir('z:\\'):  #判断是否有z盘,没有就mount,使用mount命令需要提前安装好NFS客户端os.system('mount 172.18.114.172:/app z:')config = configparser.ConfigParser()  # 类实例化path = r'z:\\version.ini'config.read(path)value = config['select']['version'] #获取版本号return value#也可以使用以下代码获取程序版本号#url = r'http://172.18.114.172/index.html'#value = requests.get(url).text

3、修改主程序

# coding=UTF-8
import glob
import updatedef study():#你的自动化代码def updateApp(version):newVersion = update.checkVersion() #获取新版本号if os.path.isfile("upgrade.bat"):  #判断是否有upgrade.bat这个文件,有就删除os.remove("upgrade.bat")if version < newVersion:  #判断当前程序是否是最新版本print('当前版本:', version, '\t最新版本:', newVersion)return Truereturn Falseif __name__ == "__main__":version = 'v3'print('最新版本:', version)dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))        #获取当前程序的路径path = dirname + '\\' + glob.glob('待学习账号*.xls')[0]     #获取数据文件print(path)browser = ''while True:  #重复执行try:if updateApp(version):   #检查是否有新版本time.sleep(2)      #强制等待2秒update.writeUpgrade("多课程同时学习.exe") #更新程序breakbrowser = webdriver.Chrome('chromedriver.exe')     #这里是将程序和驱动放在同一目录study()     #替换成你的自动化函数except:          #当try中的代码运行出错后执行以下代码if browser:browser.quit()   #当自动化的代码出现错误结束了运行,在这里将浏览器关闭print('ERROR ReLoading...')continue

Python实现简单自动升级exe程序版本并自动运行,适合Python自动化运维。相关推荐

  1. 【原创】禁止快播自动升级到最新版本,自己发现的方法

    [原创]禁止快播自动升级到最新版本,自己发现的方法 快播在国庆期间开始耍大牌了,将快播软件由原来的不是5.0.77版本的升级为5.0.77版本. 在升级之后,遇到的问题多多,本人的机子上就是5.0.7 ...

  2. python 自动运维架构师_运维架构师-Python 自动化运维开发-031

    *运维架构师-Python 自动化运维开发-031 十九.Python3 操作数据库 1.Python3 操作 MySQL 1.基本介绍Python3 操作 MySQL 数据库 可以使用的模块是 py ...

  3. 如何使编译的EXE程序能多个运行?

    如何使编译的EXE程序能多个运行? 方法很简单,把这句话加到EXE对应的INI文件中去 allowmultipleinstances=True 不错吧!:) 转载于:https://www.cnblo ...

  4. python自动化运维之python2.6升级2.7和集中病毒扫描

    1.因为我linux的python是2.6.6,所以因为有些模块是2.7的,先进行升级. 步骤地址:http://www.linuxidc.com/Linux/2014-07/104555.htm 2 ...

  5. python 自动运维架构师_运维架构师-Python 自动化运维开发-013

    *运维架构师-Python 自动化运维开发-013 5.常用快捷键(附加课余研究) 1.Ctrl + Enter:在下方新建行但不移动光标: 2.Shift + Enter:在下方新建行并移到新行行首 ...

  6. python学习之自动化运维(一):shell的使用

    第一章: shell快速入门: 一.运维简介: 1.运维简介以及企业中的那些事: 2.简单的运维知识 规划: 需要多少资源来支持项目的运行; 管理: 项目运行过程中的所有内容都管理起来; 流程规范: ...

  7. python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备

    现在,我们已经知道如何在不同的操作系统中使用和安装Python以及如何使用EVE-NG搭建网络拓扑.在本章中,我们将学习如何使用目前常用的网络自动化库自动完成各种网络任务.Python可以在不同的网络 ...

  8. python自动化运维之路~DAY6

    python自动化运维之路~DAY6 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  如果你想开发一款游戏,会存在角色的混搭的情况,这个时候"面向对象过程"就出 ...

  9. Python自动化运维---学习笔记

    Python自动化运维 python简介 入门容易精通难,python适合作为第二编程语言(对于运维:Shell,对于开发:Java,对于全栈:nodejs(javascript)) python官网 ...

最新文章

  1. java内存规范_Java内存模型-jsr133规范介绍
  2. centos7 安装 wireshark
  3. 装有linux的硬盘装到不同主机,把ubuntu系统安装进移动硬盘,可在不同电脑上运行...
  4. linux服务器管理书籍,linux服务器管理
  5. [JavaWeb-JavaScript]JavaScript_Global全局对象
  6. 数据科学 IPython 笔记本 7.3 Pandas 数据操作
  7. spring缓存与Redis
  8. 解决NSTimer循环引用
  9. 开源项目:测试安卓设备摄像头的帧率
  10. python3.7中文手册chm_python3.7 官方中文手册文档全套
  11. 创建属于自己的OneNote插件
  12. 计算机操作系统操作系统(第四版)汤小丹版 思维导图(第一章到第七章)
  13. 【JVM】Java命令以及JVM调优
  14. ORACLE VARCHAR2和NVARCHAR2的区别
  15. EJB是什么,什么是EJB
  16. javascript typeof 和 instanceof 的区别和联系
  17. 7-18(查找) 新浪微博热门话题(30 分)
  18. 解决报错:Source does not fit in dest 异常
  19. [Android]实现高德地图导航
  20. 拼接大屏数据展示_大屏幕实时数据可视化解决方案?

热门文章

  1. 十字交叉型染色体通过Opencv 分割原理
  2. 12_ue4进阶_换一个更好看的人物模型
  3. div 设置滚动条 每次打开定位在最下方
  4. Python3爬虫项目集:爬取知乎十几万张小姐姐美图
  5. 有了性能超92%笔记本电脑的A12X Bionic,苹果可以和英特尔x86处理器分手了?
  6. 计算机主机滴滴叫是怎么回事,电脑开机一直滴滴叫怎么回事
  7. js 根据ID或者Class在指定位置添加div
  8. 山东计算机一级选择题,计算机一级考试试题选择题(完整)
  9. ubuntu下终端锁屏设置
  10. 树莓派无线连接不上wifi(一次就好)