最近一直在研究怎么自动化安装exe成服务,还有就是需要考虑到后面的更新问题,因为这个项目牵扯到的终端有点多,所以准备用自动更新,后台去自动化控制,这里简单写了个自动更新服务exe的模板
# 这个文件主要用于集成到系统里面,用于批处理文件的自动化升级,
# 思路:先下载exe应用,给新的exe应用命名后面添加.new,再运行批处理文件
# 批处理文件的思路,停止服务,删除旧的exe文件,修改新的exe文件名称,启动exe服务
import os,sys
# 假设已经下载好了新的应用,
new_file_name = 'SMWinservice.exe.new'
def create_update_bat(file_name,new_name):
# 获取当前路径
file_path = os.path.dirname(os.path.abspath(__file__))
exe = file_name.split('.')[0]
dat_path = file_path+os.sep+exe+'_update_service.bat'
if os.path.isfile(dat_path):
os.remove(dat_path)
b = open(dat_path,'w',encoding='ANSI')
TempList = '''@echo off
echo ---------- stop --------
taskkill /f /t /im {}
IF ERRORLEVEL 0 echo 服务停止成功
echo.
if not exist {} exit
echo.
echo ---------- delete删除旧程序 --------
del {}
echo.
echo ---------- 修改新程序包名称 --------
copy {} {}
echo.
echo ---------- start --------
.\{} start
IF ERRORLEVEL 0 echo 服务启动成功
echo.
echo 安装成功,打开服务查看
exit
'''.format(file_name,file_name,file_name,new_name,file_name,file_name)
b.write(TempList)
b.close()
# subprocess.Popen("upgrade.bat") #不显示cmd窗口
# os.system('start upgrade.bat') #显示cmd窗口
# 根据程序名称自动生成对应的bat文件
create_update_bat("SMWinservice.exe",new_file_name)