gpt4 book ai didi

windows - 从程序和功能自动卸载

转载 作者:可可西里 更新时间:2023-11-01 10:19:48 31 4
gpt4 key购买 nike

我有几个应用程序正在尝试使用 Python 自动化从 Windows 7 和 Windows 8.1 中卸载。 Windows 命令行也可以使用。

程序出现在控制面板的“程序和功能”列表中。单击它们并选择卸载将毫无问题地卸载它们。通过单击“程序和功能”菜单手动卸载可以正常且轻松地进行。

程序是使用 EXE 文件而不是 MSI 文件安装的。

到目前为止我尝试了什么:

1)

wmic product get name

使用命令“wmic product get name”仅显示“程序和功能”页面上显示的部分程序的列表。未列出我要卸载的程序。

2)

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall

程序没有出现在上面的注册表位置

3)

“使用 pywinauto 直接打开和操作程序和功能窗口。”

pywinauto 模块(或任何其他可以找到和操作窗口和按钮句柄的模块)确实可以打开和抓取“程序和功能”窗口,但操作失败。特别是在搜索框输入文字失败,无法选择要卸载的程序。

4)

“使用程序自带的卸载msi。”

没有。

5)

“再次运行安装程序可执行文件。”

这只是更新软件,而不是删除它。

最佳答案

我写了一个 uninstall example for 7-Zip使用 pywinauto 0.5.2。它在 Windows 7 和 Windows 8.1 上对我来说都很稳定。我相信它对其他人有用。

当然这只是一个演示示例,因为可以通过带有相应参数的“wmic”命令简单地卸载 7-Zip。

from __future__ import print_function
import pywinauto

pywinauto.Application(backend="win32").start(r'explorer.exe')
explorer = pywinauto.Application(backend="win32").connect(path='explorer.exe')

# Go to "Control Panel -> Programs and Features"
NewWindow = explorer.window(top_level_only=True, active_only=True, class_name='CabinetWClass')
try:
NewWindow.AddressBandRoot.click_input()
NewWindow.type_keys(r'Control Panel\Programs\Programs and Features{ENTER}', with_spaces=True, set_foreground=False)
ProgramsAndFeatures = explorer.window(top_level_only=True, active_only=True, title='Programs and Features', class_name='CabinetWClass')

# Wait while list of programs is loading
explorer.wait_cpu_usage_lower(threshold=5)

item_7z = ProgramsAndFeatures.FolderView.get_item('7-Zip 9.20 (x64 edition)')
item_7z.ensure_visible()
item_7z.click_input(button='right', where='icon')
explorer.PopupMenu.menu_item('Uninstall').click()

Confirmation = explorer.window(title='Programs and Features', class_name='#32770', active_only=True)
if Confirmation.exists():
Confirmation.Yes.click_input()
Confirmation.wait_not('visible')

WindowsInstaller = explorer.window(title='Windows Installer', class_name='#32770', active_only=True)
if WindowsInstaller.exists():
WindowsInstaller.wait_not('visible', timeout=20)

SevenZipInstaller = explorer.window(title='7-Zip 9.20 (x64 edition)', class_name='#32770', active_only=True)
if SevenZipInstaller.exists():
SevenZipInstaller.wait_not('visible', timeout=20)

if '7-Zip 9.20 (x64 edition)' not in ProgramsAndFeatures.FolderView.texts():
print('OK')
finally:
NewWindow.close()

关于windows - 从程序和功能自动卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31810538/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com