diff --git a/.bin/Scripts/functions/setup.py b/.bin/Scripts/functions/setup.py index 89a51b8f..59e97f90 100644 --- a/.bin/Scripts/functions/setup.py +++ b/.bin/Scripts/functions/setup.py @@ -126,7 +126,7 @@ def enable_system_restore(): def update_clock(): """Set Timezone and sync clock.""" - run_program(['tzutil' ,'/s', WINDOWS_TIME_ZONE], check=False) + run_program(['tzutil', '/s', WINDOWS_TIME_ZONE], check=False) run_program(['net', 'stop', 'w32ime'], check=False) run_program( ['w32tm', '/config', '/syncfromflags:manual', @@ -294,9 +294,9 @@ def install_libreoffice( run_program(cmd, check=True) def install_ninite_bundle( + # pylint: disable=too-many-arguments,too-many-branches base=True, browsers_only=False, - current=False, libreoffice=False, missing=False, mse=False, @@ -317,32 +317,43 @@ def install_ninite_bundle( # Bail return popen_objects - # Main bundle - selections = [] + # Main selections + main_selections = [] if base: - selections.append('base') - if standard and not missing: - selections.append('browsers') + main_selections.append('base') if standard: if global_vars['OS']['Version'] in ('8', '8.1', '10'): - selections.append('standard') + main_selections.append('standard') else: - selections.append('standard7') + main_selections.append('standard7') cmd = r'{}\Installers\Extras\Bundles\{}.exe'.format( global_vars['BaseDir'], - '-'.join(selections), + '-'.join(main_selections), ) popen_objects.append(popen_program([cmd])) - # Current - if current: - for cmd in find_current_software(): - popen_objects.append(popen_program([cmd])) - - # Missing + # Extra selections + extra_selections = {} + for cmd in find_current_software(): + extra_selections[cmd] = True if missing: for cmd in find_missing_software(): - popen_objects.append(popen_program([cmd])) + extra_selections[cmd] = True + + # Remove overlapping selections + regex = [] + for n_name, n_group in NINITE_REGEX.items(): + if n_name in main_selections: + regex.extend(n_group) + regex = '({})'.format('|'.join(regex)) + extra_selections = { + cmd: True for cmd in extra_selections + if not re.search(regex, cmd, re.IGNORECASE) + } + + # Start extra selections + for cmd in extra_selections: + popen_objects.append(popen_program([cmd])) # Microsoft Security Essentials if mse: diff --git a/.bin/Scripts/settings/sources.py b/.bin/Scripts/settings/sources.py index cd9545ac..5474cb2b 100644 --- a/.bin/Scripts/settings/sources.py +++ b/.bin/Scripts/settings/sources.py @@ -73,19 +73,18 @@ VCREDIST_SOURCES = { '64': 'https://aka.ms/vs/15/release/vc_redist.x64.exe', }, } +NINITE_REGEX = { + 'base': ['7-Zip', 'VLC'], + 'standard': ['Google Chrome', 'Mozilla Firefox', 'SumatraPDF'], + 'standard7': ['Google Chrome', 'Mozilla Firefox', 'SumatraPDF'], + } NINITE_SOURCES = { 'Bundles': { - 'base-browsers-standard.exe': '.net4.7.2-7zip-chrome-classicstart-firefox-sumatrapdf-vlc', - 'base-browsers-standard7.exe': '.net4.7.2-7zip-chrome-firefox-sumatrapdf-vlc', - 'base-browsers.exe': '.net4.7.2-7zip-chrome-firefox-vlc', - 'base-standard.exe': '.net4.7.2-7zip-classicstart-sumatrapdf-vlc', - 'base-standard7.exe': '.net4.7.2-7zip-sumatrapdf-vlc', 'base.exe': '.net4.7.2-7zip-vlc', - 'browsers-standard.exe': 'chrome-classicstart-firefox-sumatrapdf', - 'browsers-standard7.exe': 'chrome-firefox-sumatrapdf', - 'browsers.exe': 'chrome-firefox', - 'standard.exe': 'classicstart-sumatrapdf', - 'standard7.exe': 'sumatrapdf', + 'base-standard.exe': '.net4.7.2-7zip-chrome-classicstart-firefox-sumatrapdf-vlc', + 'base-standard7.exe': '.net4.7.2-7zip-chrome-firefox-sumatrapdf-vlc', + 'standard.exe': 'chrome-classicstart-firefox-sumatrapdf', + 'standard7.exe': 'chrome-firefox-sumatrapdf', }, 'Audio-Video': { 'AIMP.exe': 'aimp', diff --git a/.bin/Scripts/system_setup.py b/.bin/Scripts/system_setup.py index a137365c..8b98b323 100644 --- a/.bin/Scripts/system_setup.py +++ b/.bin/Scripts/system_setup.py @@ -140,7 +140,6 @@ SETUP_QUESTIONS = { # Ninite 'Base': {'New': True, 'Fab': True, 'Cur': True, 'HW': False}, - 'Current': {'New': False, 'Fab': False, 'Cur': True, 'HW': False}, 'Missing': {'New': False, 'Fab': True, 'Cur': False, 'HW': False}, 'Standard': {'New': True, 'Fab': True, 'Cur': False, 'HW': False}, } @@ -321,6 +320,15 @@ def main(): other_results=OTHER_RESULTS, **kwargs) + # Wait for Ninite proc(s) + if action == 'Ninite bundle': + print_standard('Waiting for installations to finish...') + try: + for proc in result['Out']: + proc.wait() + except KeyboardInterrupt: + pass + # Pause if values.get('Pause', False): print_standard(values['Pause'])