欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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脚本将旧版本的程序删...

一、此教程是使用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