2015-08-04 4 views
1

У меня есть несколько приложений, которые я пытаюсь удалить из Windows 7 и Windows 8.1, используя автоматизацию Python. Командные строки Windows также будут работать.Автоматическая деинсталляция из программ и функций

Программы отображаются в списке «Программы и компоненты» на панели управления. Нажав на них и выбрав удаление, они будут удалены без проблем. Удаление вручную, щелкнув меню «Программы и функции», работает отлично и легко.

Программы были установлены с использованием EXE-файла, а не файла MSI.

То, что я пытался до сих пор:

1)

wmic product get name 

Использование команды «Wmic продукта получить имя» показывает список только некоторых из программ, которые отображаются на «Программы и Особенности. Программы, которые я хочу удалить, не указаны.

2)

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall 

программы не отображаются в приведенном выше разделе реестра

3)

"Использовать pywinauto открывать и манипулировать окна Программы и компоненты непосредственно."

Модуль pywinauto (или что-нибудь еще, что может находить и манипулировать окнами и кнопками) работает, открывая и захватывая окно «Программы и функции», но манипулирование им не выполняется. В частности, ввод текста в поле поиска не удался, поэтому программы для удаления не могут быть выбраны.

4)

"Используйте деинсталлировать MSI, которая поставляется вместе с программой."

Не было ни одного.

5)

"Запуск программы установки исполняемый файл снова."

Это просто обновляет программное обеспечение, а не удаляет его.

+0

Не могли бы вы привести пример программы для установки/удаления? Я могу попытаться помочь с подходом pywinauto. –

+0

Спасибо, но мне удалось найти альтернативное решение (не указанное в качестве ответа, поскольку оно очень специфично для программ, которые я использую и не применимо вообще). У обоих pywinauto и AutoIt были те же проблемы с управлением окном «Программы и функции» в Windows 7; попытка ввода текста в окно поиска работает в лучшем случае с перерывами. – Richard

ответ

2

Я написал uninstall example for 7-Zip используя pywinauto 0.5.2. Он работает стабильно для меня как на Windows   7, так и на Windows   8.1. Я считаю, что это может быть полезно для кого-то другого.

Конечно, это демонстрационный пример только потому, что 7-Zip можно просто удалить с помощью команды «wmic» с соответствующими параметрами.

from __future__ import print_function 
import pywinauto 

pywinauto.Application().Start(r'explorer.exe') 
explorer = pywinauto.Application().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.ClickInput() 
    NewWindow.TypeKeys(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.WaitCPUUsageLower(threshold=5) 

    item_7z = ProgramsAndFeatures.FolderView.GetItem('7-Zip 9.20 (x64 edition)') 
    item_7z.EnsureVisible() 
    item_7z.ClickInput(button='right', where='icon') 
    explorer.PopupMenu.MenuItem('Uninstall').Click() 

    Confirmation = explorer.Window_(title='Programs and Features', class_name='#32770', active_only=True) 
    if Confirmation.Exists(): 
     Confirmation.Yes.ClickInput() 
     Confirmation.WaitNot('visible') 

    WindowsInstaller = explorer.Window_(title='Windows Installer', class_name='#32770', active_only=True) 
    if WindowsInstaller.Exists(): 
     WindowsInstaller.WaitNot('visible', timeout=20) 

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

    if '7-Zip 9.20 (x64 edition)' not in ProgramsAndFeatures.FolderView.Texts(): 
     print('OK') 
finally: 
    NewWindow.Close() 
Смежные вопросы