From bf6482a594b5d0e554d4fb90a038d59c67dbaac8 Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Fri, 23 Jul 2021 21:58:47 -0600 Subject: [PATCH] Fix possible crash in reset_windows_updates() Auto Repairs could end up in an endless boot loop if SoftwareDistribution.old exists before running --- scripts/wk/repairs/win.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/wk/repairs/win.py b/scripts/wk/repairs/win.py index 566cec99..15406f83 100644 --- a/scripts/wk/repairs/win.py +++ b/scripts/wk/repairs/win.py @@ -19,7 +19,12 @@ from wk.exe import ( popen_program, wait_for_procs, ) -from wk.io import delete_folder, get_path_obj, rename_item +from wk.io import ( + delete_folder, + get_path_obj, + non_clobber_path, + rename_item, + ) from wk.kit.tools import download_tool, get_tool_path, run_tool from wk.log import format_log_path, update_log_path from wk.os.win import ( @@ -1229,12 +1234,11 @@ def reset_windows_policies(): def reset_windows_updates(): """Reset Windows Updates.""" system_root = os.environ.get('SYSTEMROOT', 'C:/Windows') + src_path = f'{system_root}/SoftwareDistribution' + dest_path = non_clobber_path(f'{src_path}.old') try: - rename_item( - f'{system_root}/SoftwareDistribution', - f'{system_root}/SoftwareDistribution.old', - ) - delete_folder(f'{system_root}/SoftwareDistribution.old', force=True) + rename_item(src_path, dest_path) + delete_folder(dest_path, force=True) except FileNotFoundError: # Ignore pass