Add "auto_" windows updates functions

This commit is contained in:
2Shirt 2021-04-29 19:37:09 -06:00
parent 078859838a
commit 973dad3240
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
3 changed files with 46 additions and 5 deletions

View file

@ -56,13 +56,13 @@ BASE_MENUS = {
MenuEntry('Enable System Restore', 'auto_system_restore_enable'),
MenuEntry('Set System Restore Size', 'auto_system_restore_set_size'),
MenuEntry('Create System Restore', 'auto_system_restore_create'),
MenuEntry('Backup Browsers', placeholder_function),
#MenuEntry('Backup Browsers', #TODO),
MenuEntry('Backup Power Plans', 'auto_backup_power_plans'),
MenuEntry('Backup Registry', 'auto_backup_registry'),
),
'Windows Repairs': (
MenuEntry('Disable Windows Updates', placeholder_function),
MenuEntry('Reset Windows Updates', placeholder_function),
MenuEntry('Disable Windows Updates', 'auto_windows_updates_disable'),
MenuEntry('Reset Windows Updates', 'auto_windows_updates_reset'),
MenuEntry('Reboot', placeholder_reboot),
MenuEntry('CHKDSK', placeholder_function),
MenuEntry('DISM RestoreHealth', 'auto_dism'),
@ -85,7 +85,7 @@ BASE_MENUS = {
'Manual Steps': (
MenuEntry('AdwCleaner', placeholder_function),
MenuEntry('IO Bit Uninstaller', placeholder_function),
MenuEntry('Enable Windows Updates', placeholder_function),
MenuEntry('Enable Windows Updates', 'auto_windows_updates_enable'),
),
},
'Options': (

View file

@ -192,5 +192,11 @@ def recursive_copy(source, dest, overwrite=False):
raise FileExistsError(f'Refusing to delete file: {dest}')
def rename_item(path, new_path):
"""Rename item, returns pathlib.Path."""
path = pathlib.Path(path)
return path.rename(new_path)
if __name__ == '__main__':
print("This file is not meant to be called directly.")

View file

@ -13,6 +13,7 @@ from subprocess import CalledProcessError, DEVNULL
from wk.cfg.main import KIT_NAME_FULL
from wk.exe import get_procs, run_program, popen_program, wait_for_procs
from wk.io import delete_folder, rename_item
from wk.kit.tools import run_tool
from wk.log import format_log_path, update_log_path
from wk.os.win import (
@ -516,6 +517,30 @@ def auto_system_restore_set_size(group, name):
save_settings(group, name, result=result)
def auto_windows_updates_disable(group, name):
"""Disable Windows Updates."""
result = TRY_PRINT.run('Disable Windows Updates...', disable_windows_updates)
if result['Failed']:
# Reboot and try again?
reboot()
save_settings(group, name, result=result)
def auto_windows_updates_enable(group, name):
"""Enable Windows Updates."""
result = TRY_PRINT.run('Enable Windows Updates...', enable_windows_updates)
save_settings(group, name, result=result)
def auto_windows_updates_reset(group, name):
"""Reset Windows Updates."""
result = TRY_PRINT.run('Reset Windows Updates...', reset_windows_updates)
if result['Failed']:
# Reboot and try again?
reboot()
save_settings(group, name, result=result)
# Misc Functions
def set_backup_path(name, date=False):
"""Set backup path, returns pathlib.Path."""
@ -551,8 +576,8 @@ def create_system_restore_point():
def disable_windows_updates():
"""Disable and stop Windows Updates."""
stop_service('wuauserv')
disable_service('wuauserv')
stop_service('wuauserv')
def enable_windows_updates():
@ -601,6 +626,16 @@ def reboot(timeout=10):
raise SystemExit
def reset_windows_updates():
"""Reset Windows Updates."""
system_root = os.environ.get('SYSTEMROOT', 'C:/Windows')
rename_item(
f'{system_root}/SoftwareDistribution',
f'{system_root}/SoftwareDistribution.old',
)
delete_folder(f'{system_root}/SoftwareDistribution.old', force=True)
def run_chkdsk_offline():
"""Set filesystem 'dirty bit' to force a CHKDSK during startup."""
cmd = ['fsutil', 'dirty', 'set', os.environ.get('SYSTEMDRIVE', 'C:')]