You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Tkinter脚本实现Chrome自动下载安装及自动化操作?

软件安装自动化脚本优化方案

需求说明

我用Tkinter编写了一款软件安装自动化脚本,目标是让各功能仅需极少手动操作即可自动化执行。例如当前的install_chrome函数仅能打开Chrome下载链接,我希望点击Tkinter中的“RUN”按钮后,可直接打开Chrome下载页面并自动开始下载ChromeSetup.exe并启动安装,同时其他功能也需实现类似流程。请问需要对现有脚本做出哪些调整修改?

现有脚本

from tkinter import * 
import tkinter as tk 
import webbrowser 
import subprocess  
import time 
import sys
import os
  
  
master = Tk() 

master.geometry("250x350") 
master.title("Software Installation") 
  
#======================================函数定义================================== 

def install_chrome():
    chrome_download_link = "https://www.google.com/chrome/dr/download/?brand=AYYF&geo=US&gclid=EAIaIQobChMI8MO67O-0gQMVfButBh0spwPFEAAYASAAEgLZi_D_BwE&gclsrc=aw.ds"
    webbrowser.open(chrome_download_link)

def install_office_2019(): 
    office_2019_download_link = "https://www.microsoft.com//en-us//microsoft-365//store//download-office-2019//" 
    webbrowser.open(office_2019_download_link) 
  
def run_windows_updates(): 
    subprocess.call('cmd /c start ms-settings:windowsupdate', shell=True) 
  
def uninstall_office_365(): 
    subprocess.call('appwiz.cpl', shell=True) 
  
def disable_network_sharing(share_name): 
    command = f"net share {share_name} /delete" 
    subprocess.Popen(command, shell=True) 
    disable_network_sharing("SharedFolder") 
  

def install_egnyte(): 
    chrome_download_link = "https://helpdesk.egnyte.com/hc/en-us/articles/204909984-Desktop-App-for-Windows-Installation" 
    webbrowser.open(chrome_download_link)

def install_sophos(): 
    chrome_download_link = "https://login.sophos.com/login.sophos.com/oauth2/v2.0/authorize?p=B2C_1A_signup_signin&client_id=d8ce821f-a1da-4b03-b7e2-1d1a9cc028f3&redirect_uri=https%3A%2F%2Fcloud.sophos.com%2Fmanage%2Flogin%2Fazureb2c&scope=openid&response_type=id_token&prompt=login&state=" 
    webbrowser.open(chrome_download_link)  

def install_adobe(): 
    chrome_download_link = "https://www.adobe.com/downloads.html" 
    webbrowser.open(chrome_download_link) 

#=============================UI组件======================================================= 
  
var1 = IntVar() 
Checkbutton(master, text="Delete office Programs", variable=var1).grid(row=0, sticky=W) 
btn2 = Button(master, text = 'RUN',command=uninstall_office_365) 
btn2.grid(row=0, column=1) 
  
var2 = IntVar() 
Checkbutton(master, text="Run Updates", variable=var2).grid(row=1, sticky=W) 
btn2 = Button(master, text = 'RUN',command=run_windows_updates) 
btn2.grid(row=1, column=1) 
  
var3 = IntVar() 
Checkbutton(master, text="Install Chrome", variable=var3).grid(row=2, sticky=W) 
btn2 = Button(master, text = 'RUN',command=install_chrome) 
btn2.grid(row=2, column=1) 
  
var4 = IntVar() 
Checkbutton(master, text="Install Office 19", variable=var4).grid(row=3, sticky=W) 
btn2 = Button(master, text = 'RUN',command=install_office_2019) 
btn2.grid(row=3, column=1) 
  
var5 = IntVar() 
Checkbutton(master, text="Install Sophos", variable=var5).grid(row=4, sticky=W) 
btn2 = Button(master, text = 'RUN',command=install_sophos) 
btn2.grid(row=4, column=1)  
  
var6 = IntVar() 
Checkbutton(master, text="Install Egnyte", variable=var6).grid(row=5, sticky=W) 
btn2 = Button(master, text = 'RUN',command=install_egnyte) 
btn2.grid(row=5, column=1)  
  
var7 = IntVar() 
Checkbutton(master, text="Turn off Network Sharing", variable=var7).grid(row=6, sticky=W) 
btn2 = Button(master, text = 'RUN',command=disable_network_sharing) 
btn2.grid(row=6, column=1) 
  
var8 = IntVar() 
Checkbutton(master, text="Install Adobe Reader ", variable=var8).grid(row=7, sticky=W) 
btn2 = Button(master, text = 'RUN',command=install_adobe) 
btn2.grid(row=7, column=1) 

if __name__=='__main__':
    master.mainloop()

修改调整建议

1. 核心功能改造:从网页跳转转为自动下载+静默安装

现有脚本仅打开下载页面,需手动操作,要实现全自动需替换为直接下载官方安装包+静默执行安装:

Chrome示例改造

使用官方静默安装包直链,配合requests下载、subprocess静默安装:

# 先安装依赖:pip install requests
import requests

def install_chrome():
    # 64位Chrome企业版静默安装包直链
    chrome_installer_url = "https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi"
    # 临时目录保存安装包
    download_path = os.path.join(os.getenv("TEMP"), "ChromeSetup.msi")
    
    # 下载安装包
    with requests.get(chrome_installer_url, stream=True) as r:
        r.raise_for_status()
        with open(download_path, "wb") as f:
            for chunk in r.iter_content(chunk_size=8192):
                f.write(chunk)
    
    # 静默安装(/qn参数表示无交互)
    subprocess.call(f'msiexec /i "{download_path}" /qn', shell=True)
    # 安装完成后删除临时文件
    os.remove(download_path)

其他软件适配思路

  • Office 2019:使用微软Office部署工具(ODT),通过配置XML文件指定安装版本,调用setup.exe /configure config.xml实现静默下载安装。
  • Adobe Reader:获取官方离线安装包直链,安装时添加/sAll参数实现无交互安装。
  • Sophos/Egnyte:查找官方提供的静默安装包或命令行安装参数,避免跳转网页。

2. 修复现有BUG

  • disable_network_sharing函数存在递归死循环,修改为:
def disable_network_sharing():
    share_name = "SharedFolder"
    # /y参数自动确认删除,无需手动确认
    command = f"net share {share_name} /delete /y"
    subprocess.Popen(command, shell=True)

同时按钮绑定命令时无需传参,对应UI部分的按钮绑定保持command=disable_network_sharing即可。

3. 优化UI交互逻辑

  • 新增批量执行功能:添加一个总按钮,检查所有勾选的任务并依次执行,减少重复点击:
def run_selected_tasks():
    if var1.get() == 1:
        uninstall_office_365()
        time.sleep(5)  # 给卸载流程留缓冲时间
    if var2.get() == 1:
        run_windows_updates()
    if var3.get() == 1:
        install_chrome()
    if var4.get() == 1:
        install_office_2019()
    # 其他任务依次类推

# 添加总执行按钮
btn_run_all = Button(master, text='RUN SELECTED', command=run_selected_tasks)
btn_run_all.grid(row=8, column=0, columnspan=2, pady=10)
  • 添加状态提示:用Tkinter的Label显示当前任务进度,比如“正在下载Chrome...”、“Chrome安装完成”,避免用户无感知。

4. 权限与依赖处理

  • 脚本需以管理员权限运行,添加权限检测:
import ctypes

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if not is_admin():
    # 重新以管理员身份启动脚本
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
    sys.exit()
  • 确保安装所需依赖:运行pip install requests安装下载所需的库。

内容的提问来源于stack exchange,提问作者jpotter20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:52:08