Merge branch '1201' into dev

This commit is contained in:
2Shirt 2018-09-25 21:08:34 -06:00
commit 9f5a8ace72
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
34 changed files with 4216 additions and 299 deletions

View file

@ -279,9 +279,9 @@ rem Create VB script
mkdir "%bin%\tmp" 2>nul mkdir "%bin%\tmp" 2>nul
echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs" echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs"
if defined L_NCMD ( if defined L_NCMD (
echo UAC.ShellExecute "%PYTHON%", """%script%""", "", "runas", 3 >> "%bin%\tmp\Elevate.vbs" echo UAC.ShellExecute "%PYTHON%", """%script%"" %L_ARGS%", "", "runas", 3 >> "%bin%\tmp\Elevate.vbs"
) else ( ) else (
echo UAC.ShellExecute "%CON%", "-run ""%PYTHON%"" ""%script%"" -new_console:n", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs" echo UAC.ShellExecute "%CON%", "-run ""%PYTHON%"" ""%script%"" %L_ARGS% -new_console:n", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs"
) )
rem Run rem Run
@ -290,9 +290,9 @@ goto Exit
:LaunchPyScriptUser :LaunchPyScriptUser
if defined L_NCMD ( if defined L_NCMD (
start "" "%PYTHON%" "%script%" || goto ErrorUnknown start "" "%PYTHON%" "%script%" %L_ARGS% || goto ErrorUnknown
) else ( ) else (
start "" "%CON%" -run "%PYTHON%" "%script%" -new_console:n || goto ErrorUnknown start "" "%CON%" -run "%PYTHON%" "%script%" %L_ARGS% -new_console:n || goto ErrorUnknown
) )
goto Exit goto Exit
@ -332,7 +332,7 @@ echo. Executable Working Dir Program Args [L_7ZIP] [L_ELEV] [L__CLI]
echo. Folder Folder '.' [L_7ZIP] echo. Folder Folder '.' [L_7ZIP]
echo. Office Year Product [L_7ZIP] echo. Office Year Product [L_7ZIP]
echo. PSScript Scripts Script [L_7ZIP] [L_ELEV] [L_NCMD] echo. PSScript Scripts Script [L_7ZIP] [L_ELEV] [L_NCMD]
echo. PyScript Scripts Script [L_7ZIP] [L_ELEV] [L_NCMD] echo. PyScript Scripts Script Args [L_7ZIP] [L_ELEV] [L_NCMD]
echo. QuickBooks Year Product [L_7ZIP] echo. QuickBooks Year Product [L_7ZIP]
echo. echo.
echo.L_7ZIP: Extra arguments for 7-Zip (in the :ExtractCBin label) echo.L_7ZIP: Extra arguments for 7-Zip (in the :ExtractCBin label)

View file

@ -17,7 +17,7 @@ call :SetTitle Launcher
rem EXTRA_CODE rem EXTRA_CODE
:DefineLaunch :DefineLaunch
:: See %bin%\SCripts\Launch.cmd for details under :Usage label :: See %bin%\Scripts\Launch.cmd for details under :Usage label
set L_TYPE= set L_TYPE=
set L_PATH= set L_PATH=
set L_ITEM= set L_ITEM=
@ -110,4 +110,4 @@ goto Exit
:: Cleanup and exit :: :: Cleanup and exit ::
:Exit :Exit
endlocal endlocal
exit /b %errorlevel% exit /b %errorlevel%

View file

@ -2,6 +2,8 @@
from functions.common import * from functions.common import *
from operator import itemgetter
# Define other_results for later try_and_print # Define other_results for later try_and_print
browser_data = {} browser_data = {}
other_results = { other_results = {
@ -101,6 +103,52 @@ SUPPORTED_BROWSERS = {
}, },
} }
def archive_all_users():
"""Create backups for all browsers for all users."""
users_root = r'{}\Users'.format(global_vars['Env']['SYSTEMDRIVE'])
user_envs = []
# Build list of valid users
for user_name in os.listdir(users_root):
valid_user = True
if user_name in ('Default', 'Default User'):
# Skip default users
continue
user_path = os.path.join(users_root, user_name)
appdata_local = os.path.join(user_path, r'AppData\Local')
appdata_roaming = os.path.join(user_path, r'AppData\Roaming')
valid_user &= os.path.exists(appdata_local)
valid_user &= os.path.exists(appdata_roaming)
if valid_user:
user_envs.append({
'USERNAME': user_name,
'USERPROFILE': user_path,
'APPDATA': appdata_roaming,
'LOCALAPPDATA': appdata_local})
# Backup browsers for all valid users
print_info('Backing up browsers')
for fake_env in sorted(user_envs, key=itemgetter('USERPROFILE')):
print_standard(fake_env['USERNAME'])
for b_k, b_v in sorted(SUPPORTED_BROWSERS.items()):
if b_k == 'Mozilla Firefox Dev':
continue
source_path = b_v['user_data_path'].format(**fake_env)
if not os.path.exists(source_path):
continue
source_items = source_path + '*'
archive_path = r'{BackupDir}\Browsers ({USERNAME})'.format(
**global_vars, **fake_env)
os.makedirs(archive_path, exist_ok=True)
archive_path += r'\{}.7z'.format(b_k)
cmd = [
global_vars['Tools']['SevenZip'],
'a', '-aoa', '-bso0', '-bse0', '-mx=1',
archive_path, source_items]
try_and_print(message=' {}...'.format(b_k),
function=run_program, cmd=cmd)
print_standard(' ')
def archive_browser(name): def archive_browser(name):
"""Create backup of Browser saved in the BackupDir.""" """Create backup of Browser saved in the BackupDir."""
source = '{}*'.format(browser_data[name]['user_data_path']) source = '{}*'.format(browser_data[name]['user_data_path'])
@ -111,6 +159,7 @@ def archive_browser(name):
cmd = [ cmd = [
global_vars['Tools']['SevenZip'], global_vars['Tools']['SevenZip'],
'a', '-aoa', '-bso0', '-bse0', '-mx=1', 'a', '-aoa', '-bso0', '-bse0', '-mx=1',
'-mhe=on', '-p{}'.format(ARCHIVE_PASSWORD),
archive, source] archive, source]
run_program(cmd) run_program(cmd)
@ -138,7 +187,7 @@ def clean_chromium_profile(profile):
def clean_internet_explorer(**kwargs): def clean_internet_explorer(**kwargs):
"""Uses the built-in function to reset IE and sets the homepage. """Uses the built-in function to reset IE and sets the homepage.
NOTE: kwargs set but unused as a workaround.""" NOTE: kwargs set but unused as a workaround."""
kill_process('iexplore.exe') kill_process('iexplore.exe')
run_program(['rundll32.exe', 'inetcpl.cpl,ResetIEtoDefaults'], check=False) run_program(['rundll32.exe', 'inetcpl.cpl,ResetIEtoDefaults'], check=False)
@ -182,11 +231,11 @@ def clean_mozilla_profile(profile):
def get_browser_details(name): def get_browser_details(name):
"""Get installation status and profile details for all supported browsers.""" """Get installation status and profile details for all supported browsers."""
browser = SUPPORTED_BROWSERS[name].copy() browser = SUPPORTED_BROWSERS[name].copy()
# Update user_data_path # Update user_data_path
browser['user_data_path'] = browser['user_data_path'].format( browser['user_data_path'] = browser['user_data_path'].format(
**global_vars['Env']) **global_vars['Env'])
# Find executable (if multiple files are found, the last one is used) # Find executable (if multiple files are found, the last one is used)
exe_path = None exe_path = None
num_installs = 0 num_installs = 0
@ -197,7 +246,7 @@ def get_browser_details(name):
if os.path.exists(test_path): if os.path.exists(test_path):
num_installs += 1 num_installs += 1
exe_path = test_path exe_path = test_path
# Find profile(s) # Find profile(s)
profiles = [] profiles = []
if browser['base'] == 'ie': if browser['base'] == 'ie':
@ -230,7 +279,7 @@ def get_browser_details(name):
if os.path.exists(browser['user_data_path']): if os.path.exists(browser['user_data_path']):
profiles.append( profiles.append(
{'name': 'Default', 'path': browser['user_data_path']}) {'name': 'Default', 'path': browser['user_data_path']})
# Get homepages # Get homepages
if browser['base'] == 'ie': if browser['base'] == 'ie':
# IE is set to only have one profile above # IE is set to only have one profile above
@ -239,14 +288,14 @@ def get_browser_details(name):
for profile in profiles: for profile in profiles:
prefs_path = r'{path}\prefs.js'.format(**profile) prefs_path = r'{path}\prefs.js'.format(**profile)
profile['homepages'] = get_mozilla_homepages(prefs_path=prefs_path) profile['homepages'] = get_mozilla_homepages(prefs_path=prefs_path)
# Add to browser_data # Add to browser_data
browser_data[name] = browser browser_data[name] = browser
browser_data[name].update({ browser_data[name].update({
'exe_path': exe_path, 'exe_path': exe_path,
'profiles': profiles, 'profiles': profiles,
}) })
# Raise installation warnings (if any) # Raise installation warnings (if any)
if num_installs == 0: if num_installs == 0:
raise NotInstalledError raise NotInstalledError
@ -305,7 +354,7 @@ def get_mozilla_homepages(prefs_path):
homepages = search.group(1).split('|') homepages = search.group(1).split('|')
except Exception: except Exception:
pass pass
return homepages return homepages
def get_mozilla_profiles(search_path, dev=False): def get_mozilla_profiles(search_path, dev=False):
@ -332,9 +381,11 @@ def get_mozilla_profiles(search_path, dev=False):
return profiles return profiles
def install_adblock(indent=8, width=32): def install_adblock(indent=8, width=32, just_firefox=False):
"""Install adblock for all supported browsers.""" """Install adblock for all supported browsers."""
for browser in sorted(browser_data): for browser in sorted(browser_data):
if just_firefox and browser_data[browser]['base'] != 'mozilla':
continue
exe_path = browser_data[browser].get('exe_path', None) exe_path = browser_data[browser].get('exe_path', None)
function=run_program function=run_program
if not exe_path: if not exe_path:
@ -400,7 +451,7 @@ def install_adblock(indent=8, width=32):
def list_homepages(indent=8, width=32): def list_homepages(indent=8, width=32):
"""List current homepages for reference.""" """List current homepages for reference."""
for browser in [k for k, v in sorted(browser_data.items()) if v['exe_path']]: for browser in [k for k, v in sorted(browser_data.items()) if v['exe_path']]:
# Skip Chromium-based browsers # Skip Chromium-based browsers
if browser_data[browser]['base'] == 'chromium': if browser_data[browser]['base'] == 'chromium':
@ -444,9 +495,11 @@ def reset_browsers(indent=8, width=32):
indent=indent, width=width, function=function, indent=indent, width=width, function=function,
other_results=other_results, profile=profile) other_results=other_results, profile=profile)
def scan_for_browsers(): def scan_for_browsers(just_firefox=False):
"""Scan system for any supported browsers.""" """Scan system for any supported browsers."""
for name in sorted(SUPPORTED_BROWSERS): for name, details in sorted(SUPPORTED_BROWSERS.items()):
if just_firefox and details['base'] != 'mozilla':
continue
try_and_print(message='{}...'.format(name), try_and_print(message='{}...'.format(name),
function=get_browser_details, cs='Detected', function=get_browser_details, cs='Detected',
other_results=other_results, name=name) other_results=other_results, name=name)

View file

@ -23,8 +23,8 @@ def cleanup_adwcleaner():
# Main folder # Main folder
if os.path.exists(source_path): if os.path.exists(source_path):
os.makedirs(global_vars['ProgBackupDir'], exist_ok=True) os.makedirs(global_vars['LogDir'], exist_ok=True)
dest_name = r'{ProgBackupDir}\AdwCleaner_{Date-Time}'.format( dest_name = r'{LogDir}\{Date}\AdwCleaner'.format(
**global_vars) **global_vars)
dest_name = non_clobber_rename(dest_name) dest_name = non_clobber_rename(dest_name)
shutil.move(source_path, dest_name) shutil.move(source_path, dest_name)
@ -68,9 +68,76 @@ def cleanup_cbs(dest_folder):
r'{}\CbsPersist*'.format(temp_folder)] r'{}\CbsPersist*'.format(temp_folder)]
run_program(cmd) run_program(cmd)
def cleanup_d7ii():
"""Sort d7II logs and remove temp items."""
d7_path = r'{}\d7II'.format(global_vars['ClientDir'])
d7_reports = r'{}_Reports'.format(d7_path)
d7_temp = r'{}\Temp'.format(d7_path)
# Logs & Reports
if os.path.exists(d7_reports):
for entry in os.scandir(d7_reports):
r = re.match(r'(\d+)-(\d+)-(\d+)', entry.name)
d7_date = '{}-{:02d}-{:02d}'.format(
r.group(1), int(r.group(2)), int(r.group(3)))
d7_mlogs = r'{}\Malware Logs'.format(entry.path)
log_dest = r'{SYSTEMDRIVE}\{prefix}\Info\{date}'.format(
prefix=KIT_NAME_SHORT,
date=d7_date,
**global_vars['Env'])
# Remove empty folders
for f in ('Malware Logs', 'Screen Shots'):
try:
os.rmdir(r'{}\{}'.format(entry.path, f))
except FileNotFoundError:
pass
except OSError:
pass
# Malware Logs
if os.path.exists(d7_mlogs):
for m_entry in os.scandir(d7_mlogs):
prefix = ''
if m_entry.name == 'MalwareScan_Report.txt':
prefix = 'd7II_'
dest_path = r'{log_dest}\{prefix}{name}'.format(
log_dest=log_dest,
prefix=prefix,
name=m_entry.name)
dest_path = non_clobber_rename(dest_path)
shutil.move(entry.path, dest_path)
try:
os.rmdir(d7_mlogs)
except OSError:
pass
# Other items
for o_entry in os.scandir(entry.path):
dest_path = r'{log_dest}\d7II_{name}'.format(
log_dest=log_dest,
name=m_entry.name)
dest_path = non_clobber_rename(dest_path)
shutil.move(entry.path, dest_path)
# Remove folder if empty
try:
os.rmdir(entry.path)
except OSError:
pass
# Temp items
if os.path.exists(d7_path):
if os.path.exists(d7_temp):
shutil.rmtree(d7_temp)
try:
os.rmdir(d7_path)
except OSError:
pass
def cleanup_desktop(): def cleanup_desktop():
"""Move known backup files and reports into the ClientDir.""" """Move known backup files and reports into the ClientDir."""
dest_folder = r'{ProgBackupDir}\Desktop_{Date-Time}'.format(**global_vars) dest_folder = r'{ProgBackupDir}\{Date}\Desktop'.format(**global_vars)
os.makedirs(dest_folder, exist_ok=True) os.makedirs(dest_folder, exist_ok=True)
desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env']) desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env'])
@ -87,5 +154,49 @@ def cleanup_desktop():
except OSError: except OSError:
pass pass
def cleanup_emsisoft():
"""Remove EmsisoftCmd files from drive root."""
source_path = r'{}\EmsisoftCmd'.format(global_vars['Env']['SYSTEMDRIVE'])
source_quarantine = r'{}\Quarantine'.format(source_path)
# Quarantine
if os.path.exists(source_quarantine):
os.makedirs(global_vars['QuarantineDir'], exist_ok=True)
dest_name = r'{QuarantineDir}\Emsisoft_{Date-Time}'.format(
**global_vars)
dest_name = non_clobber_rename(dest_name)
shutil.move(source_quarantine, dest_name)
# Remove program
if os.path.exists(source_path):
shutil.rmtree(source_path)
def cleanup_regbackups():
"""Move d7ii regbackups into backup folder."""
source_path = r'{}\Support\RegBackups'.format(
global_vars['Env']['SYSTEMDRIVE'])
# Bail early
if not os.path.exists(source_path):
return
# Move to backup folder
for entry in os.scandir(source_path):
os.makedirs(global_vars['ProgBackupDir'], exist_ok=True)
dest_path = r'{ProgBackupDir}\{Date}\Registry\{name}'.format(
name=entry.name,
**global_vars)
dest_path = non_clobber_rename(dest_path)
shutil.move(entry.path, dest_path)
# Delete source folders if empty
try:
os.rmdir(source_path)
os.rmdir(r'{}\Support'.format(global_vars['Env']['SYSTEMDRIVE']))
except OSError:
pass
if __name__ == '__main__': if __name__ == '__main__':
print("This file is not meant to be called directly.") print("This file is not meant to be called directly.")
# vim: sts=4 sw=4 ts=4

View file

@ -162,7 +162,7 @@ def exit_script(return_value=0):
# Open Log (if it exists) # Open Log (if it exists)
log = global_vars.get('LogFile', '') log = global_vars.get('LogFile', '')
if log and os.path.exists(log) and psutil.WINDOWS: if log and os.path.exists(log) and psutil.WINDOWS and ENABLED_OPEN_LOGS:
try: try:
extract_item('NotepadPlusPlus', silent=True) extract_item('NotepadPlusPlus', silent=True)
popen_program( popen_program(

View file

@ -162,7 +162,7 @@ def get_installed_office():
def get_shell_path(folder, user='current'): def get_shell_path(folder, user='current'):
"""Get shell path using SHGetKnownFolderPath via knownpaths, returns str. """Get shell path using SHGetKnownFolderPath via knownpaths, returns str.
NOTE: Only works for the current user. NOTE: Only works for the current user.
Code based on https://gist.github.com/mkropat/7550097 Code based on https://gist.github.com/mkropat/7550097
""" """
@ -175,14 +175,14 @@ def get_shell_path(folder, user='current'):
except AttributeError: except AttributeError:
# Unknown folder ID, ignore and return None # Unknown folder ID, ignore and return None
pass pass
if folderid: if folderid:
try: try:
path = knownpaths.get_path(folderid, getattr(knownpaths.UserHandle, user)) path = knownpaths.get_path(folderid, getattr(knownpaths.UserHandle, user))
except PathNotFoundError: except PathNotFoundError:
# Folder not found, ignore and return None # Folder not found, ignore and return None
pass pass
return path return path
def get_user_data_paths(user): def get_user_data_paths(user):
@ -196,7 +196,7 @@ def get_user_data_paths(user):
'Extra Folders': {}, 'Extra Folders': {},
} }
unload_hive = False unload_hive = False
if user['Name'] == global_vars['Env']['USERNAME']: if user['Name'] == global_vars['Env']['USERNAME']:
# We can use SHGetKnownFolderPath for the current user # We can use SHGetKnownFolderPath for the current user
paths['Profile']['Path'] = get_shell_path('Profile') paths['Profile']['Path'] = get_shell_path('Profile')
@ -212,7 +212,7 @@ def get_user_data_paths(user):
except Exception: except Exception:
# Profile path not found, leaving as None. # Profile path not found, leaving as None.
pass pass
# Shell folders (Prep) # Shell folders (Prep)
if not reg_path_exists(HKU, hive_path) and paths['Profile']['Path']: if not reg_path_exists(HKU, hive_path) and paths['Profile']['Path']:
# User not logged-in, loading hive # User not logged-in, loading hive
@ -226,7 +226,7 @@ def get_user_data_paths(user):
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
# Failed to load user hive # Failed to load user hive
pass pass
# Shell folders # Shell folders
shell_folders = r'{}\{}'.format(hive_path, REG_SHELL_FOLDERS) shell_folders = r'{}\{}'.format(hive_path, REG_SHELL_FOLDERS)
if (reg_path_exists(HKU, hive_path) if (reg_path_exists(HKU, hive_path)
@ -252,7 +252,7 @@ def get_user_data_paths(user):
if (folder not in paths['Shell Folders'] if (folder not in paths['Shell Folders']
and os.path.exists(folder_path)): and os.path.exists(folder_path)):
paths['Shell Folders'][folder] = {'Path': folder_path} paths['Shell Folders'][folder] = {'Path': folder_path}
# Extra folders # Extra folders
if paths['Profile']['Path']: if paths['Profile']['Path']:
for folder in EXTRA_FOLDERS: for folder in EXTRA_FOLDERS:
@ -260,12 +260,12 @@ def get_user_data_paths(user):
folder=folder, **paths['Profile']) folder=folder, **paths['Profile'])
if os.path.exists(folder_path): if os.path.exists(folder_path):
paths['Extra Folders'][folder] = {'Path': folder_path} paths['Extra Folders'][folder] = {'Path': folder_path}
# Shell folders (cleanup) # Shell folders (cleanup)
if unload_hive: if unload_hive:
cmd = ['reg', 'unload', r'HKU\{}'.format(TMP_HIVE_PATH)] cmd = ['reg', 'unload', r'HKU\{}'.format(TMP_HIVE_PATH)]
run_program(cmd, check=False) run_program(cmd, check=False)
# Done # Done
return paths return paths
@ -277,7 +277,7 @@ def get_user_folder_sizes(users):
with winreg.OpenKey(HKCU, with winreg.OpenKey(HKCU,
r'Software\Sysinternals\Du', access=winreg.KEY_WRITE) as key: r'Software\Sysinternals\Du', access=winreg.KEY_WRITE) as key:
winreg.SetValueEx(key, 'EulaAccepted', 0, winreg.REG_DWORD, 1) winreg.SetValueEx(key, 'EulaAccepted', 0, winreg.REG_DWORD, 1)
for u in users: for u in users:
u.update(get_user_data_paths(u)) u.update(get_user_data_paths(u))
if u['Profile']['Path']: if u['Profile']['Path']:
@ -292,7 +292,7 @@ def get_user_folder_sizes(users):
def get_user_list(): def get_user_list():
"""Get user list via WMIC, returns list of dicts.""" """Get user list via WMIC, returns list of dicts."""
users = [] users = []
# Get user info from WMI # Get user info from WMI
cmd = ['wmic', 'useraccount', 'get', '/format:csv'] cmd = ['wmic', 'useraccount', 'get', '/format:csv']
try: try:
@ -300,10 +300,10 @@ def get_user_list():
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
# Meh, return empty list to avoid a full crash # Meh, return empty list to avoid a full crash
return users return users
entries = out.stdout.decode().splitlines() entries = out.stdout.decode().splitlines()
entries = [e.strip().split(',') for e in entries if e.strip()] entries = [e.strip().split(',') for e in entries if e.strip()]
# Add user(s) to dict # Add user(s) to dict
keys = entries[0] keys = entries[0]
for e in entries[1:]: for e in entries[1:]:
@ -314,10 +314,10 @@ def get_user_list():
# Assume SIDs ending with 1000+ are "Standard" and others are "System" # Assume SIDs ending with 1000+ are "Standard" and others are "System"
e['Type'] = 'Standard' if re.search(r'-1\d+$', e['SID']) else 'System' e['Type'] = 'Standard' if re.search(r'-1\d+$', e['SID']) else 'System'
users.append(e) users.append(e)
# Sort list # Sort list
users.sort(key=itemgetter('Name')) users.sort(key=itemgetter('Name'))
# Done # Done
return users return users
@ -368,26 +368,38 @@ def run_aida64():
'/TEXT', '/SILENT', '/SAFEST'] '/TEXT', '/SILENT', '/SAFEST']
run_program(cmd, check=False) run_program(cmd, check=False)
def run_bleachbit(): def run_bleachbit(cleaners=None, preview=True):
"""Run BleachBit preview and save log. """Run BleachBit preview and save log.
This is a preview so no files should be deleted.""" If preview is True then no files should be deleted."""
if not os.path.exists(global_vars['LogDir']+r'\BleachBit.log'): error_path = r'{}\BleachBit.err'.format(global_vars['LogDir'])
extract_item('BleachBit', silent=True) log_path = error_path.replace('err', 'log')
cmd = [global_vars['Tools']['BleachBit'], '--preview', '--preset'] extract_item('BleachBit', silent=True)
out = run_program(cmd, check=False)
# Save stderr # Safety check
if out.stderr.decode().splitlines(): if not cleaners:
with open(global_vars['LogDir']+r'\BleachBit.err', 'a', # Disable cleaning and use preset config
encoding='utf-8') as f: cleaners = ['--preset']
for line in out.stderr.decode().splitlines(): preview = True
f.write(line.strip() + '\n')
# Save stdout # Run
with open(global_vars['LogDir']+r'\BleachBit.log', 'a', cmd = [
encoding='utf-8') as f: global_vars['Tools']['BleachBit'],
for line in out.stdout.decode().splitlines(): '--preview' if preview else '--clean']
cmd.extend(cleaners)
out = run_program(cmd, check=False)
# Save stderr
if out.stderr.decode().splitlines():
with open(error_path, 'a', encoding='utf-8') as f:
for line in out.stderr.decode().splitlines():
f.write(line.strip() + '\n') f.write(line.strip() + '\n')
# Save stdout
with open(log_path, 'a', encoding='utf-8') as f:
for line in out.stdout.decode().splitlines():
f.write(line.strip() + '\n')
def show_disk_usage(disk): def show_disk_usage(disk):
"""Show free and used space for a specified disk.""" """Show free and used space for a specified disk."""
print_standard('{:5}'.format(disk.device.replace('/', ' ')), print_standard('{:5}'.format(disk.device.replace('/', ' ')),

View file

@ -1,6 +1,8 @@
# Wizard Kit: Functions - Setup # Wizard Kit: Functions - Setup
from functions.common import * from functions.common import *
from functions.update import *
from settings.sources import *
# STATIC VARIABLES # STATIC VARIABLES
HKCU = winreg.HKEY_CURRENT_USER HKCU = winreg.HKEY_CURRENT_USER
@ -193,7 +195,7 @@ def write_registry_settings(settings, all_users=False):
if 'WOW64_32' in v: if 'WOW64_32' in v:
access = access | winreg.KEY_WOW64_32KEY access = access | winreg.KEY_WOW64_32KEY
winreg.CreateKeyEx(hive, k, 0, access) winreg.CreateKeyEx(hive, k, 0, access)
# Create values # Create values
with winreg.OpenKeyEx(hive, k, 0, access) as key: with winreg.OpenKeyEx(hive, k, 0, access) as key:
for name, value in v.get('DWORD Items', {}).items(): for name, value in v.get('DWORD Items', {}).items():
@ -250,6 +252,30 @@ def install_classicstart_skin():
os.makedirs(dest_path, exist_ok=True) os.makedirs(dest_path, exist_ok=True)
shutil.copy(source, dest) shutil.copy(source, dest)
def install_eset_nod32_av(scan_pups=True):
"""Install ESET NOD32 AV with custom config."""
extract_item('ESETConfigs', silent=True)
config_file = '{BinDir}\ESETConfigs\{config_file}.xml'.format(
config_file='eset-config' if scan_pups else 'eset-config-no-pup',
**global_vars)
# Download
result = try_and_print(message='Downloading Setup...', cs='Done',
other_results=OTHER_RESULTS, function=download_generic,
out_dir=global_vars['ClientDir'],
out_name='eav_nt64.exe',
source_url=SOURCE_URLS['ESET NOD32'])
if not result['CS']:
raise GenericError('Failed to download ESET NOD32')
# Install
cmd = [r'{ClientDir}\eav_nt64.exe'.format(**global_vars),
'--silent', '--accepteula', '--msi-property',
'PRODUCTTYPE=eav', 'PRODUCT_LANG=1033', 'PRODUCT_LANG_CODE=en-US',
'ADMINCFG="{}"'.format(config_file)]
try_and_print(message='Installing ESET NOD32 AV...',
other_results=OTHER_RESULTS, function=run_program, cmd=cmd)
def install_firefox_extensions(): def install_firefox_extensions():
"""Update registry to install Firefox extensions for all users.""" """Update registry to install Firefox extensions for all users."""
dist_path = r'{PROGRAMFILES}\Mozilla Firefox\distribution\extensions'.format( dist_path = r'{PROGRAMFILES}\Mozilla Firefox\distribution\extensions'.format(
@ -261,7 +287,7 @@ def install_firefox_extensions():
# Update registry # Update registry
write_registry_settings(SETTINGS_MOZILLA_FIREFOX_32, all_users=True) write_registry_settings(SETTINGS_MOZILLA_FIREFOX_32, all_users=True)
write_registry_settings(SETTINGS_MOZILLA_FIREFOX_64, all_users=True) write_registry_settings(SETTINGS_MOZILLA_FIREFOX_64, all_users=True)
# Extract extension(s) to distribution folder # Extract extension(s) to distribution folder
cmd = [ cmd = [
global_vars['Tools']['SevenZip'], 'e', '-aos', '-bso0', '-bse0', global_vars['Tools']['SevenZip'], 'e', '-aos', '-bso0', '-bse0',

View file

@ -28,7 +28,7 @@ def compress_item(item):
wd = os.path.abspath(r'{}\{}'.format(wd, os.path.pardir)) wd = os.path.abspath(r'{}\{}'.format(wd, os.path.pardir))
include_str = item.name include_str = item.name
os.chdir(wd) os.chdir(wd)
# Compress # Compress
cmd = [ cmd = [
global_vars['Tools']['SevenZip'], global_vars['Tools']['SevenZip'],
@ -38,7 +38,7 @@ def compress_item(item):
include_str, include_str,
] ]
run_program(cmd) run_program(cmd)
# Done # Done
os.chdir(prev_dir) os.chdir(prev_dir)
@ -96,7 +96,7 @@ def generate_launcher(section, name, options):
dest = global_vars['BaseDir'] dest = global_vars['BaseDir']
full_path = r'{}\{}.cmd'.format(dest, name) full_path = r'{}\{}.cmd'.format(dest, name)
template = r'{}\Scripts\Launcher_Template.cmd'.format(global_vars['BinDir']) template = r'{}\Scripts\Launcher_Template.cmd'.format(global_vars['BinDir'])
# Format options # Format options
f_options = {} f_options = {}
for opt in options.keys(): for opt in options.keys():
@ -106,7 +106,7 @@ def generate_launcher(section, name, options):
elif re.search(r'^L_\w+', opt, re.IGNORECASE): elif re.search(r'^L_\w+', opt, re.IGNORECASE):
new_opt = 'set {}='.format(opt) new_opt = 'set {}='.format(opt)
f_options[new_opt] = ['set {}={}'.format(opt, options[opt])] f_options[new_opt] = ['set {}={}'.format(opt, options[opt])]
# Read template and update using f_options # Read template and update using f_options
out_text = [] out_text = []
with open(template, 'r') as f: with open(template, 'r') as f:
@ -118,7 +118,7 @@ def generate_launcher(section, name, options):
out_text.extend(f_options[line]) out_text.extend(f_options[line])
else: else:
out_text.append(line) out_text.append(line)
# Write file # Write file
os.makedirs(dest, exist_ok=True) os.makedirs(dest, exist_ok=True)
with open(full_path, 'w') as f: with open(full_path, 'w') as f:
@ -172,7 +172,7 @@ def scan_for_net_installers(server, family_name, min_year):
"""Scan network shares for installers.""" """Scan network shares for installers."""
if not server['Mounted']: if not server['Mounted']:
mount_network_share(server) mount_network_share(server)
if server['Mounted']: if server['Mounted']:
for year in os.scandir(r'\\{IP}\{Share}'.format(**server)): for year in os.scandir(r'\\{IP}\{Share}'.format(**server)):
try: try:
@ -204,13 +204,13 @@ def update_testdisk():
for exe in ['fidentify_win.exe', 'photorec_win.exe', for exe in ['fidentify_win.exe', 'photorec_win.exe',
'qphotorec_win.exe', 'testdisk_win.exe']: 'qphotorec_win.exe', 'testdisk_win.exe']:
kill_process(exe) kill_process(exe)
# Remove existing folders # Remove existing folders
remove_from_kit('TestDisk') remove_from_kit('TestDisk')
# Download # Download
download_to_temp('testdisk_wip.zip', SOURCE_URLS['TestDisk']) download_to_temp('testdisk_wip.zip', SOURCE_URLS['TestDisk'])
# Extract files # Extract files
extract_temp_to_cbin('testdisk_wip.zip', 'TestDisk') extract_temp_to_cbin('testdisk_wip.zip', 'TestDisk')
dest = r'{}\TestDisk'.format(global_vars['CBinDir']) dest = r'{}\TestDisk'.format(global_vars['CBinDir'])
@ -220,7 +220,7 @@ def update_testdisk():
shutil.move(item.path, dest_item) shutil.move(item.path, dest_item)
shutil.rmtree( shutil.rmtree(
r'{}\TestDisk\testdisk-7.1-WIP'.format(global_vars['CBinDir'])) r'{}\TestDisk\testdisk-7.1-WIP'.format(global_vars['CBinDir']))
# Cleanup # Cleanup
remove_from_temp('testdisk_wip.zip') remove_from_temp('testdisk_wip.zip')
@ -230,10 +230,10 @@ def update_fastcopy():
# Stop running processes # Stop running processes
for process in ['FastCopy.exe', 'FastCopy64.exe']: for process in ['FastCopy.exe', 'FastCopy64.exe']:
kill_process(process) kill_process(process)
# Remove existing folders # Remove existing folders
remove_from_kit('FastCopy') remove_from_kit('FastCopy')
# Download # Download
download_to_temp('FastCopy.zip', SOURCE_URLS['FastCopy']) download_to_temp('FastCopy.zip', SOURCE_URLS['FastCopy'])
@ -267,14 +267,14 @@ def update_fastcopy():
def update_wimlib(): def update_wimlib():
# Stop running processes # Stop running processes
kill_process('wimlib-imagex.exe') kill_process('wimlib-imagex.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('wimlib') remove_from_kit('wimlib')
# Download # Download
download_to_temp('wimlib32.zip', SOURCE_URLS['wimlib32']) download_to_temp('wimlib32.zip', SOURCE_URLS['wimlib32'])
download_to_temp('wimlib64.zip', SOURCE_URLS['wimlib64']) download_to_temp('wimlib64.zip', SOURCE_URLS['wimlib64'])
# Extract # Extract
extract_generic( extract_generic(
r'{}\wimlib32.zip'.format(global_vars['TmpDir']), r'{}\wimlib32.zip'.format(global_vars['TmpDir']),
@ -282,7 +282,7 @@ def update_wimlib():
extract_generic( extract_generic(
r'{}\wimlib64.zip'.format(global_vars['TmpDir']), r'{}\wimlib64.zip'.format(global_vars['TmpDir']),
r'{}\wimlib\x64'.format(global_vars['CBinDir'])) r'{}\wimlib\x64'.format(global_vars['CBinDir']))
# Cleanup # Cleanup
remove_from_temp('wimlib32.zip') remove_from_temp('wimlib32.zip')
remove_from_temp('wimlib64.zip') remove_from_temp('wimlib64.zip')
@ -290,16 +290,16 @@ def update_wimlib():
def update_xyplorer(): def update_xyplorer():
# Stop running processes # Stop running processes
kill_process('XYplorerFree.exe') kill_process('XYplorerFree.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('XYplorerFree') remove_from_kit('XYplorerFree')
# Download # Download
download_to_temp('xyplorer_free.zip', SOURCE_URLS['XYplorerFree']) download_to_temp('xyplorer_free.zip', SOURCE_URLS['XYplorerFree'])
# Extract files # Extract files
extract_temp_to_cbin('xyplorer_free.zip', 'XYplorerFree') extract_temp_to_cbin('xyplorer_free.zip', 'XYplorerFree')
# Cleanup # Cleanup
remove_from_temp('xyplorer_free.zip') remove_from_temp('xyplorer_free.zip')
@ -307,16 +307,16 @@ def update_xyplorer():
def update_aida64(): def update_aida64():
# Stop running processes # Stop running processes
kill_process('notepadplusplus.exe') kill_process('notepadplusplus.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('AIDA64') remove_from_kit('AIDA64')
# Download # Download
download_to_temp('aida64.zip', SOURCE_URLS['AIDA64']) download_to_temp('aida64.zip', SOURCE_URLS['AIDA64'])
# Extract files # Extract files
extract_temp_to_cbin('aida64.zip', 'AIDA64') extract_temp_to_cbin('aida64.zip', 'AIDA64')
# Cleanup # Cleanup
remove_from_temp('aida64.zip') remove_from_temp('aida64.zip')
@ -324,37 +324,37 @@ def update_autoruns():
# Stop running processes # Stop running processes
kill_process('Autoruns.exe') kill_process('Autoruns.exe')
kill_process('Autoruns64.exe') kill_process('Autoruns64.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('Autoruns') remove_from_kit('Autoruns')
# Download # Download
download_to_temp('Autoruns.zip', SOURCE_URLS['Autoruns']) download_to_temp('Autoruns.zip', SOURCE_URLS['Autoruns'])
# Extract files # Extract files
extract_temp_to_cbin('Autoruns.zip', 'Autoruns') extract_temp_to_cbin('Autoruns.zip', 'Autoruns')
# Cleanup # Cleanup
remove_from_temp('Autoruns.zip') remove_from_temp('Autoruns.zip')
def update_bleachbit(): def update_bleachbit():
# Stop running processes # Stop running processes
kill_process('bleachbit.exe') kill_process('bleachbit.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('BleachBit') remove_from_kit('BleachBit')
# Download # Download
download_to_temp('bleachbit.zip', SOURCE_URLS['BleachBit']) download_to_temp('bleachbit.zip', SOURCE_URLS['BleachBit'])
download_to_temp('Winapp2.zip', SOURCE_URLS['Winapp2']) download_to_temp('Winapp2.zip', SOURCE_URLS['Winapp2'])
# Extract files # Extract files
extract_temp_to_cbin('bleachbit.zip', 'BleachBit') extract_temp_to_cbin('bleachbit.zip', 'BleachBit')
extract_generic( extract_generic(
r'{}\Winapp2.zip'.format(global_vars['TmpDir']), r'{}\Winapp2.zip'.format(global_vars['TmpDir']),
r'{}\BleachBit\cleaners'.format(global_vars['CBinDir']), r'{}\BleachBit\cleaners'.format(global_vars['CBinDir']),
mode='e', sz_args=[r'Winapp2-master\Non-CCleaner\Winapp2.ini']) mode='e', sz_args=[r'Winapp2-master\Non-CCleaner\Winapp2.ini'])
# Move files into place # Move files into place
dest = r'{}\BleachBit'.format(global_vars['CBinDir']) dest = r'{}\BleachBit'.format(global_vars['CBinDir'])
for item in os.scandir(r'{}\BleachBit-Portable'.format(dest)): for item in os.scandir(r'{}\BleachBit-Portable'.format(dest)):
@ -363,7 +363,7 @@ def update_bleachbit():
shutil.move(item.path, dest_item) shutil.move(item.path, dest_item)
shutil.rmtree( shutil.rmtree(
r'{}\BleachBit\BleachBit-Portable'.format(global_vars['CBinDir'])) r'{}\BleachBit\BleachBit-Portable'.format(global_vars['CBinDir']))
# Cleanup # Cleanup
remove_from_temp('bleachbit.zip') remove_from_temp('bleachbit.zip')
remove_from_temp('Winapp2.zip') remove_from_temp('Winapp2.zip')
@ -372,21 +372,21 @@ def update_bluescreenview():
# Stop running processes # Stop running processes
for exe in ['BlueScreenView.exe', 'BlueScreenView64.exe']: for exe in ['BlueScreenView.exe', 'BlueScreenView64.exe']:
kill_process(exe) kill_process(exe)
# Remove existing folders # Remove existing folders
remove_from_kit('BlueScreenView') remove_from_kit('BlueScreenView')
# Download # Download
download_to_temp('bluescreenview32.zip', SOURCE_URLS['BlueScreenView32']) download_to_temp('bluescreenview32.zip', SOURCE_URLS['BlueScreenView32'])
download_to_temp('bluescreenview64.zip', SOURCE_URLS['BlueScreenView64']) download_to_temp('bluescreenview64.zip', SOURCE_URLS['BlueScreenView64'])
# Extract files # Extract files
extract_temp_to_cbin('bluescreenview64.zip', 'BlueScreenView', sz_args=['BlueScreenView.exe']) extract_temp_to_cbin('bluescreenview64.zip', 'BlueScreenView', sz_args=['BlueScreenView.exe'])
shutil.move( shutil.move(
r'{}\BlueScreenView\BlueScreenView.exe'.format(global_vars['CBinDir']), r'{}\BlueScreenView\BlueScreenView.exe'.format(global_vars['CBinDir']),
r'{}\BlueScreenView\BlueScreenView64.exe'.format(global_vars['CBinDir'])) r'{}\BlueScreenView\BlueScreenView64.exe'.format(global_vars['CBinDir']))
extract_temp_to_cbin('bluescreenview32.zip', 'BlueScreenView') extract_temp_to_cbin('bluescreenview32.zip', 'BlueScreenView')
# Cleanup # Cleanup
remove_from_temp('bluescreenview32.zip') remove_from_temp('bluescreenview32.zip')
remove_from_temp('bluescreenview64.zip') remove_from_temp('bluescreenview64.zip')
@ -394,16 +394,16 @@ def update_bluescreenview():
def update_erunt(): def update_erunt():
# Stop running processes # Stop running processes
kill_process('ERUNT.EXE') kill_process('ERUNT.EXE')
# Remove existing folders # Remove existing folders
remove_from_kit('ERUNT') remove_from_kit('ERUNT')
# Download # Download
download_to_temp('erunt.zip', SOURCE_URLS['ERUNT']) download_to_temp('erunt.zip', SOURCE_URLS['ERUNT'])
# Extract files # Extract files
extract_temp_to_cbin('erunt.zip', 'ERUNT') extract_temp_to_cbin('erunt.zip', 'ERUNT')
# Cleanup # Cleanup
remove_from_temp('erunt.zip') remove_from_temp('erunt.zip')
@ -411,10 +411,10 @@ def update_hitmanpro():
# Stop running processes # Stop running processes
for exe in ['HitmanPro.exe', 'HitmanPro64.exe']: for exe in ['HitmanPro.exe', 'HitmanPro64.exe']:
kill_process(exe) kill_process(exe)
# Remove existing folders # Remove existing folders
remove_from_kit('HitmanPro') remove_from_kit('HitmanPro')
# Download # Download
dest = r'{}\HitmanPro'.format(global_vars['CBinDir']) dest = r'{}\HitmanPro'.format(global_vars['CBinDir'])
download_generic(dest, 'HitmanPro.exe', SOURCE_URLS['HitmanPro32']) download_generic(dest, 'HitmanPro.exe', SOURCE_URLS['HitmanPro32'])
@ -425,13 +425,13 @@ def update_hwinfo():
# Stop running processes # Stop running processes
for exe in ['HWiNFO32.exe', 'HWiNFO64.exe']: for exe in ['HWiNFO32.exe', 'HWiNFO64.exe']:
kill_process(exe) kill_process(exe)
# Download # Download
download_to_temp('HWiNFO.zip', SOURCE_URLS['HWiNFO']) download_to_temp('HWiNFO.zip', SOURCE_URLS['HWiNFO'])
# Extract files # Extract files
extract_temp_to_bin('HWiNFO.zip', 'HWiNFO') extract_temp_to_bin('HWiNFO.zip', 'HWiNFO')
# Cleanup # Cleanup
remove_from_temp('HWiNFO.zip') remove_from_temp('HWiNFO.zip')
@ -439,21 +439,21 @@ def update_produkey():
# Stop running processes # Stop running processes
for exe in ['ProduKey.exe', 'ProduKey64.exe']: for exe in ['ProduKey.exe', 'ProduKey64.exe']:
kill_process(exe) kill_process(exe)
# Remove existing folders # Remove existing folders
remove_from_kit('ProduKey') remove_from_kit('ProduKey')
# Download # Download
download_to_temp('produkey32.zip', SOURCE_URLS['ProduKey32']) download_to_temp('produkey32.zip', SOURCE_URLS['ProduKey32'])
download_to_temp('produkey64.zip', SOURCE_URLS['ProduKey64']) download_to_temp('produkey64.zip', SOURCE_URLS['ProduKey64'])
# Extract files # Extract files
extract_temp_to_cbin('produkey64.zip', 'ProduKey', sz_args=['ProduKey.exe']) extract_temp_to_cbin('produkey64.zip', 'ProduKey', sz_args=['ProduKey.exe'])
shutil.move( shutil.move(
r'{}\ProduKey\ProduKey.exe'.format(global_vars['CBinDir']), r'{}\ProduKey\ProduKey.exe'.format(global_vars['CBinDir']),
r'{}\ProduKey\ProduKey64.exe'.format(global_vars['CBinDir'])) r'{}\ProduKey\ProduKey64.exe'.format(global_vars['CBinDir']))
extract_temp_to_cbin('produkey32.zip', 'ProduKey') extract_temp_to_cbin('produkey32.zip', 'ProduKey')
# Cleanup # Cleanup
remove_from_temp('produkey32.zip') remove_from_temp('produkey32.zip')
remove_from_temp('produkey64.zip') remove_from_temp('produkey64.zip')
@ -462,14 +462,14 @@ def update_produkey():
def update_intel_rst(): def update_intel_rst():
# Remove existing folders # Remove existing folders
remove_from_kit('Intel RST') remove_from_kit('Intel RST')
# Prep # Prep
dest = r'{}\_Drivers\Intel RST'.format(global_vars['CBinDir']) dest = r'{}\_Drivers\Intel RST'.format(global_vars['CBinDir'])
include_path = r'{}\_include\_Drivers\Intel RST'.format( include_path = r'{}\_include\_Drivers\Intel RST'.format(
global_vars['CBinDir']) global_vars['CBinDir'])
if os.path.exists(include_path): if os.path.exists(include_path):
shutil.copytree(include_path, dest) shutil.copytree(include_path, dest)
# Download # Download
for name, url in RST_SOURCES.items(): for name, url in RST_SOURCES.items():
download_generic(dest, name, url) download_generic(dest, name, url)
@ -477,7 +477,7 @@ def update_intel_rst():
def update_intel_ssd_toolbox(): def update_intel_ssd_toolbox():
# Remove existing folders # Remove existing folders
remove_from_kit('Intel SSD Toolbox.exe') remove_from_kit('Intel SSD Toolbox.exe')
# Download # Download
download_generic( download_generic(
r'{}\_Drivers\Intel SSD Toolbox'.format(global_vars['CBinDir']), r'{}\_Drivers\Intel SSD Toolbox'.format(global_vars['CBinDir']),
@ -487,7 +487,7 @@ def update_intel_ssd_toolbox():
def update_samsung_magician(): def update_samsung_magician():
# Remove existing folders # Remove existing folders
remove_from_kit('Samsung Magician.exe') remove_from_kit('Samsung Magician.exe')
# Download # Download
download_to_temp('Samsung Magician.zip', SOURCE_URLS['Samsung Magician']) download_to_temp('Samsung Magician.zip', SOURCE_URLS['Samsung Magician'])
@ -509,7 +509,7 @@ def update_sdi_origin():
aria_dest = r'{}\aria2'.format(global_vars['TmpDir']) aria_dest = r'{}\aria2'.format(global_vars['TmpDir'])
aria = r'{}\aria2c.exe'.format(aria_dest) aria = r'{}\aria2c.exe'.format(aria_dest)
extract_generic(aria_source, aria_dest, mode='e') extract_generic(aria_source, aria_dest, mode='e')
# Prep for torrent download # Prep for torrent download
download_to_temp('sdio.torrent', SOURCE_URLS['SDIO Torrent']) download_to_temp('sdio.torrent', SOURCE_URLS['SDIO Torrent'])
sdio_torrent = r'{}\sdio.torrent'.format(global_vars['TmpDir']) sdio_torrent = r'{}\sdio.torrent'.format(global_vars['TmpDir'])
@ -520,7 +520,7 @@ def update_sdi_origin():
if r and not re.search(r'(\.(bat|inf)|Video|Server|Printer|XP)', line, re.IGNORECASE): if r and not re.search(r'(\.(bat|inf)|Video|Server|Printer|XP)', line, re.IGNORECASE):
indexes.append(int(r.group(1))) indexes.append(int(r.group(1)))
indexes = [str(i) for i in sorted(indexes)] indexes = [str(i) for i in sorted(indexes)]
# Download SDI Origin # Download SDI Origin
cmd = [ cmd = [
aria, aria,
@ -533,13 +533,13 @@ def update_sdi_origin():
run_program(cmd, pipe=False, check=False, shell=True) run_program(cmd, pipe=False, check=False, shell=True)
sleep(1) sleep(1)
wait_for_process('aria2c') wait_for_process('aria2c')
# Download SDI Origin extra themes # Download SDI Origin extra themes
download_to_temp('sdio_themes.zip', SOURCE_URLS['SDIO Themes']) download_to_temp('sdio_themes.zip', SOURCE_URLS['SDIO Themes'])
theme_source = r'{}\sdio_themes.zip'.format(global_vars['TmpDir']) theme_source = r'{}\sdio_themes.zip'.format(global_vars['TmpDir'])
theme_dest = r'{}\SDIO_Update\tools\SDI\themes'.format(aria_dest) theme_dest = r'{}\SDIO_Update\tools\SDI\themes'.format(aria_dest)
extract_generic(theme_source, theme_dest) extract_generic(theme_source, theme_dest)
# Move files into place # Move files into place
for item in os.scandir(r'{}\SDIO_Update'.format(aria_dest)): for item in os.scandir(r'{}\SDIO_Update'.format(aria_dest)):
dest_item = '{}\_Drivers\SDIO\{}'.format( dest_item = '{}\_Drivers\SDIO\{}'.format(
@ -551,7 +551,7 @@ def update_sdi_origin():
if (not os.path.exists(dest_item) if (not os.path.exists(dest_item)
and not re.search(r'\.(inf|bat)$', item.name, re.IGNORECASE)): and not re.search(r'\.(inf|bat)$', item.name, re.IGNORECASE)):
shutil.move(item.path, dest_item) shutil.move(item.path, dest_item)
# Cleanup # Cleanup
remove_from_temp('aria2') remove_from_temp('aria2')
remove_from_temp('aria2.zip') remove_from_temp('aria2.zip')
@ -563,21 +563,28 @@ def update_adobe_reader_dc():
# Prep # Prep
dest = r'{}\Installers\Extras\Office'.format( dest = r'{}\Installers\Extras\Office'.format(
global_vars['BaseDir']) global_vars['BaseDir'])
# Remove existing installer # Remove existing installer
try: try:
os.remove(r'{}\Adobe Reader DC.exe'.format(dest)) os.remove(r'{}\Adobe Reader DC.exe'.format(dest))
except FileNotFoundError: except FileNotFoundError:
pass pass
# Download # Download
download_generic( download_generic(
dest, 'Adobe Reader DC.exe', SOURCE_URLS['Adobe Reader DC']) dest, 'Adobe Reader DC.exe', SOURCE_URLS['Adobe Reader DC'])
def update_eset_config():
"""Copy config files to .cbin before compress_item"""
dest = r'{}\ESETConfigs'.format(global_vars['cbindir'])
include_path = r'{}\_include\ESETConfigs'.format(global_vars['CBinDir'])
if os.path.exists(include_path):
shutil.copytree(include_path, dest)
def update_office(): def update_office():
# Remove existing folders # Remove existing folders
remove_from_kit('_Office') remove_from_kit('_Office')
# Prep # Prep
dest = r'{}\_Office'.format(global_vars['CBinDir']) dest = r'{}\_Office'.format(global_vars['CBinDir'])
include_path = r'{}\_include\_Office'.format(global_vars['CBinDir']) include_path = r'{}\_include\_Office'.format(global_vars['CBinDir'])
@ -605,7 +612,7 @@ def update_office():
def update_classic_start_skin(): def update_classic_start_skin():
# Remove existing folders # Remove existing folders
remove_from_kit('ClassicStartSkin') remove_from_kit('ClassicStartSkin')
# Download # Download
download_generic( download_generic(
r'{}\ClassicStartSkin'.format(global_vars['CBinDir']), r'{}\ClassicStartSkin'.format(global_vars['CBinDir']),
@ -615,13 +622,13 @@ def update_classic_start_skin():
def update_vcredists(): def update_vcredists():
# Remove existing folders # Remove existing folders
remove_from_kit('_vcredists') remove_from_kit('_vcredists')
# Prep # Prep
dest = r'{}\_vcredists'.format(global_vars['CBinDir']) dest = r'{}\_vcredists'.format(global_vars['CBinDir'])
include_path = r'{}\_include\_vcredists'.format(global_vars['CBinDir']) include_path = r'{}\_include\_vcredists'.format(global_vars['CBinDir'])
if os.path.exists(include_path): if os.path.exists(include_path):
shutil.copytree(include_path, dest) shutil.copytree(include_path, dest)
# Download # Download
for year in VCREDIST_SOURCES.keys(): for year in VCREDIST_SOURCES.keys():
for bit in ['32', '64']: for bit in ['32', '64']:
@ -635,10 +642,10 @@ def update_vcredists():
def update_one_ninite(section, dest, name, url, indent=8, width=40): def update_one_ninite(section, dest, name, url, indent=8, width=40):
# Prep # Prep
url = 'https://ninite.com/{}/ninite.exe'.format(url) url = 'https://ninite.com/{}/ninite.exe'.format(url)
# Download # Download
download_generic(out_dir=dest, out_name=name, source_url=url) download_generic(out_dir=dest, out_name=name, source_url=url)
# Copy to Installers folder # Copy to Installers folder
installer_parent = r'{}\Installers\Extras\{}'.format( installer_parent = r'{}\Installers\Extras\{}'.format(
global_vars['BaseDir'], section) global_vars['BaseDir'], section)
@ -662,16 +669,16 @@ def update_all_ninite(indent=8, width=40, other_results={}):
def update_caffeine(): def update_caffeine():
# Stop running processes # Stop running processes
kill_process('caffeine.exe') kill_process('caffeine.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('Caffeine') remove_from_kit('Caffeine')
# Download # Download
download_to_temp('caffeine.zip', SOURCE_URLS['Caffeine']) download_to_temp('caffeine.zip', SOURCE_URLS['Caffeine'])
# Extract files # Extract files
extract_temp_to_cbin('caffeine.zip', 'Caffeine') extract_temp_to_cbin('caffeine.zip', 'Caffeine')
# Cleanup # Cleanup
remove_from_temp('caffeine.zip') remove_from_temp('caffeine.zip')
@ -679,16 +686,16 @@ def update_du():
# Stop running processes # Stop running processes
kill_process('du.exe') kill_process('du.exe')
kill_process('du64.exe') kill_process('du64.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('Du') remove_from_kit('Du')
# Download # Download
download_to_temp('du.zip', SOURCE_URLS['Du']) download_to_temp('du.zip', SOURCE_URLS['Du'])
# Extract files # Extract files
extract_temp_to_cbin('du.zip', 'Du') extract_temp_to_cbin('du.zip', 'Du')
# Cleanup # Cleanup
remove_from_temp('du.zip') remove_from_temp('du.zip')
@ -696,21 +703,21 @@ def update_everything():
# Stop running processes # Stop running processes
for exe in ['Everything.exe', 'Everything64.exe']: for exe in ['Everything.exe', 'Everything64.exe']:
kill_process(exe) kill_process(exe)
# Remove existing folders # Remove existing folders
remove_from_kit('Everything') remove_from_kit('Everything')
# Download # Download
download_to_temp('everything32.zip', SOURCE_URLS['Everything32']) download_to_temp('everything32.zip', SOURCE_URLS['Everything32'])
download_to_temp('everything64.zip', SOURCE_URLS['Everything64']) download_to_temp('everything64.zip', SOURCE_URLS['Everything64'])
# Extract files # Extract files
extract_temp_to_cbin('everything64.zip', 'Everything', sz_args=['Everything.exe']) extract_temp_to_cbin('everything64.zip', 'Everything', sz_args=['Everything.exe'])
shutil.move( shutil.move(
r'{}\Everything\Everything.exe'.format(global_vars['CBinDir']), r'{}\Everything\Everything.exe'.format(global_vars['CBinDir']),
r'{}\Everything\Everything64.exe'.format(global_vars['CBinDir'])) r'{}\Everything\Everything64.exe'.format(global_vars['CBinDir']))
extract_temp_to_cbin('everything32.zip', 'Everything') extract_temp_to_cbin('everything32.zip', 'Everything')
# Cleanup # Cleanup
remove_from_temp('everything32.zip') remove_from_temp('everything32.zip')
remove_from_temp('everything64.zip') remove_from_temp('everything64.zip')
@ -718,7 +725,7 @@ def update_everything():
def update_firefox_ublock_origin(): def update_firefox_ublock_origin():
# Remove existing folders # Remove existing folders
remove_from_kit('FirefoxExtensions') remove_from_kit('FirefoxExtensions')
# Download # Download
download_generic( download_generic(
r'{}\FirefoxExtensions'.format(global_vars['CBinDir']), r'{}\FirefoxExtensions'.format(global_vars['CBinDir']),
@ -728,36 +735,36 @@ def update_firefox_ublock_origin():
def update_notepadplusplus(): def update_notepadplusplus():
# Stop running processes # Stop running processes
kill_process('notepadplusplus.exe') kill_process('notepadplusplus.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('NotepadPlusPlus') remove_from_kit('NotepadPlusPlus')
# Download # Download
download_to_temp('npp.7z', SOURCE_URLS['NotepadPlusPlus']) download_to_temp('npp.7z', SOURCE_URLS['NotepadPlusPlus'])
# Extract files # Extract files
extract_temp_to_cbin('npp.7z', 'NotepadPlusPlus') extract_temp_to_cbin('npp.7z', 'NotepadPlusPlus')
shutil.move( shutil.move(
r'{}\NotepadPlusPlus\notepad++.exe'.format(global_vars['CBinDir']), r'{}\NotepadPlusPlus\notepad++.exe'.format(global_vars['CBinDir']),
r'{}\NotepadPlusPlus\notepadplusplus.exe'.format(global_vars['CBinDir']) r'{}\NotepadPlusPlus\notepadplusplus.exe'.format(global_vars['CBinDir'])
) )
# Cleanup # Cleanup
remove_from_temp('npp.7z') remove_from_temp('npp.7z')
def update_putty(): def update_putty():
# Stop running processes # Stop running processes
kill_process('PUTTY.EXE') kill_process('PUTTY.EXE')
# Remove existing folders # Remove existing folders
remove_from_kit('PuTTY') remove_from_kit('PuTTY')
# Download # Download
download_to_temp('putty.zip', SOURCE_URLS['PuTTY']) download_to_temp('putty.zip', SOURCE_URLS['PuTTY'])
# Extract files # Extract files
extract_temp_to_cbin('putty.zip', 'PuTTY') extract_temp_to_cbin('putty.zip', 'PuTTY')
# Cleanup # Cleanup
remove_from_temp('putty.zip') remove_from_temp('putty.zip')
@ -765,34 +772,34 @@ def update_wiztree():
# Stop running processes # Stop running processes
for process in ['WizTree.exe', 'WizTree64.exe']: for process in ['WizTree.exe', 'WizTree64.exe']:
kill_process(process) kill_process(process)
# Remove existing folders # Remove existing folders
remove_from_kit('WizTree') remove_from_kit('WizTree')
# Download # Download
download_to_temp( download_to_temp(
'wiztree.zip', SOURCE_URLS['WizTree']) 'wiztree.zip', SOURCE_URLS['WizTree'])
# Extract files # Extract files
extract_temp_to_cbin('wiztree.zip', 'WizTree') extract_temp_to_cbin('wiztree.zip', 'WizTree')
# Cleanup # Cleanup
remove_from_temp('wiztree.zip') remove_from_temp('wiztree.zip')
def update_xmplay(): def update_xmplay():
# Stop running processes # Stop running processes
kill_process('xmplay.exe') kill_process('xmplay.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('XMPlay') remove_from_kit('XMPlay')
# Download # Download
download_to_temp('xmplay.zip', SOURCE_URLS['XMPlay']) download_to_temp('xmplay.zip', SOURCE_URLS['XMPlay'])
download_to_temp('xmp-7z.zip', SOURCE_URLS['XMPlay 7z']) download_to_temp('xmp-7z.zip', SOURCE_URLS['XMPlay 7z'])
download_to_temp('xmp-gme.zip', SOURCE_URLS['XMPlay Game']) download_to_temp('xmp-gme.zip', SOURCE_URLS['XMPlay Game'])
download_to_temp('xmp-rar.zip', SOURCE_URLS['XMPlay RAR']) download_to_temp('xmp-rar.zip', SOURCE_URLS['XMPlay RAR'])
download_to_temp('WAModern.zip', SOURCE_URLS['XMPlay WAModern']) download_to_temp('WAModern.zip', SOURCE_URLS['XMPlay WAModern'])
# Extract files # Extract files
extract_temp_to_cbin('xmplay.zip', 'XMPlay', extract_temp_to_cbin('xmplay.zip', 'XMPlay',
mode='e', sz_args=['xmplay.exe', 'xmplay.txt']) mode='e', sz_args=['xmplay.exe', 'xmplay.txt'])
@ -804,7 +811,7 @@ def update_xmplay():
r'{}\{}.zip'.format(global_vars['TmpDir'], item), r'{}\{}.zip'.format(global_vars['TmpDir'], item),
r'{}\XMPlay\plugins'.format(global_vars['CBinDir']), r'{}\XMPlay\plugins'.format(global_vars['CBinDir']),
mode='e', sz_args=filter) mode='e', sz_args=filter)
# Download Music # Download Music
dest = r'{}\XMPlay\music_tmp\MOD'.format(global_vars['CBinDir']) dest = r'{}\XMPlay\music_tmp\MOD'.format(global_vars['CBinDir'])
for mod in MUSIC_MOD: for mod in MUSIC_MOD:
@ -816,7 +823,7 @@ def update_xmplay():
name = '{}.rsn'.format(game) name = '{}.rsn'.format(game)
url = 'http://snesmusic.org/v2/download.php?spcNow={}'.format(game) url = 'http://snesmusic.org/v2/download.php?spcNow={}'.format(game)
download_generic(dest, name, url) download_generic(dest, name, url)
# Compress Music # Compress Music
cmd = [ cmd = [
global_vars['Tools']['SevenZip'], global_vars['Tools']['SevenZip'],
@ -825,7 +832,7 @@ def update_xmplay():
r'{}\XMPlay\music_tmp\*'.format(global_vars['CBinDir']), r'{}\XMPlay\music_tmp\*'.format(global_vars['CBinDir']),
] ]
run_program(cmd) run_program(cmd)
# Cleanup # Cleanup
remove_item(r'{}\XMPlay\music_tmp'.format(global_vars['CBinDir'])) remove_item(r'{}\XMPlay\music_tmp'.format(global_vars['CBinDir']))
remove_from_temp('xmplay.zip') remove_from_temp('xmplay.zip')
@ -838,10 +845,10 @@ def update_xmplay():
def update_adwcleaner(): def update_adwcleaner():
# Stop running processes # Stop running processes
kill_process('AdwCleaner.exe') kill_process('AdwCleaner.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('AdwCleaner') remove_from_kit('AdwCleaner')
# Download # Download
download_generic( download_generic(
r'{}\AdwCleaner'.format(global_vars['CBinDir']), r'{}\AdwCleaner'.format(global_vars['CBinDir']),
@ -851,10 +858,10 @@ def update_adwcleaner():
def update_kvrt(): def update_kvrt():
# Stop running processes # Stop running processes
kill_process('KVRT.exe') kill_process('KVRT.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('KVRT') remove_from_kit('KVRT')
# Download # Download
download_generic( download_generic(
r'{}\KVRT'.format(global_vars['CBinDir']), r'{}\KVRT'.format(global_vars['CBinDir']),
@ -864,10 +871,10 @@ def update_kvrt():
def update_rkill(): def update_rkill():
# Stop running processes # Stop running processes
kill_process('RKill.exe') kill_process('RKill.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('RKill') remove_from_kit('RKill')
# Download # Download
url = resolve_dynamic_url( url = resolve_dynamic_url(
SOURCE_URLS['RKill'], SOURCE_URLS['RKill'],
@ -878,36 +885,59 @@ def update_rkill():
def update_tdsskiller(): def update_tdsskiller():
# Stop running processes # Stop running processes
kill_process('TDSSKiller.exe') kill_process('TDSSKiller.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('TDSSKiller') remove_from_kit('TDSSKiller')
# Download # Download
download_generic( download_generic(
r'{}\TDSSKiller'.format(global_vars['CBinDir']), r'{}\TDSSKiller'.format(global_vars['CBinDir']),
'TDSSKiller.exe', 'TDSSKiller.exe',
SOURCE_URLS['TDSSKiller']) SOURCE_URLS['TDSSKiller'])
def update_winaiorepair():
# Stop running processes
kill_process('Repair_Windows.exe')
# Remove existing folders
remove_from_kit('WinAIO Repair')
# Download
download_to_temp('winaio.zip', SOURCE_URLS['WinAIO Repair'])
# Extract
extract_temp_to_cbin('winaio.zip', 'WinAIO Repair')
dest = r'{}\WinAIO Repair'.format(global_vars['CBinDir'])
for item in os.scandir(r'{}\Tweaking.com - Windows Repair'.format(dest)):
dest_item = '{}\{}'.format(dest, item.name)
if not os.path.exists(dest_item):
shutil.move(item.path, dest_item)
shutil.rmtree(
r'{}\WinAIO Repair\Tweaking.com - Windows Repair'.format(global_vars['CBinDir']))
# Cleanup
remove_from_temp('winaio.zip')
## Uninstallers ## ## Uninstallers ##
def update_iobit_uninstaller(): def update_iobit_uninstaller():
# Stop running processes # Stop running processes
kill_process('IObitUninstallerPortable.exe') kill_process('IObitUninstallerPortable.exe')
# Remove existing folders # Remove existing folders
remove_from_kit('IObitUninstallerPortable') remove_from_kit('IObitUninstallerPortable')
# Download # Download
download_generic( download_generic(
global_vars['CBinDir'], global_vars['CBinDir'],
'IObitUninstallerPortable.exe', 'IObitUninstallerPortable.exe',
SOURCE_URLS['IOBit_Uninstaller']) SOURCE_URLS['IOBit_Uninstaller'])
# "Install" # "Install"
cmd = r'{}\IObitUninstallerPortable.exe'.format(global_vars['CBinDir']) cmd = r'{}\IObitUninstallerPortable.exe'.format(global_vars['CBinDir'])
popen_program(cmd) popen_program(cmd)
sleep(1) sleep(1)
wait_for_process('IObitUninstallerPortable') wait_for_process('IObitUninstallerPortable')
# Cleanup # Cleanup
remove_from_kit('IObitUninstallerPortable.exe') remove_from_kit('IObitUninstallerPortable.exe')

View file

@ -0,0 +1,26 @@
# Wizard Kit: Install ESET NOD32 AV
import os
import sys
# Init
os.chdir(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(os.getcwd())
from functions.setup import *
init_global_vars()
os.system('title {}: Install ESET NOD32 AV'.format(KIT_NAME_FULL))
global_vars['LogFile'] = r'{LogDir}\Install ESET NOD32 AV.log'.format(**global_vars)
if __name__ == '__main__':
try:
stay_awake()
clear_screen()
print_info('{}: Install ESET NOD32 AV\n'.format(KIT_NAME_FULL))
scan_pups = ask('Enable PUP scans in ESET?')
install_eset_nod32_av(scan_pups)
print_standard('\nDone.')
exit_script()
except SystemExit:
pass
except:
major_exception()

View file

@ -10,6 +10,7 @@ from functions.setup import *
init_global_vars() init_global_vars()
os.system('title {}: SW Bundle Tool'.format(KIT_NAME_FULL)) os.system('title {}: SW Bundle Tool'.format(KIT_NAME_FULL))
global_vars['LogFile'] = r'{LogDir}\Install SW Bundle.log'.format(**global_vars) global_vars['LogFile'] = r'{LogDir}\Install SW Bundle.log'.format(**global_vars)
D7_MODE = 'd7mode' in sys.argv
if __name__ == '__main__': if __name__ == '__main__':
try: try:
@ -25,11 +26,15 @@ if __name__ == '__main__':
'GenericRepair': 'Repaired', 'GenericRepair': 'Repaired',
'UnsupportedOSError': 'Unsupported OS', 'UnsupportedOSError': 'Unsupported OS',
}} }}
answer_extensions = ask('Install Extensions?') answer_extensions = D7_MODE or ask('Install Extensions?')
answer_adobe_reader = ask('Install Adobe Reader?') if D7_MODE:
answer_vcr = ask('Install Visual C++ Runtimes?') answer_adobe_reader = False
answer_ninite = ask('Install Ninite Bundle?') else:
if answer_ninite and global_vars['OS']['Version'] in ['7']: answer_adobe_reader = ask('Install Adobe Reader?')
answer_vcr = D7_MODE or ask('Install Visual C++ Runtimes?')
answer_ninite = D7_MODE or ask('Install Ninite Bundle?')
if not D7_MODE and (
answer_ninite and global_vars['OS']['Version'] in ['7']):
# Vista is dead, not going to check for it # Vista is dead, not going to check for it
answer_mse = ask('Install MSE?') answer_mse = ask('Install MSE?')
else: else:
@ -62,3 +67,5 @@ if __name__ == '__main__':
pass pass
except: except:
major_exception() major_exception()
# vim: sts=4 sw=4 ts=4

48
.bin/Scripts/post_d7.py Normal file
View file

@ -0,0 +1,48 @@
# Wizard Kit: Post-d7II items
import os
import sys
# Init
os.chdir(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(os.getcwd())
from functions.browsers import *
from functions.cleanup import *
from functions.setup import *
init_global_vars()
os.system('title {}: Post-d7II Work'.format(KIT_NAME_FULL))
global_vars['LogFile'] = r'{LogDir}\User Checklist ({USERNAME}).log'.format(
**global_vars, **global_vars['Env'])
if __name__ == '__main__':
try:
stay_awake()
clear_screen()
print_info('{}: Post-d7II Work\n'.format(KIT_NAME_FULL))
other_results = {
'Warning': {
'NotInstalledError': 'Not installed',
'NoProfilesError': 'No profiles found',
}}
# Scan for Firefox browsers
print_info('Scanning for Firefox browsers')
scan_for_browsers(just_firefox=True)
# Install uBlock Origin
print_info('Installing uBlock Origin')
install_adblock(just_firefox=True)
# Cleanup
print_info('Cleanup')
try_and_print(message='d7II...',
function=cleanup_d7ii, cs='Done')
# Done
print_standard('\nDone.')
pause('Press Enter to exit...')
exit_script()
except SystemExit:
pass
except:
major_exception()

View file

@ -0,0 +1,54 @@
# Wizard Kit: Reset Browsers
import os
import sys
# Init
os.chdir(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(os.getcwd())
from functions.browsers import *
from functions.cleanup import *
from functions.setup import *
init_global_vars()
os.system('title {}: Browser Reset Tool'.format(KIT_NAME_FULL))
global_vars['LogFile'] = r'{LogDir}\Browser Reset ({USERNAME}).log'.format(
**global_vars, **global_vars['Env'])
D7_MODE = 'd7mode' in sys.argv
if __name__ == '__main__':
try:
stay_awake()
clear_screen()
print_info('{}: Browser Reset\n'.format(KIT_NAME_FULL))
other_results = {
'Warning': {
'NotInstalledError': 'Not installed',
'NoProfilesError': 'No profiles found',
}}
# Bail early
if not D7_MODE and not ask('Reset browsers to safe defaults first?'):
exit_script()
# Scan for supported browsers
print_info('Scanning for browsers')
scan_for_browsers()
# Homepages
print_info('Current homepages')
list_homepages()
# Backup
print_info('Backing up browsers')
backup_browsers()
# Reset
print_info('Resetting browsers')
reset_browsers()
# Done
exit_script()
except SystemExit:
pass
except:
major_exception()

View file

@ -8,22 +8,62 @@ LAUNCHERS = {
'L_ITEM': 'activate.py', 'L_ITEM': 'activate.py',
'L_ELEV': 'True', 'L_ELEV': 'True',
}, },
'd7II': {
'L_TYPE': 'Executable',
'L_PATH': 'd7II',
'L_ITEM': 'd7II.exe',
},
'Install ESET NOD32 AV': {
'L_TYPE': 'PyScript',
'L_PATH': 'Scripts',
'L_ITEM': 'install_eset_nod32_av.py',
'L_ELEV': 'True',
},
'System Checklist': { 'System Checklist': {
'L_TYPE': 'PyScript', 'L_TYPE': 'PyScript',
'L_PATH': 'Scripts', 'L_PATH': 'Scripts',
'L_ITEM': 'system_checklist.py', 'L_ITEM': 'system_checklist.py',
'L_ELEV': 'True', 'L_ELEV': 'True',
}, },
'User Checklist': {
'L_TYPE': 'PyScript',
'L_PATH': 'Scripts',
'L_ITEM': 'user_checklist.py',
},
},
r'.bin\Scripts\launchers_for_d7': {
'Browser Reset': {
'L_TYPE': 'PyScript',
'L_PATH': 'Scripts',
'L_ITEM': 'reset_browsers.py',
'L_ARGS': 'd7mode',
},
'Install SW Bundle': {
'L_TYPE': 'PyScript',
'L_PATH': 'Scripts',
'L_ITEM': 'install_sw_bundle.py',
'L_ARGS': 'd7mode',
'L_ELEV': 'True',
},
'System Checklist': {
'L_TYPE': 'PyScript',
'L_PATH': 'Scripts',
'L_ITEM': 'system_checklist.py',
'L_ARGS': 'd7mode',
'L_ELEV': 'True',
},
'System Diagnostics': { 'System Diagnostics': {
'L_TYPE': 'PyScript', 'L_TYPE': 'PyScript',
'L_PATH': 'Scripts', 'L_PATH': 'Scripts',
'L_ITEM': 'system_diagnostics.py', 'L_ITEM': 'system_diagnostics.py',
'L_ARGS': 'd7mode',
'L_ELEV': 'True', 'L_ELEV': 'True',
}, },
'User Checklist': { 'User Checklist': {
'L_TYPE': 'PyScript', 'L_TYPE': 'PyScript',
'L_PATH': 'Scripts', 'L_PATH': 'Scripts',
'L_ITEM': 'user_checklist.py', 'L_ITEM': 'user_checklist.py',
'L_ARGS': 'd7mode',
}, },
}, },
r'Data Recovery': { r'Data Recovery': {
@ -49,6 +89,11 @@ LAUNCHERS = {
}, },
}, },
r'Data Transfers': { r'Data Transfers': {
"Fab's Autobackup Pro": {
'L_TYPE': 'Executable',
'L_PATH': 'AutoBackupPro',
'L_ITEM': 'autobackup6pro.exe',
},
'FastCopy (as ADMIN)': { 'FastCopy (as ADMIN)': {
'L_TYPE': 'Executable', 'L_TYPE': 'Executable',
'L_PATH': 'FastCopy', 'L_PATH': 'FastCopy',
@ -161,6 +206,12 @@ LAUNCHERS = {
r'mkdir "%q_dir%">nul 2>&1', r'mkdir "%q_dir%">nul 2>&1',
], ],
}, },
'Mac & Linux Reader': {
'L_TYPE': 'Executable',
'L_PATH': 'LinuxReader',
'L_ITEM': 'LinuxReader.exe',
'L_ELEV': 'True',
},
'Transferred Keys': { 'Transferred Keys': {
'L_TYPE': 'PyScript', 'L_TYPE': 'PyScript',
'L_PATH': 'Scripts', 'L_PATH': 'Scripts',
@ -188,17 +239,10 @@ LAUNCHERS = {
}, },
}, },
r'Diagnostics': { r'Diagnostics': {
'HWiNFO': { 'AIDA64': {
'L_TYPE': 'Executable', 'L_TYPE': 'Executable',
'L_PATH': 'HWiNFO', 'L_PATH': 'AIDA64',
'L_ITEM': 'HWiNFO.exe', 'L_ITEM': 'aida64.exe',
'Extra Code': [
r'for %%a in (32 64) do (',
r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"',
r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
r')',
],
}, },
'ProduKey': { 'ProduKey': {
'L_TYPE': 'Executable', 'L_TYPE': 'Executable',
@ -212,13 +256,14 @@ LAUNCHERS = {
r')', r')',
], ],
}, },
'System Diagnostics': {
'L_TYPE': 'PyScript',
'L_PATH': 'Scripts',
'L_ITEM': 'system_diagnostics.py',
'L_ELEV': 'True',
},
}, },
r'Diagnostics\Extras': { r'Diagnostics\Extras': {
'AIDA64': {
'L_TYPE': 'Executable',
'L_PATH': 'AIDA64',
'L_ITEM': 'aida64.exe',
},
'Autoruns (with VirusTotal Scan)': { 'Autoruns (with VirusTotal Scan)': {
'L_TYPE': 'Executable', 'L_TYPE': 'Executable',
'L_PATH': 'Autoruns', 'L_PATH': 'Autoruns',
@ -265,6 +310,18 @@ LAUNCHERS = {
r'call "%bin%\Scripts\init_client_dir.cmd" /Info', r'call "%bin%\Scripts\init_client_dir.cmd" /Info',
], ],
}, },
'HWiNFO': {
'L_TYPE': 'Executable',
'L_PATH': 'HWiNFO',
'L_ITEM': 'HWiNFO.exe',
'Extra Code': [
r'for %%a in (32 64) do (',
r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"',
r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
r')',
],
},
'HWiNFO (Sensors)': { 'HWiNFO (Sensors)': {
'L_TYPE': 'Executable', 'L_TYPE': 'Executable',
'L_PATH': 'HWiNFO', 'L_PATH': 'HWiNFO',
@ -503,6 +560,11 @@ LAUNCHERS = {
'L_ITEM': 'dism.py', 'L_ITEM': 'dism.py',
'L_ELEV': 'True', 'L_ELEV': 'True',
}, },
'ESET Online Scanner': {
'L_TYPE': 'Executable',
'L_PATH': 'ESET',
'L_ITEM': 'ESET.exe',
},
'KVRT': { 'KVRT': {
'L_TYPE': 'Executable', 'L_TYPE': 'Executable',
'L_PATH': 'KVRT', 'L_PATH': 'KVRT',
@ -552,6 +614,12 @@ LAUNCHERS = {
r'mkdir "%q_dir%">nul 2>&1', r'mkdir "%q_dir%">nul 2>&1',
], ],
}, },
'WinAIO Repair': {
'L_TYPE': 'Executable',
'L_PATH': 'WinAIO Repair',
'L_ITEM': 'Repair_Windows.exe',
'L_ELEV': 'True',
},
}, },
r'Uninstallers': { r'Uninstallers': {
'IObit Uninstaller': { 'IObit Uninstaller': {

View file

@ -1,8 +1,9 @@
# Wizard Kit: Settings - Main / Branding # Wizard Kit: Settings - Main / Branding
# Features # Features
ENABLED_UPLOAD_DATA = True ENABLED_OPEN_LOGS = False
ENABLED_TICKET_NUMBERS = False ENABLED_TICKET_NUMBERS = False
ENABLED_UPLOAD_DATA = True
# STATIC VARIABLES (also used by BASH and BATCH files) # STATIC VARIABLES (also used by BASH and BATCH files)
## NOTE: There are no spaces around the = for easier parsing in BASH and BATCH ## NOTE: There are no spaces around the = for easier parsing in BASH and BATCH
@ -10,7 +11,7 @@ ENABLED_TICKET_NUMBERS = False
ARCHIVE_PASSWORD='Sorted1201' ARCHIVE_PASSWORD='Sorted1201'
KIT_NAME_FULL='1201-WizardKit' KIT_NAME_FULL='1201-WizardKit'
KIT_NAME_SHORT='1201' KIT_NAME_SHORT='1201'
SUPPORT_MESSAGE='Please let us know by opening an issue on Gogs' SUPPORT_MESSAGE='Please let support know by opening an issue on Gogs'
# osTicket # osTicket
DB_HOST='osticket.1201.com' DB_HOST='osticket.1201.com'
DB_NAME='osticket' DB_NAME='osticket'
@ -31,8 +32,8 @@ QUICKBOOKS_SERVER_IP='10.11.1.20'
LINUX_TIME_ZONE='America/Los_Angeles' # See 'timedatectl list-timezones' for valid values LINUX_TIME_ZONE='America/Los_Angeles' # See 'timedatectl list-timezones' for valid values
WINDOWS_TIME_ZONE='Pacific Standard Time' # See 'tzutil /l' for valid values WINDOWS_TIME_ZONE='Pacific Standard Time' # See 'tzutil /l' for valid values
# WiFi # WiFi
WIFI_SSID='HamsterFi' WIFI_SSID='1201 Computers'
WIFI_PASSWORD='16Hamsters' WIFI_PASSWORD='12011201'
# SERVER VARIABLES # SERVER VARIABLES
## NOTE: Windows can only use one user per server. This means that if ## NOTE: Windows can only use one user per server. This means that if

View file

@ -13,6 +13,7 @@ SOURCE_URLS = {
'ClassicStartSkin': 'http://www.classicshell.net/forum/download/file.php?id=3001&sid=9a195960d98fd754867dcb63d9315335', 'ClassicStartSkin': 'http://www.classicshell.net/forum/download/file.php?id=3001&sid=9a195960d98fd754867dcb63d9315335',
'Du': 'https://download.sysinternals.com/files/DU.zip', 'Du': 'https://download.sysinternals.com/files/DU.zip',
'ERUNT': 'http://www.aumha.org/downloads/erunt.zip', 'ERUNT': 'http://www.aumha.org/downloads/erunt.zip',
'ESET NOD32 AV': 'https://download.eset.com/com/eset/apps/home/eav/windows/latest/eav_nt64.exe',
'Everything32': 'https://www.voidtools.com/Everything-1.4.1.895.x86.zip', 'Everything32': 'https://www.voidtools.com/Everything-1.4.1.895.x86.zip',
'Everything64': 'https://www.voidtools.com/Everything-1.4.1.895.x64.zip', 'Everything64': 'https://www.voidtools.com/Everything-1.4.1.895.x64.zip',
'FastCopy': 'http://ftp.vector.co.jp/70/64/2323/FastCopy354_installer.zip', 'FastCopy': 'http://ftp.vector.co.jp/70/64/2323/FastCopy354_installer.zip',
@ -36,6 +37,7 @@ SOURCE_URLS = {
'TestDisk': 'https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip', 'TestDisk': 'https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip',
'wimlib32': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-i686-bin.zip', 'wimlib32': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-i686-bin.zip',
'wimlib64': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-x86_64-bin.zip', 'wimlib64': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-x86_64-bin.zip',
'WinAIO Repair': 'http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio.zip',
'Winapp2': 'https://github.com/MoscaDotTo/Winapp2/archive/master.zip', 'Winapp2': 'https://github.com/MoscaDotTo/Winapp2/archive/master.zip',
'WizTree': 'https://antibody-software.com/files/wiztree_3_26_portable.zip', 'WizTree': 'https://antibody-software.com/files/wiztree_3_26_portable.zip',
'XMPlay 7z': 'https://support.xmplay.com/files/16/xmp-7z.zip?v=800962', 'XMPlay 7z': 'https://support.xmplay.com/files/16/xmp-7z.zip?v=800962',
@ -65,8 +67,8 @@ VCREDIST_SOURCES = {
} }
NINITE_SOURCES = { NINITE_SOURCES = {
'Bundles': { 'Bundles': {
'Legacy.exe': '.net4.7.2-7zip-chrome-firefox-vlc', 'Legacy.exe': '.net4.7.2-7zip-chrome-firefox-sumatrapdf-vlc',
'Modern.exe': '.net4.7.2-7zip-chrome-classicstart-firefox-vlc', 'Modern.exe': '.net4.7.2-7zip-chrome-classicstart-firefox-sumatrapdf-vlc',
}, },
'Audio-Video': { 'Audio-Video': {
'AIMP.exe': 'aimp', 'AIMP.exe': 'aimp',
@ -196,3 +198,5 @@ RST_SOURCES = {
if __name__ == '__main__': if __name__ == '__main__':
print("This file is not meant to be called directly.") print("This file is not meant to be called directly.")
# vim: sts=4 sw=4 ts=4 tw=0 nowrap

View file

@ -15,6 +15,7 @@ from functions.setup import *
init_global_vars() init_global_vars()
os.system('title {}: System Checklist Tool'.format(KIT_NAME_FULL)) os.system('title {}: System Checklist Tool'.format(KIT_NAME_FULL))
global_vars['LogFile'] = r'{LogDir}\System Checklist.log'.format(**global_vars) global_vars['LogFile'] = r'{LogDir}\System Checklist.log'.format(**global_vars)
D7_MODE = 'd7mode' in sys.argv
if __name__ == '__main__': if __name__ == '__main__':
try: try:
@ -43,23 +44,28 @@ if __name__ == '__main__':
# Cleanup # Cleanup
print_info('Cleanup') print_info('Cleanup')
try_and_print(message='Desktop...',
function=cleanup_desktop, cs='Done')
try_and_print(message='AdwCleaner...', try_and_print(message='AdwCleaner...',
function=cleanup_adwcleaner, cs='Done', other_results=other_results) function=cleanup_adwcleaner, cs='Done', other_results=other_results)
try_and_print(message='Desktop...',
function=cleanup_desktop, cs='Done')
try_and_print(message='Emsisoft a2cmd...',
function=cleanup_emsisoft, cs='Done')
try_and_print(message='Registry Backup(s)...',
function=cleanup_regbackups, cs='Done')
# Export system info # Export system info
print_info('Backup System Information') if not D7_MODE:
try_and_print(message='AIDA64 reports...', print_info('Backup System Information')
function=run_aida64, cs='Done', other_results=other_results) try_and_print(message='AIDA64 reports...',
try_and_print(message='File listing...', function=run_aida64, cs='Done', other_results=other_results)
function=backup_file_list, cs='Done', other_results=other_results) try_and_print(message='File listing...',
try_and_print(message='Power plans...', function=backup_file_list, cs='Done', other_results=other_results)
function=backup_power_plans, cs='Done') try_and_print(message='Power plans...',
try_and_print(message='Product Keys...', other_results=other_results, function=backup_power_plans, cs='Done')
function=run_produkey, cs='Done') try_and_print(message='Product Keys...', other_results=other_results,
try_and_print(message='Registry...', function=run_produkey, cs='Done')
function=backup_registry, cs='Done', other_results=other_results) try_and_print(message='Registry...',
function=backup_registry, cs='Done', other_results=other_results)
# User data # User data
print_info('User Data') print_info('User Data')
@ -79,12 +85,18 @@ if __name__ == '__main__':
try_and_print(message='Installed RAM:', try_and_print(message='Installed RAM:',
function=show_installed_ram, ns='Unknown', silent_function=False) function=show_installed_ram, ns='Unknown', silent_function=False)
show_free_space() show_free_space()
if D7_MODE:
try_and_print(message='Temp Size:',
function=show_temp_files_size, silent_function=False)
try_and_print(message='Installed Antivirus:', try_and_print(message='Installed Antivirus:',
function=get_installed_antivirus, ns='Unknown', function=get_installed_antivirus, ns='Unknown',
other_results=other_results, print_return=True) other_results=other_results, print_return=True)
try_and_print(message='Installed Office:', try_and_print(message='Installed Office:',
function=get_installed_office, ns='Unknown', function=get_installed_office, ns='Unknown',
other_results=other_results, print_return=True) other_results=other_results, print_return=True)
if D7_MODE:
try_and_print(message='Product Keys:',
function=get_product_keys, ns='Unknown', print_return=True)
# Play audio, show devices, open Windows updates, and open Activation # Play audio, show devices, open Windows updates, and open Activation
try_and_print(message='Opening Device Manager...', try_and_print(message='Opening Device Manager...',

View file

@ -15,6 +15,67 @@ init_global_vars()
os.system('title {}: System Diagnostics Tool'.format(KIT_NAME_FULL)) os.system('title {}: System Diagnostics Tool'.format(KIT_NAME_FULL))
global_vars['LogFile'] = r'{LogDir}\System Diagnostics.log'.format( global_vars['LogFile'] = r'{LogDir}\System Diagnostics.log'.format(
**global_vars) **global_vars)
D7_MODE = 'd7mode' in sys.argv
# Static Variables
BLEACH_BIT_CLEANERS = {
'Applications': (
'adobe_reader.cache',
'adobe_reader.tmp',
'amule.tmp',
'flash.cache',
'gimp.tmp',
'hippo_opensim_viewer.cache',
'java.cache',
'libreoffice.cache',
'liferea.cache',
'miro.cache',
'openofficeorg.cache',
'pidgin.cache',
'secondlife_viewer.Cache',
'thunderbird.cache',
'vuze.backup_files',
'vuze.cache',
'vuze.tmp',
'yahoo_messenger.cache',
),
'Browsers': (
'chromium.cache',
'chromium.current_session',
'firefox.cache',
'firefox.session_restore',
'google_chrome.cache',
'google_chrome.session',
'google_earth.temporary_files',
'internet_explorer.temporary_files',
'opera.cache',
'opera.current_session',
'safari.cache',
'seamonkey.cache',
),
'System': (
'system.clipboard',
'system.tmp',
'winapp2_windows.jump_lists',
'winapp2_windows.ms_search',
'windows_explorer.run',
'windows_explorer.search_history',
'windows_explorer.thumbnails',
),
}
def check_result(result, other_results):
"""Check result for warnings and errors."""
result_ok = True
if not result['CS']:
for warning in other_results.get('Warning', {}).keys():
if warning in str(result['Error']):
# Ignore warnings and repair statements
return True
# Error is not a warning
result_ok = False
return result_ok
if __name__ == '__main__': if __name__ == '__main__':
try: try:
@ -22,6 +83,7 @@ if __name__ == '__main__':
clear_screen() clear_screen()
print_info('{}: System Diagnostics Tool\n'.format(KIT_NAME_FULL)) print_info('{}: System Diagnostics Tool\n'.format(KIT_NAME_FULL))
ticket_number = get_ticket_number() ticket_number = get_ticket_number()
system_ok = True
other_results = { other_results = {
'Error': { 'Error': {
'CalledProcessError': 'Unknown Error', 'CalledProcessError': 'Unknown Error',
@ -34,89 +96,113 @@ if __name__ == '__main__':
if ENABLED_TICKET_NUMBERS: if ENABLED_TICKET_NUMBERS:
print_info('Starting System Diagnostics for Ticket #{}\n'.format( print_info('Starting System Diagnostics for Ticket #{}\n'.format(
ticket_number)) ticket_number))
# Sanitize Environment # Sanitize Environment
print_info('Sanitizing Environment') print_info('Sanitizing Environment')
# try_and_print(message='Killing processes...', if not D7_MODE:
# function=run_process_killer, cs='Done') try_and_print(message='Running RKill...',
try_and_print(message='Running RKill...', function=run_rkill, cs='Done', other_results=other_results)
function=run_rkill, cs='Done', other_results=other_results) try_and_print(message='Running TDSSKiller...',
try_and_print(message='Running TDSSKiller...', function=run_tdsskiller, cs='Done', other_results=other_results)
function=run_tdsskiller, cs='Done', other_results=other_results)
# Re-run if earlier process was stopped. # Re-run if earlier process was stopped.
stay_awake() stay_awake()
# Start diags # Start diags
print_info('Starting Background Scans') if not D7_MODE:
check_connection() print_info('Starting Background Scans')
try_and_print(message='Running HitmanPro...', check_connection()
function=run_hitmanpro, cs='Started', other_results=other_results) try_and_print(message='Running HitmanPro...',
try_and_print(message='Running Autoruns...', function=run_hitmanpro, cs='Started', other_results=other_results)
function=run_autoruns, cs='Started', other_results=other_results) try_and_print(message='Running Autoruns...',
function=run_autoruns, cs='Started', other_results=other_results)
# OS Health Checks # OS Health Checks
print_info('OS Health Checks') print_info('OS Health Checks')
try_and_print( result = try_and_print(
message='CHKDSK ({SYSTEMDRIVE})...'.format(**global_vars['Env']), message='CHKDSK ({SYSTEMDRIVE})...'.format(**global_vars['Env']),
function=run_chkdsk, other_results=other_results) function=run_chkdsk, other_results=other_results)
try_and_print(message='SFC scan...', system_ok &= check_result(result, other_results)
result = try_and_print(message='SFC scan...',
function=run_sfc_scan, other_results=other_results) function=run_sfc_scan, other_results=other_results)
try_and_print(message='DISM CheckHealth...', system_ok &= check_result(result, other_results)
function=run_dism, other_results=other_results, repair=False) if D7_MODE:
result = try_and_print(message='DISM RestoreHealth...',
# Scan for supported browsers function=run_dism, other_results=other_results, repair=True)
print_info('Scanning for browsers') system_ok &= check_result(result, other_results)
scan_for_browsers() else:
try_and_print(message='DISM CheckHealth...',
function=run_dism, other_results=other_results, repair=False)
if D7_MODE:
# Archive all browsers for all users
archive_all_users()
else:
# Scan for supported browsers
print_info('Scanning for browsers')
scan_for_browsers()
# Run BleachBit cleaners
print_info('BleachBit Cleanup')
for k, v in sorted(BLEACH_BIT_CLEANERS.items()):
try_and_print(message=' {}...'.format(k),
function=run_bleachbit,
cs='Done', other_results=other_results,
cleaners=v, preview=bool(not D7_MODE))
# Export system info # Export system info
print_info('Backup System Information') print_info('Backup System Information')
try_and_print(message='AIDA64 reports...', try_and_print(message='AIDA64 reports...',
function=run_aida64, cs='Done', other_results=other_results) function=run_aida64, cs='Done', other_results=other_results)
try_and_print(message='BleachBit report...', if not D7_MODE:
function=run_bleachbit, cs='Done', other_results=other_results) backup_browsers()
backup_browsers()
try_and_print(message='File listing...', try_and_print(message='File listing...',
function=backup_file_list, cs='Done', other_results=other_results) function=backup_file_list, cs='Done', other_results=other_results)
try_and_print(message='Power plans...', try_and_print(message='Power plans...',
function=backup_power_plans, cs='Done') function=backup_power_plans, cs='Done')
try_and_print(message='Product Keys...', try_and_print(message='Product Keys...',
function=run_produkey, cs='Done', other_results=other_results) function=run_produkey, cs='Done', other_results=other_results)
try_and_print(message='Registry...', if not D7_MODE:
function=backup_registry, cs='Done', other_results=other_results) try_and_print(message='Registry...',
function=backup_registry, cs='Done', other_results=other_results)
# Summary # Summary
print_info('Summary') if not D7_MODE:
try_and_print(message='Operating System:', print_info('Summary')
function=show_os_name, ns='Unknown', silent_function=False) try_and_print(message='Operating System:',
try_and_print(message='Activation:', function=show_os_name, ns='Unknown', silent_function=False)
function=show_os_activation, ns='Unknown', silent_function=False) try_and_print(message='Activation:',
try_and_print(message='Installed RAM:', function=show_os_activation, ns='Unknown', silent_function=False)
function=show_installed_ram, ns='Unknown', silent_function=False) try_and_print(message='Installed RAM:',
show_free_space() function=show_installed_ram, ns='Unknown', silent_function=False)
try_and_print(message='Temp Size:', show_free_space()
function=show_temp_files_size, silent_function=False) try_and_print(message='Temp Size:',
try_and_print(message='Installed Antivirus:', function=show_temp_files_size, silent_function=False)
function=get_installed_antivirus, ns='Unknown', try_and_print(message='Installed Antivirus:',
other_results=other_results, print_return=True) function=get_installed_antivirus, ns='Unknown',
try_and_print(message='Installed Office:', other_results=other_results, print_return=True)
function=get_installed_office, ns='Unknown', try_and_print(message='Installed Office:',
other_results=other_results, print_return=True) function=get_installed_office, ns='Unknown',
try_and_print(message='Product Keys:', other_results=other_results, print_return=True)
function=get_product_keys, ns='Unknown', print_return=True) try_and_print(message='Product Keys:',
function=get_product_keys, ns='Unknown', print_return=True)
# User data # User data
print_info('User Data') if not D7_MODE:
try: print_info('User Data')
show_user_data_summary() try:
except Exception: show_user_data_summary()
print_error(' Unknown error.') except Exception:
print_error(' Unknown error.')
# Done # Done
print_standard('\nDone.') if not D7_MODE or not system_ok:
pause('Press Enter to exit...') print_standard('\nDone.')
pause('Press Enter to exit...')
exit_script() exit_script()
except SystemExit: except SystemExit:
pass pass
except: except:
major_exception() major_exception()
# vim: sts=4 sw=4 ts=4

View file

@ -79,6 +79,7 @@ if __name__ == '__main__':
try_and_print(message='KVRT...', function=update_kvrt, other_results=other_results, width=40) try_and_print(message='KVRT...', function=update_kvrt, other_results=other_results, width=40)
try_and_print(message='RKill...', function=update_rkill, other_results=other_results, width=40) try_and_print(message='RKill...', function=update_rkill, other_results=other_results, width=40)
try_and_print(message='TDSSKiller...', function=update_tdsskiller, other_results=other_results, width=40) try_and_print(message='TDSSKiller...', function=update_tdsskiller, other_results=other_results, width=40)
try_and_print(message='WinAIO Repair...', function=update_winaiorepair, other_results=other_results, width=40)
# Uninstallers # Uninstallers
print_info(' Uninstallers') print_info(' Uninstallers')

View file

@ -13,6 +13,7 @@ init_global_vars()
os.system('title {}: User Checklist Tool'.format(KIT_NAME_FULL)) os.system('title {}: User Checklist Tool'.format(KIT_NAME_FULL))
global_vars['LogFile'] = r'{LogDir}\User Checklist ({USERNAME}).log'.format( global_vars['LogFile'] = r'{LogDir}\User Checklist ({USERNAME}).log'.format(
**global_vars, **global_vars['Env']) **global_vars, **global_vars['Env'])
D7_MODE = 'd7mode' in sys.argv
if __name__ == '__main__': if __name__ == '__main__':
try: try:
@ -24,36 +25,46 @@ if __name__ == '__main__':
'NotInstalledError': 'Not installed', 'NotInstalledError': 'Not installed',
'NoProfilesError': 'No profiles found', 'NoProfilesError': 'No profiles found',
}} }}
answer_config_browsers = ask('Install adblock?') #answer_config_browsers = ask('Install adblock?')
answer_config_browsers = True
if answer_config_browsers: if answer_config_browsers:
answer_reset_browsers = ask( if D7_MODE:
'Reset browsers to safe defaults first?') # This is handled by another script option in d7ii
answer_reset_browsers = False
else:
answer_reset_browsers = ask(
'Reset browsers to safe defaults first?')
if global_vars['OS']['Version'] == '10': if global_vars['OS']['Version'] == '10':
answer_config_classicshell = ask('Configure ClassicShell?') #answer_config_classicshell = ask('Configure ClassicShell?')
answer_config_explorer_user = ask('Configure Explorer?') #answer_config_explorer_user = ask('Configure Explorer?')
answer_config_classicshell = True
answer_config_explorer_user = True
# Cleanup # Cleanup
print_info('Cleanup') print_info('Cleanup')
try_and_print(message='Desktop...', try_and_print(message='Desktop...',
function=cleanup_desktop, cs='Done') function=cleanup_desktop, cs='Done')
# Scan for supported browsers # Scan for supported browsers
print_info('Scanning for browsers') print_info('Scanning for browsers')
scan_for_browsers() scan_for_browsers()
# Homepages # Homepages
print_info('Current homepages') if not D7_MODE:
list_homepages() print_info('Current homepages')
list_homepages()
# Backup # Backup
print_info('Backing up browsers') if not D7_MODE:
backup_browsers() # Done during system_diagnostics
print_info('Backing up browsers')
backup_browsers()
# Reset # Reset
if answer_config_browsers and answer_reset_browsers: if answer_config_browsers and answer_reset_browsers:
print_info('Resetting browsers') print_info('Resetting browsers')
reset_browsers() reset_browsers()
# Configure # Configure
print_info('Configuring programs') print_info('Configuring programs')
if answer_config_browsers: if answer_config_browsers:
@ -75,10 +86,11 @@ if __name__ == '__main__':
# Run speedtest # Run speedtest
popen_program(['start', '', 'https://fast.com'], shell=True) popen_program(['start', '', 'https://fast.com'], shell=True)
# Done # Done
print_standard('\nDone.') if not D7_MODE:
pause('Press Enter to exit...') print_standard('\nDone.')
pause('Press Enter to exit...')
exit_script() exit_script()
except SystemExit: except SystemExit:
pass pass

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -37,3 +37,18 @@ menuentry "Linux" {
#UFD# icon /EFI/boot/icons/wk_win.png #UFD# icon /EFI/boot/icons/wk_win.png
#UFD# loader /EFI/microsoft/bootx64.efi #UFD# loader /EFI/microsoft/bootx64.efi
#UFD#} #UFD#}
#UFD#menuentry "ESET SysRescue Live" {
#UFD# icon /EFI/boot/icons/1201_eset.png
#UFD# loader /EFI/ESET/grubx64.efi
#UFD#}
#UFD#menuentry "HDClone" {
#UFD# icon /EFI/boot/icons/1201_hdclone.png
#UFD# loader /EFI/HDClone/grub.efi
#UFD#}
#UFD#menuentry "Mac dGPU Disable Tool" {
#UFD# icon /EFI/boot/icons/1201_mac-dgpu.png
#UFD# loader /dgpu/boot/x86_64/vmlinuz
#UFD# initrd /dgpu/boot/intel_ucode.img
#UFD# initrd /dgpu/boot/x86_64/archiso.img
#UFD# options "archisobasedir=dgpu archisolabel=1201_UFD nomodeset"
#UFD#}

View file

@ -0,0 +1,9 @@
LABEL eset
TEXT HELP
ESET SysRescue Live
* Offline AV scanner
ENDTEXT
MENU LABEL ESET SysRescue Live
LINUX ../casper/vmlinuz
INITRD ../casper/initrd.lz
APPEND boot=casper live-media=/dev/disk/by-label/1201_UFD splash

View file

@ -0,0 +1,9 @@
LABEL hdclone
TEXT HELP
HDClone by Miray Software
* Backups, cloning, etc
ENDTEXT
MENU LABEL HDClone 6
LINUX boot/syslinux/memdisk
INITRD ../sources/hdclone.iso
APPEND iso

View file

@ -8,4 +8,4 @@ LABEL pxe
CONFIG boot/syslinux/wk_pxe.cfg CONFIG boot/syslinux/wk_pxe.cfg
LABEL sys LABEL sys
CONFIG boot/syslinux/wk_sys.cfg CONFIG boot/syslinux/wk_sys_extras.cfg

View file

@ -15,15 +15,15 @@ MENU TABMSG
# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu # Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
MENU COLOR screen 30;44 #a0000000 #a0000000 none MENU COLOR screen 30;41 #a0000000 #a0000000 none
MENU COLOR border 30;44 #a0000000 #a0000000 none MENU COLOR border 30;41 #a0000000 #a0000000 none
MENU COLOR title 1;36;44 #9033ccff #a0000000 none MENU COLOR title 1;35;41 #90ff6666 #a0000000 none
MENU COLOR sel 7;37;40 #e0ffffff #a0000000 std MENU COLOR sel 7;37;40 #e0ffffff #a0000000 std
MENU COLOR disabled 37;44 #50ffffff #a0000000 none MENU COLOR disabled 37;41 #50ffffff #a0000000 none
MENU COLOR unsel 37;44 #50ffffff #a0000000 none MENU COLOR unsel 37;41 #50ffffff #a0000000 none
MENU COLOR help 37;40 #c0ffffff #a0000000 none MENU COLOR help 37;40 #c0ffffff #a0000000 none
MENU COLOR tabmsg 30;44 #a0000000 #a0000000 none MENU COLOR tabmsg 30;41 #a0000000 #a0000000 none
menu color cmdmark 1;36;44 #9033ccff #a0000000 none menu color cmdmark 1;35;41 #90ff6666 #a0000000 none
menu color cmdline 37;40 #c0ffffff #a0000000 none menu color cmdline 37;40 #c0ffffff #a0000000 none
MENU COLOR timeout_msg 37;40 #80ffffff #a0000000 none MENU COLOR timeout_msg 37;40 #80ffffff #a0000000 none
MENU COLOR timeout 1;37;40 #c0ffffff #a0000000 none MENU COLOR timeout 1;37;40 #c0ffffff #a0000000 none

View file

@ -2,6 +2,8 @@ INCLUDE boot/syslinux/wk_head.cfg
INCLUDE boot/syslinux/wk_sys_linux.cfg INCLUDE boot/syslinux/wk_sys_linux.cfg
#UFD#INCLUDE boot/syslinux/wk_sys_winpe.cfg #UFD#INCLUDE boot/syslinux/wk_sys_winpe.cfg
INCLUDE boot/syslinux/wk_sys_extras_entry.cfg #UFD#INCLUDE boot/syslinux/1201_hdclone.cfg
#UFD#INCLUDE boot/syslinux/1201_eset.cfg
INCLUDE boot/syslinux/wk_hdt.cfg
INCLUDE boot/syslinux/wk_tail.cfg INCLUDE boot/syslinux/wk_tail.cfg

View file

@ -3,6 +3,8 @@ INCLUDE boot/syslinux/wk_head.cfg
INCLUDE boot/syslinux/wk_sys_linux.cfg INCLUDE boot/syslinux/wk_sys_linux.cfg
INCLUDE boot/syslinux/wk_sys_linux_extras.cfg INCLUDE boot/syslinux/wk_sys_linux_extras.cfg
#UFD#INCLUDE boot/syslinux/wk_sys_winpe.cfg #UFD#INCLUDE boot/syslinux/wk_sys_winpe.cfg
#UFD#INCLUDE boot/syslinux/1201_hdclone.cfg
#UFD#INCLUDE boot/syslinux/1201_eset.cfg
INCLUDE boot/syslinux/wk_hdt.cfg INCLUDE boot/syslinux/wk_hdt.cfg
INCLUDE boot/syslinux/wk_tail.cfg INCLUDE boot/syslinux/wk_tail.cfg

View file

@ -1,7 +0,0 @@
Copyright (c) 2018 Alan Mason
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -57,7 +57,7 @@ A collection of scripts to help technicians service Windows systems.
* _(Recommended)_ Install and configure `sudo` * _(Recommended)_ Install and configure `sudo`
* See the [wiki page](https://wiki.archlinux.org/index.php/Sudo) for details. * See the [wiki page](https://wiki.archlinux.org/index.php/Sudo) for details.
* Login to the user added above * Login to the user added above
* Download the Github repo $ `git clone https://github.com/2Shirt/WizardKit.git` * Download the Github repo $ `git clone https://1201north.ddns.net:3000/2Shirt/WizardKit.git`
* Run the build script * Run the build script
* $ `cd WizardKit` * $ `cd WizardKit`
* $ `./Build\ Linux -b` * $ `./Build\ Linux -b`