* Using the BASH3 Boilerplate as a base for the new script
* The new version requires explicitly setting all sources
* Will avoid ambiguous matches / collision issues seen in issue #15
* Better ensures that the intended sources are used
* Still verify that '.bin' exists to ensure a valid "Main Kit" source
* Fixes recursion bug when Windows.old folders are present
* Combined logic for file/folder sources and WIM sources
* Code uses proper folder separators for the running OS
* (e.g. '\' for Windows and '/' for the rest)
* Renamed run_smart to run_nvme_smart to match rest of the code
* Mark NVMe/SMART status as NS earlier in a couple more cases
* Prevent crash when all tests are run and then aborted during Prime95
* The script waits for the self-test for polling-time+5min
* Unless it detects completion after 60 seconds
* Fixed missing linebreaks in progress panes
* BREAKING: TESTS data structure reworked to support per-dev status
* Renamed 'Health OK' to 'Quick Health OK'
* Better implies that we're not done testing
* Renamed SMART sections to NVMe/SMART
* Dropping SMART short-tests for NVMe drives
* Replaced smartmontools with smartmontool-svn
* Adds JSON exporting which makes parsing the data easier
* Using nvme-cli for NVMe drives instead of smartctl
* NVMe support in smartctl is still experimental and inconsistent
* New "Health OK" detection
* This is used to determine if a disk is okay to be tested
* e.g. an IDE disk w/out any SMART data now requires explicit overriding
* NVMe disks are set using the "critical_warning" attribute
* SMART disks are set using the "overall-health" attribute
* Code has been merged into Build Linux
* (releng copy is updated in place)
* SSH key for wktech now generated at build time
* Hostname is now set using main.py
* Passwords are now set using main.py
* Timezone is now set using main.py
## Main Kit ##
* Updated build script to work with new folder layout
* Browser sections have better profile & installation detection/reporting
* Browser extension section updated to support Firefox Quantum
* User Data Transfers will display local sources before remote sources
* Various bugfixes
## Windows PE ##
* WizardKit PE has been integrated into this project
* The build script has been replaced with a new PowerShell script
* This downloads the tools, builds a new PE image, and exports x32 & x64 ISOs
* main.py is opened for editing before the PE images are built
* ISO names use KIT_NAME_SHORT (e.g. WK-WinPE-20XX-XX-XX-amd64.iso)
* BitLocker CLI tool "manage-bde" has been added
* All PE Python scripts have been updated
* These scripts also use the main.py file for customization
* Better handling of damaged drives during backup & setup sections
* Partition type descriptions have been trimmed to fit on a single line
* Backup and Setup sections are now logged
* These logs can be reviewed and saved before returning to the main menu
* "No disk" errors seen when scanning empty card-readers should be silenced
* Various bugfixes
* Safer registry queries
* Only query CurrentBuild, CurrentVersion, and ProductName
* Service Pack / update status determined by the build number
* Set build & version to -1 instead of 'Unknown' if str to int/float fails
* Might prevent crashes by not mixing str/num types
* Show download progress again
* Done by leaving $progressPreference set to system default
* If there are errors during download, then bail before extracting data
* Moving to a new style guide for PowerShell scripts
* Using this: https://poshcode.gitbooks.io/powershell-practice-and-style/
* Encoding set to UTF-8 BOM instead of UTF-8
## Major Update ##
* Build Kit.cmd
* This script will build a fully functional kit requiring only PowerShell 3.0+ be installed prior.
* All launchers are now generated during builds and updates (by update_kit.py)
* This allows for a much leaner code-base to manage
* Lots of bugfixes, cleanup, and other adjustments.
* VCRedist 2017 installs as an update for 2015 (http://disq.us/p/1hjcta0)
* This prevents installing or uninstalling the 2015 versions after installing 2017
* (Because both 2015 and 2017 use these regkeys: HKEY_LOCAL_MACHINE(Wow6432Node|)\SOFTWARE\Microsoft\DevDiv\VC\Servicing\14.0)
If Launch.cmd aborted it would cause the launcher to abort as well.
If the error was handled by Launch.cmd then we can assume the launcher ran correctly.
* Generated launchers were using inconsistent endings causing very strange crashes.
* New plan: strip current endings and let Python handle them instead.
# Plan #
* Repo should be in a non-functional state
* This is to avoid confusion when most, if not all, scripts fail to run when first downloaded.
* The first step should be to run Build Kit.cmd which does the following
* Downloads 7-Zip, ConEmu, Notepad++, & Python (including wheel packages)
* (i.e. just enough to run update_kit.py)
* Open .bin/Scripts/settings/main.py in Notepad++ for configuration
* Move the kit folders into place
* (i.e. /.root_items/* ->> /, /Build Kit.cmd --> /.bin/Scripts/Build Kit.cmd, etc)
* Added Build Kit.cmd
* Launches build_kit.ps1
* Added build_kit.ps1
* Downloads 7-Zip, ConEmu, and Python
* Launches update_kit.py unless errors are encountered
* Removed all launchers
* update_kit.py will generate them in a future update
* Removed PywScript
* Setting L_NCMD with PSScript or PyScript will now use their respective native windows (instead of ConEmu)
* Relaunch in ConEmu code reworked to avoid launching ConEmu twice in this case
* i.e. CMD (Launch.cmd) --> ConEmu (Launch.cmd) --> ConEmu (some_script.py)
* Updated PSScript section to match PyScript
## MAJOR refactoring done ##
* All .cmd Command scripts
* Brandind / Settings variables now set via .bin/Scripts/settings/main.py
* Window titles now set using KIT_FULL_NAME
* All .py Python scripts
* All ClientDir paths should now use KIT_SHORT_NAME
* Long lines wrapped to better follow PEP8
* String formatting now more consistant
* Updated run_program() and popen_program() calls to use lists
* (e.g. cmd = ['', '', '']; run_program(cmd))
** Should improve clarity IMO
* Update window titles AFTER init_global_vars() so KIT_FULL_NAME can be used
* Branding / Settings
* Support tech now configurable
* (e.g. "Please let {tech} know and they'll look into it")
* Timezone now configurable
* Upload info can now be disabled/enabled in .bin/Scripts/settings/main.py
* CHKDSK
* Combined read-only and fix scripts and added menu
* DISM
* Combined ScanHealth and RestoreHealth scripts and added menu
* functions/common.py
* BREAKING: run_program() and popen_program() no longer accept 'args' variable
* Misc
* Removed Win7 NVMe launcher
* Never used and Win7 is deprecated
* Removed "DeviceRemover" and "Display Driver Uninstaller" launchers
* Both cut too deep and were not useful
* Removed Nirsoft utilities and Sysinternals Suite launchers
* Too many tools unused.
* Added .url links to the websites in case the tools are needed
* Replaced WinDirStat with TreeSizeFree
* Replaced Q-Dir launcher with XYplorer launcher
* Q-Dir was running into issues on Windows 10
* Removed C.IntRep, ESET, and MBAM launchers from "OSR & VR"
* Removed JRT
* Deprecated and discontinued by MBAM
* Removed unsupported QuickBooks launchers (2014 and older)
* Removed unsupported Office launchers (2010 and 2013\365)
* Removed "Revo Uninstaller" launcher
* Removed infrequently used tools from "Diagnostics"
* Auslogics DiskDefrag
* BatteryInfoView
* BIOSCodes
* GpuTest
* HeavyLoad
* Bugfixes
* major_exception() try-blocks should catch CTL+c again
* Allows for manual script bailing