Python实现简单自动升级exe程序版本并自动运行,适合Python自动化运维。
程序员文章站
2022-12-20 23:11:03
Python实现简单自动升级exe程序版本并自动运行,适合Python自动化运维。一、此教程是使用bat脚本+NFS实现自动更新。(也可以使用FTP或者使用html实现自动更新)1、编写version.ini文件2、编写update.py3、修改主程序一、此教程是使用bat脚本+NFS实现自动更新。(也可以使用FTP或者使用html实现自动更新)检查NFS服务器上的version.ini配置文件和当前运行的程序版本是否一至,如果检测出来有新的版本,程序就自动编写upgrade.bat脚本将旧版本的程序删...
Python自动升级exe程序版本并自动运行,Python自动更新脚本,适合Python自动化运维。
一、此教程是使用bat脚本+NFS实现自动更新。(也可以使用FTP或者使用html实现自动更新)
检查NFS服务器上的version.ini配置文件和当前运行的程序版本是否一至,如果检测出来有新的版本,程序就自动编写upgrade.bat脚本将旧版本的程序删除,将NFS服务器上的新版本程序下载下来并启动最新版本的exe程序。
将编译好最新的exe和对应的version.ini版本的配置文件放到NFS服务器即可,前提是当前运行的程序有以下自动更新的功能。
1、编写version.ini文件
[select]
version=v4
2、编写update.py
# 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 update
def 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 True
return False
if __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") #更新程序
break
browser = webdriver.Chrome('chromedriver.exe') #这里是将程序和驱动放在同一目录
study() #替换成你的自动化函数
except: #当try中的代码运行出错后执行以下代码
if browser:
browser.quit() #当自动化的代码出现错误结束了运行,在这里将浏览器关闭
print('ERROR ReLoading...')
continue
本文地址:https://blog.csdn.net/mn525520/article/details/107437686