实现思路:
当前进行下载完文件后,写一个bat脚本,启动脚本,然后退出。
脚本完成删除旧程序,运行新程序的功能。
如果要求不改变exe的名字,可以在脚本中加一句改名字的操作,将旧程序删除后,将新程序改为旧程序的名字,再启动新程序。
新程序启动后,将旧程序遗留的脚本删除。
具体思路规整下:
1. 下载新版软件
2. 关闭当前运行的旧版软件
3. 删除旧版软件
4. 启动新的软件
具体代码如下:
import os
import sys
import subprocess
#编写bat脚本,删除旧程序,运行新程序
def WriteRestartCmd(new_name,old_name):
b = open("upgrade.bat",'w')
TempList = "@echo off\n"
TempList += "if not exist " + new_name + " exit \n" #判断是否有新版本的程序,没有就退出更新。
TempList += "echo 正在更新至最新版本...\n"
TempList += "timeout /t 10 /nobreak\n" #等待10秒
TempList += "del " + old_name + "\n" #删除旧程序
TempList += "copy " + new_name + " " + old_name + '\n' #复制新版本程序
TempList += "echo 更新完成,正在启动...\n"
TempList += "timeout /t 3 /nobreak\n"
TempList += "start " + old_name+"\n" #"start 1.bat\n"
TempList += "exit"
b.write(TempList)
b.close()
subprocess.Popen("upgrade.bat") #不显示cmd窗口
# os.system('start upgrade.bat') #显示cmd窗口
def main():
#新程序启动时,删除旧程序制造的脚本
if os.path.isfile("upgrade.bat"):
os.remove("upgrade.bat")
WriteRestartCmd("newVersion.exe","Version.exe")
if __name__ == '__main__':
main()
sys.exit()
具体文件如下,newVersion为新下载的程序,Version为运行的程序