Compare commits
18 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 875166b683 | |||
| 179748c469 | |||
| ffcee1156a | |||
| edd944a325 | |||
| 75119c15ad | |||
| e6db63c8b0 | |||
| e388b77639 | |||
| bbdef56df2 | |||
| 6a5a944ea0 | |||
| 3621914312 | |||
| 0ef9412995 | |||
| 0335797a5d | |||
| 2a07aebff3 | |||
| 244d917c73 | |||
| 13b8dc8696 | |||
| 58576cbdb4 | |||
| a3a7b25512 | |||
| 50033f42f6 |
44 changed files with 2834 additions and 3722 deletions
13
scripts/check_av.ps1
Normal file
13
scripts/check_av.ps1
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# WizardKit: Check Antivirus
|
||||
|
||||
#Requires -Version 3.0
|
||||
if (Test-Path Env:\DEBUG) {
|
||||
Set-PSDebug -Trace 1
|
||||
}
|
||||
$Host.UI.RawUI.WindowTitle = "WizardKit: Check Antivirus"
|
||||
$Host.UI.RawUI.BackgroundColor = "black"
|
||||
$Host.UI.RawUI.ForegroundColor = "white"
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
|
||||
# Main
|
||||
Get-CimInstance -Namespace "root\SecurityCenter2" -ClassName AntivirusProduct | select displayName,productState | ConvertTo-Json
|
||||
13
scripts/check_partition_alignment.ps1
Normal file
13
scripts/check_partition_alignment.ps1
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# WizardKit: Check Partition Alignment
|
||||
|
||||
#Requires -Version 3.0
|
||||
if (Test-Path Env:\DEBUG) {
|
||||
Set-PSDebug -Trace 1
|
||||
}
|
||||
$Host.UI.RawUI.WindowTitle = "WizardKit: Check Partition Alignment"
|
||||
$Host.UI.RawUI.BackgroundColor = "black"
|
||||
$Host.UI.RawUI.ForegroundColor = "white"
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
|
||||
# Main
|
||||
Get-CimInstance -Query "Select * from Win32_DiskPartition" | select Name,Size,StartingOffset | ConvertTo-Json
|
||||
|
|
@ -2,19 +2,10 @@
|
|||
"""WizardKit: ddrescue TUI"""
|
||||
# vim: sts=2 sw=2 ts=2
|
||||
|
||||
from docopt import docopt
|
||||
|
||||
import wk
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
docopt(wk.clone.ddrescue.DOCSTRING)
|
||||
except SystemExit:
|
||||
print('')
|
||||
wk.ui.cli.pause('Press Enter to exit...')
|
||||
raise
|
||||
|
||||
try:
|
||||
wk.clone.ddrescue.main()
|
||||
except SystemExit:
|
||||
|
|
|
|||
13
scripts/disable_password_expiration.ps1
Normal file
13
scripts/disable_password_expiration.ps1
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# WizardKit: Disable Password Expiration (Local Accounts)
|
||||
|
||||
#Requires -Version 3.0
|
||||
if (Test-Path Env:\DEBUG) {
|
||||
Set-PSDebug -Trace 1
|
||||
}
|
||||
$Host.UI.RawUI.WindowTitle = "Disable Password Expiration"
|
||||
$Host.UI.RawUI.BackgroundColor = "black"
|
||||
$Host.UI.RawUI.ForegroundColor = "white"
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
|
||||
# Main
|
||||
Get-LocalUser | Set-LocalUser -PasswordNeverExpires $true
|
||||
|
|
@ -2,19 +2,10 @@
|
|||
"""WizardKit: Hardware Diagnostics"""
|
||||
# vim: sts=2 sw=2 ts=2
|
||||
|
||||
from docopt import docopt
|
||||
|
||||
import wk
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
docopt(wk.hw.diags.DOCSTRING)
|
||||
except SystemExit:
|
||||
print('')
|
||||
wk.ui.cli.pause('Press Enter to exit...')
|
||||
raise
|
||||
|
||||
try:
|
||||
wk.hw.diags.main()
|
||||
except SystemExit:
|
||||
|
|
|
|||
|
|
@ -29,6 +29,14 @@ REG_CHROME_UBLOCK_ORIGIN = {
|
|||
)
|
||||
},
|
||||
}
|
||||
REG_WINDOWS_BSOD_MINIDUMPS = {
|
||||
'HKLM': {
|
||||
# Enable small memory dumps
|
||||
r'SYSTEM\CurrentControlSet\Control\CrashControl': (
|
||||
('CrashDumpEnabled', 3, 'DWORD'),
|
||||
)
|
||||
}
|
||||
}
|
||||
REG_WINDOWS_EXPLORER = {
|
||||
'HKLM': {
|
||||
# Allow password sign-in for MS accounts
|
||||
|
|
|
|||
|
|
@ -39,4 +39,5 @@ WINDOWS_BUILDS = {
|
|||
'10.0.22000': '21H2',
|
||||
'10.0.22621': '22H2',
|
||||
'10.0.22631': '23H2',
|
||||
'10.0.26100': '24H2',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
"""WizardKit: ddrescue TUI"""
|
||||
# vim: sts=2 sw=2 ts=2
|
||||
|
||||
import argparse
|
||||
import atexit
|
||||
import datetime
|
||||
import logging
|
||||
|
|
@ -12,8 +13,6 @@ from random import randint
|
|||
|
||||
import pytz
|
||||
|
||||
from docopt import docopt
|
||||
|
||||
from wk import cfg, exe, io, log, std
|
||||
from wk.cfg.ddrescue import DDRESCUE_SPECIFIC_PASS_SETTINGS
|
||||
from wk.clone import menus
|
||||
|
|
@ -29,19 +28,6 @@ from wk.ui import ansi, cli
|
|||
|
||||
# STATIC VARIABLES
|
||||
LOG = logging.getLogger(__name__)
|
||||
DOCSTRING = f'''{cfg.main.KIT_NAME_FULL}: ddrescue TUI
|
||||
|
||||
Usage:
|
||||
ddrescue-tui
|
||||
ddrescue-tui [options] (clone|image) [<source> [<destination>]]
|
||||
ddrescue-tui (-h | --help)
|
||||
|
||||
Options:
|
||||
-h --help Show this page
|
||||
-s --dry-run Print commands to be used instead of running them
|
||||
--force-local-map Skip mounting shares and save map to local drive
|
||||
--start-fresh Ignore previous runs and start new recovery
|
||||
'''
|
||||
DETECT_DRIVES_NOTICE = '''
|
||||
This option will force the drive controllers to rescan for devices.
|
||||
The method used is not 100% reliable and may cause issues. If you see
|
||||
|
|
@ -55,6 +41,42 @@ TIMEZONE = pytz.timezone(cfg.main.LINUX_TIME_ZONE)
|
|||
|
||||
|
||||
# Functions
|
||||
def argparse_helper() -> dict[str, None|bool|str]:
|
||||
"""Helper function to setup and return args, returns dict.
|
||||
|
||||
NOTE: A dict is used to match the legacy code.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
prog='ddrescue-tui',
|
||||
description=f'{cfg.main.KIT_NAME_FULL}: ddrescue TUI',
|
||||
)
|
||||
parser.add_argument('mode', choices=('clone', 'image'), nargs='?')
|
||||
parser.add_argument('source', nargs='?')
|
||||
parser.add_argument('destination', nargs='?')
|
||||
parser.add_argument(
|
||||
'-s', '--dry-run', action='store_true',
|
||||
help='Print commands to be used instead of running them',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--force-local-map', action='store_true',
|
||||
help='Skip mounting shares and save map to local drive',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--start-fresh', action='store_true',
|
||||
help='Ignore previous runs and start new recovery',
|
||||
)
|
||||
args = parser.parse_args()
|
||||
legacy_args = {
|
||||
'clone': args.mode == 'clone',
|
||||
'image': args.mode == 'image',
|
||||
'<source>': args.source,
|
||||
'<destination>': args.destination,
|
||||
'--dry-run': args.dry_run,
|
||||
'--force-local-map': args.force_local_map,
|
||||
'--start-fresh': args.start_fresh,
|
||||
}
|
||||
return legacy_args
|
||||
|
||||
def build_ddrescue_cmd(block_pair, pass_name, settings_menu) -> list[str]:
|
||||
"""Build ddrescue cmd using passed details, returns list."""
|
||||
cmd = ['sudo', 'ddrescue']
|
||||
|
|
@ -273,7 +295,12 @@ def is_missing_source_or_destination(state) -> bool:
|
|||
|
||||
def main() -> None:
|
||||
"""Main function for ddrescue TUI."""
|
||||
args = docopt(DOCSTRING)
|
||||
try:
|
||||
args = argparse_helper()
|
||||
except SystemExit:
|
||||
print('')
|
||||
cli.pause('Press Enter to exit...')
|
||||
raise
|
||||
|
||||
# Log setup
|
||||
log_path = log.format_log_path(log_name='main', sub_dir='ddrescue-TUI')
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ class State():
|
|||
"""Get total size of all block_pairs in bytes, returns int."""
|
||||
return sum(pair.size for pair in self.block_pairs)
|
||||
|
||||
def init_recovery(self, docopt_args: dict[str, Any]) -> None:
|
||||
def init_recovery(self, cli_args: dict[str, Any]) -> None:
|
||||
"""Select source/dest and set env."""
|
||||
cli.clear_screen()
|
||||
disk_menu = menus.disks()
|
||||
|
|
@ -324,10 +324,10 @@ class State():
|
|||
self.ui.set_progress_file(str(self.progress_out))
|
||||
|
||||
# Set mode
|
||||
self.mode = set_mode(docopt_args)
|
||||
self.mode = set_mode(cli_args)
|
||||
|
||||
# Select source
|
||||
self.source = select_disk_obj('source', disk_menu, docopt_args['<source>'])
|
||||
self.source = select_disk_obj('source', disk_menu, cli_args['<source>'])
|
||||
self.update_top_panes()
|
||||
if self.source.trim:
|
||||
cli.print_warning('Source device supports TRIM')
|
||||
|
|
@ -340,12 +340,12 @@ class State():
|
|||
self.destination = select_disk_obj(
|
||||
'destination',
|
||||
disk_menu,
|
||||
docopt_args['<destination>'],
|
||||
cli_args['<destination>'],
|
||||
)
|
||||
self.ui.add_title_pane('Destination', self.destination.name)
|
||||
elif self.mode == 'Image':
|
||||
if docopt_args['<destination>']:
|
||||
self.destination = pathlib.Path(docopt_args['<destination>']).resolve()
|
||||
if cli_args['<destination>']:
|
||||
self.destination = pathlib.Path(cli_args['<destination>']).resolve()
|
||||
else:
|
||||
self.destination = menus.select_path('Destination')
|
||||
self.destination.mkdir(parents=True, exist_ok=True)
|
||||
|
|
@ -370,11 +370,11 @@ class State():
|
|||
self.working_dir = get_working_dir(
|
||||
self.mode,
|
||||
self.destination,
|
||||
force_local=docopt_args['--force-local-map'],
|
||||
force_local=cli_args['--force-local-map'],
|
||||
)
|
||||
|
||||
# Start fresh if requested
|
||||
if docopt_args['--start-fresh']:
|
||||
if cli_args['--start-fresh']:
|
||||
clean_working_dir(self.working_dir)
|
||||
|
||||
# Add block pairs
|
||||
|
|
@ -412,10 +412,10 @@ class State():
|
|||
|
||||
# Prep destination
|
||||
if self.mode == 'Clone':
|
||||
prep_destination(self, source_parts, dry_run=docopt_args['--dry-run'])
|
||||
prep_destination(self, source_parts, dry_run=cli_args['--dry-run'])
|
||||
|
||||
# Safety Checks #2
|
||||
if not docopt_args['--dry-run']:
|
||||
if not cli_args['--dry-run']:
|
||||
for pair in self.block_pairs:
|
||||
pair.safety_check()
|
||||
|
||||
|
|
@ -1051,12 +1051,12 @@ def select_disk_obj(label:str, disk_menu: cli.Menu, disk_path: str) -> hw_disk.D
|
|||
raise std.GenericAbort()
|
||||
|
||||
|
||||
def set_mode(docopt_args) -> str:
|
||||
"""Set mode from docopt_args or user selection, returns str."""
|
||||
if docopt_args['clone']:
|
||||
def set_mode(cli_args) -> str:
|
||||
"""Set mode from cli_args or user selection, returns str."""
|
||||
if cli_args['clone']:
|
||||
return 'Clone'
|
||||
|
||||
if docopt_args['image']:
|
||||
if cli_args['image']:
|
||||
return 'Image'
|
||||
|
||||
# Ask user if necessary
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
"""WizardKit: Hardware diagnostics"""
|
||||
# vim: sts=2 sw=2 ts=2
|
||||
|
||||
import argparse
|
||||
import atexit
|
||||
import logging
|
||||
import os
|
||||
import pathlib
|
||||
import subprocess
|
||||
|
||||
from docopt import docopt
|
||||
|
||||
from wk import cfg, debug, exe, log, std
|
||||
from wk.cfg.hw import STATUS_COLORS
|
||||
from wk.hw import benchmark as hw_benchmark
|
||||
|
|
@ -28,18 +27,6 @@ from wk.ui import ansi, cli, tui
|
|||
|
||||
|
||||
# STATIC VARIABLES
|
||||
DOCSTRING = f'''{cfg.main.KIT_NAME_FULL}: Hardware Diagnostics
|
||||
|
||||
Usage:
|
||||
hw-diags [options]
|
||||
hw-diags (-h | --help)
|
||||
|
||||
Options:
|
||||
-c --cli Force CLI mode
|
||||
-h --help Show this page
|
||||
-q --quick Skip menu and perform a quick check
|
||||
-t --test-mode Run diags in test mode
|
||||
'''
|
||||
LOG = logging.getLogger(__name__)
|
||||
TEST_GROUPS = {
|
||||
# Also used to build the menu options
|
||||
|
|
@ -264,6 +251,36 @@ class State():
|
|||
|
||||
|
||||
# Functions
|
||||
def argparse_helper() -> dict[str, bool]:
|
||||
"""Helper function to setup and return args, returns dict.
|
||||
|
||||
NOTE: A dict is used to match the legacy code.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
prog='hw-diags',
|
||||
description=f'{cfg.main.KIT_NAME_FULL}: Hardware Diagnostics',
|
||||
)
|
||||
parser.add_argument(
|
||||
'-c', '--cli', action='store_true',
|
||||
help='Force CLI mode',
|
||||
)
|
||||
parser.add_argument(
|
||||
'-q', '--quick', action='store_true',
|
||||
help='Skip menu and perform a quick check',
|
||||
)
|
||||
parser.add_argument(
|
||||
'-t', '--test-mode', action='store_true',
|
||||
help='Run diags in test mode',
|
||||
)
|
||||
args = parser.parse_args()
|
||||
legacy_args = {
|
||||
'--cli': args.cli,
|
||||
'--quick': args.quick,
|
||||
'--test-mode': args.test_mode,
|
||||
}
|
||||
return legacy_args
|
||||
|
||||
|
||||
def build_menu(cli_mode=False, quick_mode=False) -> cli.Menu:
|
||||
"""Build main menu, returns wk.ui.cli.Menu."""
|
||||
menu = cli.Menu(title='')
|
||||
|
|
@ -748,7 +765,12 @@ def disk_surface_scan(state: State, test_objects, test_mode=False) -> None:
|
|||
|
||||
def main() -> None:
|
||||
"""Main function for hardware diagnostics."""
|
||||
args = docopt(DOCSTRING)
|
||||
try:
|
||||
args = argparse_helper()
|
||||
except SystemExit:
|
||||
print('')
|
||||
cli.pause('Press Enter to exit...')
|
||||
raise
|
||||
log.update_log_path(dest_name='Hardware-Diagnostics', timestamp=True)
|
||||
|
||||
# Safety check
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ def case_insensitive_search(
|
|||
path = pathlib.Path(path).resolve()
|
||||
given_path = path.joinpath(item)
|
||||
real_path = None
|
||||
regex = fr'^{item}'
|
||||
regex = fr'^{item}$'
|
||||
|
||||
# Quick check
|
||||
if given_path.exists():
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
"""WizardKit: UFD Functions"""
|
||||
# vim: sts=2 sw=2 ts=2
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import math
|
||||
import os
|
||||
|
|
@ -9,8 +10,6 @@ import re
|
|||
import shutil
|
||||
from subprocess import CalledProcessError
|
||||
|
||||
from docopt import docopt
|
||||
|
||||
from wk import io, log
|
||||
from wk.cfg.main import KIT_NAME_FULL, KIT_NAME_SHORT
|
||||
from wk.cfg.ufd import (
|
||||
|
|
@ -29,30 +28,6 @@ from wk.ui import cli as ui
|
|||
|
||||
|
||||
# STATIC VARIABLES
|
||||
DOCSTRING = '''WizardKit: Build UFD
|
||||
|
||||
Usage:
|
||||
build-ufd [options] --ufd-device PATH
|
||||
[--linux PATH]
|
||||
[--main-kit PATH]
|
||||
[--winpe PATH]
|
||||
[--extra-dir PATH]
|
||||
[EXTRA_IMAGES...]
|
||||
build-ufd (-h | --help)
|
||||
|
||||
Options:
|
||||
-e PATH, --extra-dir PATH
|
||||
-k PATH, --main-kit PATH
|
||||
-l PATH, --linux PATH
|
||||
-u PATH, --ufd-device PATH
|
||||
-w PATH, --winpe PATH
|
||||
|
||||
-d --debug Enable debug mode
|
||||
-h --help Show this page
|
||||
-M --use-mbr Use real MBR instead of GPT w/ Protective MBR
|
||||
-F --force Bypass all confirmation messages. USE WITH EXTREME CAUTION!
|
||||
-U --update Don't format device, just update
|
||||
'''
|
||||
LOG = logging.getLogger(__name__)
|
||||
EXTRA_IMAGES_LIST = '/mnt/UFD/arch/extra_images.list'
|
||||
MIB = 1024 ** 2
|
||||
|
|
@ -61,6 +36,54 @@ UFD_LABEL = f'{KIT_NAME_SHORT}_UFD'
|
|||
|
||||
|
||||
# Functions
|
||||
def argparse_helper() -> dict[str, None|bool|str]:
|
||||
"""Helper function to setup and return args, returns dict.
|
||||
|
||||
NOTE: A dict is used to match the legacy code.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
prog='build-ufd',
|
||||
description=f'{KIT_NAME_FULL}: Build UFD',
|
||||
)
|
||||
parser.add_argument('-u', '--ufd-device', required=True)
|
||||
parser.add_argument('-l', '--linux', required=False)
|
||||
parser.add_argument('-e', '--extra-dir', required=False)
|
||||
parser.add_argument('-k', '--main-kit', required=False)
|
||||
parser.add_argument('-w', '--winpe', required=False)
|
||||
parser.add_argument(
|
||||
'-d', '--debug', action='store_true',
|
||||
help='Enable debug mode',
|
||||
)
|
||||
parser.add_argument(
|
||||
'-M', '--use-mbr', action='store_true',
|
||||
help='Use real MBR instead of GPT w/ Protective MBR',
|
||||
)
|
||||
parser.add_argument(
|
||||
'-F', '--force', action='store_true',
|
||||
help='Bypass all confirmation messages. USE WITH EXTREME CAUTION!',
|
||||
)
|
||||
parser.add_argument(
|
||||
'-U', '--update', action='store_true',
|
||||
help="Don't format device, just update",
|
||||
)
|
||||
parser.add_argument(
|
||||
'EXTRA_IMAGES', nargs='*',
|
||||
)
|
||||
args = parser.parse_args()
|
||||
legacy_args = {
|
||||
'--debug': args.debug,
|
||||
'--extra-dir': args.extra_dir,
|
||||
'--force': args.force,
|
||||
'--linux': args.linux,
|
||||
'--main-kit': args.main_kit,
|
||||
'--ufd-device': args.ufd_device,
|
||||
'--update': args.update,
|
||||
'--use-mbr': args.use_mbr,
|
||||
'--winpe': args.winpe,
|
||||
'EXTRA_IMAGES': args.EXTRA_IMAGES,
|
||||
}
|
||||
return legacy_args
|
||||
|
||||
def apply_image(part_path, image_path, hide_macos_boot=True) -> None:
|
||||
"""Apply raw image to dev_path using dd."""
|
||||
cmd = [
|
||||
|
|
@ -93,7 +116,12 @@ def apply_image(part_path, image_path, hide_macos_boot=True) -> None:
|
|||
|
||||
def build_ufd() -> None:
|
||||
"""Build UFD using selected sources."""
|
||||
args = docopt(DOCSTRING)
|
||||
try:
|
||||
args = argparse_helper()
|
||||
except SystemExit:
|
||||
print('')
|
||||
ui.pause('Press Enter to exit...')
|
||||
raise
|
||||
if args['--debug']:
|
||||
log.enable_debug_mode()
|
||||
if args['--update'] and args['EXTRA_IMAGES']:
|
||||
|
|
@ -147,6 +175,13 @@ def build_ufd() -> None:
|
|||
dev_path=ufd_dev,
|
||||
label=UFD_LABEL,
|
||||
)
|
||||
try_print.run(
|
||||
message='Hiding extra partition(s)...',
|
||||
function=hide_extra_partitions,
|
||||
dev_path=ufd_dev,
|
||||
num_parts=len(extra_images),
|
||||
use_mbr=args['--use-mbr'],
|
||||
)
|
||||
ufd_dev_first_partition = find_first_partition(ufd_dev)
|
||||
|
||||
# Mount UFD
|
||||
|
|
@ -350,7 +385,7 @@ def create_table(dev_path, use_mbr=False, images=None) -> None:
|
|||
for part, real in zip(part_sizes, images):
|
||||
end = start + real
|
||||
cmd.append(
|
||||
f'mkpart primary {"fat32" if start==MIB else "hfs+"} {start}B {end-1}B',
|
||||
f'mkpart primary "fat32" {start}B {end-1}B',
|
||||
)
|
||||
start += part
|
||||
|
||||
|
|
@ -436,6 +471,17 @@ def hide_items(ufd_dev_first_partition, items) -> None:
|
|||
run_program(cmd, shell=True, check=False)
|
||||
|
||||
|
||||
def hide_extra_partitions(dev_path, num_parts, use_mbr) -> None:
|
||||
if use_mbr:
|
||||
# Bail early
|
||||
return
|
||||
|
||||
for part_id in range(num_parts):
|
||||
part_id += 2 # Extra partitions start at 2
|
||||
cmd = ['sfdisk', '--part-attrs', dev_path, str(part_id), 'RequiredPartition,62,63']
|
||||
run_program(cmd, check=False)
|
||||
|
||||
|
||||
def install_syslinux_to_dev(ufd_dev, use_mbr) -> None:
|
||||
"""Install Syslinux to UFD (dev)."""
|
||||
cmd = [
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import logging
|
|||
import os
|
||||
import pathlib
|
||||
import platform
|
||||
import re
|
||||
|
||||
from contextlib import suppress
|
||||
from typing import Any
|
||||
|
|
@ -74,9 +73,6 @@ KNOWN_HIVE_NAMES = {
|
|||
RAM_OK = 5.5 * 1024**3 # ~6 GiB assuming a bit of shared memory
|
||||
RAM_WARNING = 3.5 * 1024**3 # ~4 GiB assuming a bit of shared memory
|
||||
REG_MSISERVER = r'HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\MSIServer'
|
||||
REGEX_4K_ALIGNMENT = re.compile(
|
||||
r'^(?P<description>.*?)\s+(?P<size>\d+)\s+(?P<offset>\d+)',
|
||||
)
|
||||
SLMGR = pathlib.Path(f'{os.environ.get("SYSTEMROOT")}/System32/slmgr.vbs')
|
||||
SYSTEMDRIVE = os.environ.get('SYSTEMDRIVE')
|
||||
|
||||
|
|
@ -169,29 +165,23 @@ def set_timezone(zone) -> None:
|
|||
# Info Functions
|
||||
def check_4k_alignment(show_alert=False) -> list[str]:
|
||||
"""Check if all partitions are 4K aligned, returns list."""
|
||||
cmd = ['WMIC', 'partition', 'get', 'Caption,Size,StartingOffset']
|
||||
script_path = find_kit_dir('Scripts').joinpath('check_partition_alignment.ps1')
|
||||
cmd = ['PowerShell', '-ExecutionPolicy', 'Bypass', '-File', script_path]
|
||||
json_data = get_json_from_command(cmd)
|
||||
report = []
|
||||
show_alert = False
|
||||
|
||||
# Check offsets
|
||||
proc = run_program(cmd)
|
||||
for line in proc.stdout.splitlines():
|
||||
line = line.strip()
|
||||
if not line or not line.startswith('Disk'):
|
||||
continue
|
||||
match = REGEX_4K_ALIGNMENT.match(line)
|
||||
if not match:
|
||||
LOG.error('Failed to parse partition info for: %s', line)
|
||||
continue
|
||||
if int(match.group('offset')) % 4096 != 0:
|
||||
report.append(
|
||||
ansi.color_string(
|
||||
f'{match.group("description")}'
|
||||
f' ({bytes_to_string(match.group("size"), decimals=1)})'
|
||||
,
|
||||
'RED'
|
||||
)
|
||||
)
|
||||
for part in json_data:
|
||||
if part['StartingOffset'] % 4096 != 0:
|
||||
report.append(
|
||||
ansi.color_string(
|
||||
f'{part["Name"]}'
|
||||
f' ({bytes_to_string(part["Size"], decimals=1)})'
|
||||
,
|
||||
'RED'
|
||||
)
|
||||
)
|
||||
|
||||
# Show alert
|
||||
if show_alert:
|
||||
|
|
@ -203,6 +193,7 @@ def check_4k_alignment(show_alert=False) -> list[str]:
|
|||
0,
|
||||
ansi.color_string('One or more partitions not 4K aligned', 'YELLOW'),
|
||||
)
|
||||
report.sort()
|
||||
return report
|
||||
|
||||
|
||||
|
|
@ -224,45 +215,52 @@ def export_bitlocker_info() -> None:
|
|||
_f.write(f'{proc.stdout}\n\n')
|
||||
|
||||
|
||||
def get_installed_antivirus() -> list[str]:
|
||||
"""Get list of installed antivirus programs, returns list."""
|
||||
cmd = [
|
||||
'WMIC', r'/namespace:\\root\SecurityCenter2',
|
||||
'path', 'AntivirusProduct',
|
||||
'get', 'displayName', '/value',
|
||||
]
|
||||
products = []
|
||||
report = []
|
||||
def get_installed_antivirus() -> dict[str, dict]:
|
||||
"""Get installed antivirus products and their status, returns dict."""
|
||||
script_path = find_kit_dir('Scripts').joinpath('check_av.ps1')
|
||||
cmd = ['PowerShell', '-ExecutionPolicy', 'Bypass', '-File', script_path]
|
||||
json_data = get_json_from_command(cmd)
|
||||
products = {}
|
||||
|
||||
# Get list of products
|
||||
proc = run_program(cmd)
|
||||
for line in proc.stdout.splitlines():
|
||||
line = line.strip()
|
||||
if '=' in line:
|
||||
products.append(line.split('=')[1])
|
||||
# Check state and build dict
|
||||
for p in json_data:
|
||||
name = p['displayName']
|
||||
state = p['productState']
|
||||
enabled = ((state>>8) & 0x11) in (0x10, 0x11) # middle two hex digits
|
||||
outdated = (state & 0x11) != 0x00 # last two hex digits
|
||||
products[name] = {
|
||||
'Enabled': enabled,
|
||||
'Outdated': outdated,
|
||||
'State': state,
|
||||
}
|
||||
return products
|
||||
|
||||
|
||||
def list_installed_antivirus() -> list[str]:
|
||||
"""Get list of installed antivirus programs, returns list."""
|
||||
products = get_installed_antivirus()
|
||||
products_active = []
|
||||
products_inactive = []
|
||||
|
||||
# Check product(s) status
|
||||
for product in sorted(products):
|
||||
cmd = [
|
||||
'WMIC', r'/namespace:\\root\SecurityCenter2',
|
||||
'path', 'AntivirusProduct',
|
||||
'where', f'displayName="{product}"',
|
||||
'get', 'productState', '/value',
|
||||
]
|
||||
proc = run_program(cmd)
|
||||
state = proc.stdout.split('=')[1]
|
||||
state = hex(int(state))
|
||||
if str(state)[3:5] not in ['10', '11']:
|
||||
report.append(ansi.color_string(f'[Disabled] {product}', 'YELLOW'))
|
||||
for name, details in products.items():
|
||||
if details['Enabled']:
|
||||
if details['Outdated']:
|
||||
products_active.append(ansi.color_string(f'{name} [OUTDATED]', 'YELLOW'))
|
||||
else:
|
||||
products_active.append(name)
|
||||
else:
|
||||
report.append(product)
|
||||
# Disabled
|
||||
products_inactive.append(ansi.color_string(f'[Disabled] {name}', 'YELLOW'))
|
||||
|
||||
# Final check
|
||||
if not report:
|
||||
report.append(ansi.color_string('No products detected', 'RED'))
|
||||
if not (products_active or products_inactive):
|
||||
products_inactive.append(ansi.color_string('No products detected', 'RED'))
|
||||
|
||||
# Done
|
||||
return report
|
||||
products_active.sort()
|
||||
products_inactive.sort()
|
||||
return products_active + products_inactive
|
||||
|
||||
|
||||
def get_installed_ram(as_list=False, raise_exceptions=False) -> list | str:
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ from wk.cfg.setup import (
|
|||
REG_WINDOWS_EXPLORER,
|
||||
REG_OPEN_SHELL_SETTINGS,
|
||||
REG_OPEN_SHELL_LOW_POWER_IDLE,
|
||||
REG_WINDOWS_BSOD_MINIDUMPS,
|
||||
UBLOCK_ORIGIN_URLS,
|
||||
)
|
||||
from wk.exe import kill_procs, run_program, popen_program
|
||||
|
|
@ -36,7 +37,6 @@ from wk.os.win import (
|
|||
OS_VERSION,
|
||||
activate_with_bios,
|
||||
check_4k_alignment,
|
||||
get_installed_antivirus,
|
||||
get_installed_ram,
|
||||
get_os_activation,
|
||||
get_os_name,
|
||||
|
|
@ -45,6 +45,7 @@ from wk.os.win import (
|
|||
get_volume_usage,
|
||||
is_activated,
|
||||
is_secure_boot_enabled,
|
||||
list_installed_antivirus,
|
||||
reg_set_value,
|
||||
reg_write_settings,
|
||||
stop_service,
|
||||
|
|
@ -520,7 +521,7 @@ def auto_show_4k_alignment_check() -> None:
|
|||
|
||||
def auto_show_installed_antivirus() -> None:
|
||||
"""Display installed antivirus."""
|
||||
TRY_PRINT.run('Virus Protection...', get_installed_antivirus)
|
||||
TRY_PRINT.run('Virus Protection...', list_installed_antivirus)
|
||||
|
||||
|
||||
def auto_show_installed_ram() -> None:
|
||||
|
|
@ -629,14 +630,14 @@ def disable_chrome_notifications() -> None:
|
|||
|
||||
def disable_password_expiration() -> None:
|
||||
"""Disable password expiration for all users."""
|
||||
cmd = ['wmic', 'UserAccount', 'set', 'PasswordExpires=False']
|
||||
script_path = find_kit_dir('Scripts').joinpath('disable_password_expiration.ps1')
|
||||
cmd = ['PowerShell', '-ExecutionPolicy', 'Bypass', '-File', script_path]
|
||||
run_program(cmd)
|
||||
|
||||
|
||||
def enable_bsod_minidumps() -> None:
|
||||
"""Enable saving minidumps during BSoDs."""
|
||||
cmd = ['wmic', 'RECOVEROS', 'set', 'DebugInfoType', '=', '3']
|
||||
run_program(cmd)
|
||||
reg_write_settings(REG_WINDOWS_BSOD_MINIDUMPS)
|
||||
|
||||
|
||||
def enable_ublock_origin() -> None:
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ function copy_live_env() {
|
|||
rsync -aI "$ROOT_DIR/scripts/" "$PROFILE_DIR/airootfs/usr/local/bin/"
|
||||
|
||||
echo "Copying WizardKit UFD files..."
|
||||
rsync -aI "$ROOT_DIR/setup/ufd/" "$PROFILE_DIR/airootfs/usr/share/WizardKit/"
|
||||
rsync -aI --exclude="macOS-boot-icon.tar" "$ROOT_DIR/setup/ufd/" "$PROFILE_DIR/airootfs/usr/share/WizardKit/"
|
||||
tar xaf "$ROOT_DIR/setup/ufd/macOS-boot-icon.tar" -C "$PROFILE_DIR/airootfs/usr/share/WizardKit"
|
||||
cp "$ROOT_DIR/images/rEFInd.png" "$PROFILE_DIR/airootfs/usr/share/WizardKit/EFI/Boot/rEFInd.png"
|
||||
cp "$ROOT_DIR/images/Syslinux.png" "$PROFILE_DIR/airootfs/usr/share/WizardKit/syslinux/syslinux.png"
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,6 @@
|
|||
setlocal EnableDelayedExpansion
|
||||
title WizardKit: Build Tool
|
||||
call :CheckFlags %*
|
||||
rem TODO: Remove warning
|
||||
echo "Windows PE build is currently under development"
|
||||
echo " Proceeding will likely result in errors so be warned"
|
||||
pause
|
||||
call :CheckElevation || goto Exit
|
||||
call :FindKitsRoot || goto ErrorKitNotFound
|
||||
|
||||
|
|
@ -19,14 +15,8 @@ set "dandi_set_env=%adk_root%\Deployment Tools\DandISetEnv.bat"
|
|||
if not exist "%dandi_set_env%" (goto ErrorKitNotFound)
|
||||
call "%dandi_set_env%" || goto ErrorUnknown
|
||||
|
||||
:EnsureCRLF
|
||||
rem Rewrite main.py using PowerShell to have CRLF/`r`n lineendings
|
||||
set "script=%~dp0\.bin\Scripts\borrowed\set-eol.ps1"
|
||||
set "main=%~dp0\.bin\Scripts\settings\main.py"
|
||||
powershell -executionpolicy bypass -noprofile -file %script% -lineEnding win -file %main% || goto ErrorUnknown
|
||||
|
||||
:Launch
|
||||
set "script=%~dp0\.bin\Scripts\build_pe.ps1"
|
||||
set "script=%~dp0\pe\build_pe.ps1"
|
||||
powershell -executionpolicy bypass -noprofile -file %script% || goto ErrorUnknown
|
||||
goto Exit
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ picom
|
|||
pipes.sh
|
||||
pv
|
||||
python
|
||||
python-docopt
|
||||
python-prompt_toolkit
|
||||
python-psutil
|
||||
python-pytz
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ elif [[ "${OS_VERSION:0:5}" == "10.15" ]]; then
|
|||
fi
|
||||
|
||||
# Python3 Packages
|
||||
pip3 install docopt mysql-connector NumPy psutil pylint pytz requests
|
||||
pip3 install mysql-connector NumPy psutil pylint pytz requests
|
||||
|
||||
git clone https://github.com/yuyichao/gnuplot-py gnuplot-py
|
||||
cd gnuplot-py
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
# WizardKit: WinPE #
|
||||
|
||||
_Under construction_
|
||||
Requires ADK for Windows 10, version 2004
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
[LaunchApp]
|
||||
[LaunchApps]
|
||||
wpeinit
|
||||
wpeutil updatebootinfo
|
||||
cd /d "%SystemDrive%\.bin"
|
||||
"%SystemDrive%\.bin\ConEmu\ConEmu.exe", /cmd cmd /k cd "%SystemDrive%\.bin" & python "%SystemDrive%\.bin\Scripts\winpe_root_menu.py"
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
@echo off
|
||||
python "%SystemDrive%\.bin\Scripts\winpe_root_menu.py"
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,56 +1,56 @@
|
|||
<?xml version="1.0" encoding="Windows-1252" ?>
|
||||
<NotepadPlus>
|
||||
<FindHistory nbMaxFindHistoryPath="10" nbMaxFindHistoryFilter="10" nbMaxFindHistoryFind="10" nbMaxFindHistoryReplace="10" matchWord="no" matchCase="no" wrap="yes" directionDown="yes" fifRecuisive="yes" fifInHiddenFolder="no" dlgAlwaysVisible="no" fifFilterFollowsDoc="no" fifFolderFollowsDoc="no" searchMode="0" transparencyMode="1" transparency="150" dotMatchesNewline="no" />
|
||||
<History nbMaxFile="10" inSubMenu="no" customLength="-1" />
|
||||
<GUIConfigs>
|
||||
<GUIConfig name="ToolBar" visible="no">standard</GUIConfig>
|
||||
<GUIConfig name="StatusBar">hide</GUIConfig>
|
||||
<GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" doubleClick2Close="no" vertical="no" multiLine="no" hide="no" quitOnEmpty="no" />
|
||||
<GUIConfig name="ScintillaViewsSplitter">vertical</GUIConfig>
|
||||
<GUIConfig name="UserDefineDlg" position="undocked">hide</GUIConfig>
|
||||
<GUIConfig name="TabSetting" replaceBySpace="yes" size="4" />
|
||||
<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20080426">no</GUIConfig>
|
||||
<GUIConfig name="Auto-detection">yes</GUIConfig>
|
||||
<GUIConfig name="CheckHistoryFiles">no</GUIConfig>
|
||||
<GUIConfig name="TrayIcon">no</GUIConfig>
|
||||
<GUIConfig name="MaitainIndent">yes</GUIConfig>
|
||||
<GUIConfig name="TagsMatchHighLight" TagAttrHighLight="yes" HighLightNonHtmlZone="no">yes</GUIConfig>
|
||||
<GUIConfig name="RememberLastSession">no</GUIConfig>
|
||||
<GUIConfig name="DetectEncoding">yes</GUIConfig>
|
||||
<GUIConfig name="NewDocDefaultSettings" format="0" encoding="4" lang="0" codepage="-1" openAnsiAsUTF8="yes" />
|
||||
<GUIConfig name="langsExcluded" gr0="0" gr1="0" gr2="0" gr3="0" gr4="0" gr5="0" gr6="0" gr7="0" langMenuCompact="yes" />
|
||||
<GUIConfig name="Print" lineNumber="yes" printOption="3" headerLeft="" headerMiddle="" headerRight="" footerLeft="" footerMiddle="" footerRight="" headerFontName="" headerFontStyle="0" headerFontSize="0" footerFontName="" footerFontStyle="0" footerFontSize="0" margeLeft="0" margeRight="0" margeTop="0" margeBottom="0" />
|
||||
<GUIConfig name="Backup" action="0" useCustumDir="no" dir="" isSnapshotMode="no" snapshotBackupTiming="7000" />
|
||||
<GUIConfig name="TaskList">yes</GUIConfig>
|
||||
<GUIConfig name="MRU">yes</GUIConfig>
|
||||
<GUIConfig name="URL">2</GUIConfig>
|
||||
<GUIConfig name="globalOverride" fg="no" bg="no" font="yes" fontSize="no" bold="no" italic="no" underline="no" />
|
||||
<GUIConfig name="auto-completion" autoCAction="3" triggerFromNbChar="1" autoCIgnoreNumbers="yes" funcParams="yes" />
|
||||
<GUIConfig name="auto-insert" parentheses="no" brackets="no" curlyBrackets="no" quotes="no" doubleQuotes="no" htmlXmlTag="no" />
|
||||
<GUIConfig name="sessionExt"></GUIConfig>
|
||||
<GUIConfig name="workspaceExt"></GUIConfig>
|
||||
<GUIConfig name="MenuBar">hide</GUIConfig>
|
||||
<GUIConfig name="Caret" width="1" blinkRate="600" />
|
||||
<GUIConfig name="ScintillaGlobalSettings" enableMultiSelection="no" />
|
||||
<GUIConfig name="openSaveDir" value="0" defaultDirPath="" />
|
||||
<GUIConfig name="titleBar" short="no" />
|
||||
<GUIConfig name="wordCharList" useDefault="yes" charsAdded="" />
|
||||
<GUIConfig name="delimiterSelection" leftmostDelimiter="40" rightmostDelimiter="41" delimiterSelectionOnEntireDocument="no" />
|
||||
<GUIConfig name="multiInst" setting="0" />
|
||||
<GUIConfig name="MISC" fileSwitcherWithoutExtColumn="no" backSlashIsEscapeCharacterForSql="yes" newStyleSaveDlg="no" isFolderDroppedOpenFiles="no" />
|
||||
<GUIConfig name="searchEngine" searchEngineChoice="1" searchEngineCustom="" />
|
||||
<GUIConfig name="SmartHighLight" matchCase="no" wholeWordOnly="no" useFindSettings="no" onAnotherView="no">yes</GUIConfig>
|
||||
<GUIConfig name="ScintillaPrimaryView" lineNumberMargin="show" bookMarkMargin="show" indentGuideLine="show" folderMarkStyle="box" lineWrapMethod="aligned" currentLineHilitingShow="show" scrollBeyondLastLine="no" disableAdvancedScrolling="no" wrapSymbolShow="hide" Wrap="no" borderEdge="yes" edge="no" edgeNbColumn="80" zoom="0" zoom2="0" whiteSpaceShow="hide" eolShow="hide" borderWidth="2" smoothFont="no" />
|
||||
<GUIConfig name="DockingManager" leftWidth="200" rightWidth="200" topHeight="200" bottomHeight="200">
|
||||
<ActiveTabs cont="0" activeTab="-1" />
|
||||
<ActiveTabs cont="1" activeTab="-1" />
|
||||
<ActiveTabs cont="2" activeTab="-1" />
|
||||
<ActiveTabs cont="3" activeTab="-1" />
|
||||
</GUIConfig>
|
||||
</GUIConfigs>
|
||||
<ProjectPanels>
|
||||
<ProjectPanel id="0" workSpaceFile="" />
|
||||
<ProjectPanel id="1" workSpaceFile="" />
|
||||
<ProjectPanel id="2" workSpaceFile="" />
|
||||
</ProjectPanels>
|
||||
</NotepadPlus>
|
||||
<?xml version="1.0" encoding="Windows-1252" ?>
|
||||
<NotepadPlus>
|
||||
<FindHistory nbMaxFindHistoryPath="10" nbMaxFindHistoryFilter="10" nbMaxFindHistoryFind="10" nbMaxFindHistoryReplace="10" matchWord="no" matchCase="no" wrap="yes" directionDown="yes" fifRecuisive="yes" fifInHiddenFolder="no" dlgAlwaysVisible="no" fifFilterFollowsDoc="no" fifFolderFollowsDoc="no" searchMode="0" transparencyMode="1" transparency="150" dotMatchesNewline="no" />
|
||||
<History nbMaxFile="10" inSubMenu="no" customLength="-1" />
|
||||
<GUIConfigs>
|
||||
<GUIConfig name="ToolBar" visible="no">standard</GUIConfig>
|
||||
<GUIConfig name="StatusBar">hide</GUIConfig>
|
||||
<GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" doubleClick2Close="no" vertical="no" multiLine="no" hide="no" quitOnEmpty="no" />
|
||||
<GUIConfig name="ScintillaViewsSplitter">vertical</GUIConfig>
|
||||
<GUIConfig name="UserDefineDlg" position="undocked">hide</GUIConfig>
|
||||
<GUIConfig name="TabSetting" replaceBySpace="yes" size="4" />
|
||||
<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20080426">no</GUIConfig>
|
||||
<GUIConfig name="Auto-detection">yes</GUIConfig>
|
||||
<GUIConfig name="CheckHistoryFiles">no</GUIConfig>
|
||||
<GUIConfig name="TrayIcon">no</GUIConfig>
|
||||
<GUIConfig name="MaitainIndent">yes</GUIConfig>
|
||||
<GUIConfig name="TagsMatchHighLight" TagAttrHighLight="yes" HighLightNonHtmlZone="no">yes</GUIConfig>
|
||||
<GUIConfig name="RememberLastSession">no</GUIConfig>
|
||||
<GUIConfig name="DetectEncoding">yes</GUIConfig>
|
||||
<GUIConfig name="NewDocDefaultSettings" format="0" encoding="4" lang="0" codepage="-1" openAnsiAsUTF8="yes" />
|
||||
<GUIConfig name="langsExcluded" gr0="0" gr1="0" gr2="0" gr3="0" gr4="0" gr5="0" gr6="0" gr7="0" langMenuCompact="yes" />
|
||||
<GUIConfig name="Print" lineNumber="yes" printOption="3" headerLeft="" headerMiddle="" headerRight="" footerLeft="" footerMiddle="" footerRight="" headerFontName="" headerFontStyle="0" headerFontSize="0" footerFontName="" footerFontStyle="0" footerFontSize="0" margeLeft="0" margeRight="0" margeTop="0" margeBottom="0" />
|
||||
<GUIConfig name="Backup" action="0" useCustumDir="no" dir="" isSnapshotMode="no" snapshotBackupTiming="7000" />
|
||||
<GUIConfig name="TaskList">yes</GUIConfig>
|
||||
<GUIConfig name="MRU">yes</GUIConfig>
|
||||
<GUIConfig name="URL">2</GUIConfig>
|
||||
<GUIConfig name="globalOverride" fg="no" bg="no" font="yes" fontSize="no" bold="no" italic="no" underline="no" />
|
||||
<GUIConfig name="auto-completion" autoCAction="3" triggerFromNbChar="1" autoCIgnoreNumbers="yes" funcParams="yes" />
|
||||
<GUIConfig name="auto-insert" parentheses="no" brackets="no" curlyBrackets="no" quotes="no" doubleQuotes="no" htmlXmlTag="no" />
|
||||
<GUIConfig name="sessionExt"></GUIConfig>
|
||||
<GUIConfig name="workspaceExt"></GUIConfig>
|
||||
<GUIConfig name="MenuBar">hide</GUIConfig>
|
||||
<GUIConfig name="Caret" width="1" blinkRate="600" />
|
||||
<GUIConfig name="ScintillaGlobalSettings" enableMultiSelection="no" />
|
||||
<GUIConfig name="openSaveDir" value="0" defaultDirPath="" />
|
||||
<GUIConfig name="titleBar" short="no" />
|
||||
<GUIConfig name="wordCharList" useDefault="yes" charsAdded="" />
|
||||
<GUIConfig name="delimiterSelection" leftmostDelimiter="40" rightmostDelimiter="41" delimiterSelectionOnEntireDocument="no" />
|
||||
<GUIConfig name="multiInst" setting="0" />
|
||||
<GUIConfig name="MISC" fileSwitcherWithoutExtColumn="no" backSlashIsEscapeCharacterForSql="yes" newStyleSaveDlg="no" isFolderDroppedOpenFiles="no" />
|
||||
<GUIConfig name="searchEngine" searchEngineChoice="1" searchEngineCustom="" />
|
||||
<GUIConfig name="SmartHighLight" matchCase="no" wholeWordOnly="no" useFindSettings="no" onAnotherView="no">yes</GUIConfig>
|
||||
<GUIConfig name="ScintillaPrimaryView" lineNumberMargin="show" bookMarkMargin="show" indentGuideLine="show" folderMarkStyle="box" lineWrapMethod="aligned" currentLineHilitingShow="show" scrollBeyondLastLine="no" disableAdvancedScrolling="no" wrapSymbolShow="hide" Wrap="no" borderEdge="yes" edge="no" edgeNbColumn="80" zoom="0" zoom2="0" whiteSpaceShow="hide" eolShow="hide" borderWidth="2" smoothFont="no" />
|
||||
<GUIConfig name="DockingManager" leftWidth="200" rightWidth="200" topHeight="200" bottomHeight="200">
|
||||
<ActiveTabs cont="0" activeTab="-1" />
|
||||
<ActiveTabs cont="1" activeTab="-1" />
|
||||
<ActiveTabs cont="2" activeTab="-1" />
|
||||
<ActiveTabs cont="3" activeTab="-1" />
|
||||
</GUIConfig>
|
||||
</GUIConfigs>
|
||||
<ProjectPanels>
|
||||
<ProjectPanel id="0" workSpaceFile="" />
|
||||
<ProjectPanel id="1" workSpaceFile="" />
|
||||
<ProjectPanel id="2" workSpaceFile="" />
|
||||
</ProjectPanels>
|
||||
</NotepadPlus>
|
||||
File diff suppressed because it is too large
Load diff
6
setup/pe/additions/Windows/System32/Winpeshl.ini
Normal file
6
setup/pe/additions/Windows/System32/Winpeshl.ini
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[LaunchApp]
|
||||
[LaunchApps]
|
||||
wpeinit
|
||||
wpeutil InitializeNetwork
|
||||
wpeutil UpdateBootInfo
|
||||
"%SystemDrive%\Program Files\ConEmu\ConEmu64.exe", /cmd cmd
|
||||
5
setup/pe/additions/Windows/System32/custom.doskey
Normal file
5
setup/pe/additions/Windows/System32/custom.doskey
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
notepad="%ProgramFiles%\NotepadPlusPlus\notepad++.exe" $*
|
||||
poweroff=wpeutil shutdown
|
||||
reboot=wpeutil reboot
|
||||
restart=wpeutil reboot
|
||||
shutdown=wpeutil shutdown
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
[CPU-Z]
|
||||
VERSION=1.7.7.0
|
||||
TextFontName=
|
||||
TextFontSize=14
|
||||
TextFontColor=000080
|
||||
LabelFontName=
|
||||
LabelFontSize=14
|
||||
ACPI=1
|
||||
PCI=1
|
||||
MaxPCIBus=256
|
||||
DMI=1
|
||||
Sensor=1
|
||||
SMBus=1
|
||||
Display=1
|
||||
UseDisplayAPI=1
|
||||
BusClock=1
|
||||
Chipset=1
|
||||
SPD=1
|
||||
XOC=0
|
||||
CheckUpdates=0
|
||||
|
|
@ -1,671 +0,0 @@
|
|||
[Benchmark_CPU]
|
||||
Intel Pentium-100=707
|
||||
Intel Pentium-120/Notebook=835
|
||||
Intel Pentium-166/QDI=1380
|
||||
Cyrix 6x86MX-PR300=1411
|
||||
AMD-K6-166/QDI=1482
|
||||
Intel Pentium MMX-200=1484
|
||||
Cyrix MII-PR333=1518
|
||||
Intel Mobile Pentium MMX-233=1642
|
||||
Intel Pentium Pro-166 Dual CPU=1679
|
||||
AMD-K6-200/DTK=1777
|
||||
AMD-K6-200/QDI=1778
|
||||
Intel Pentium Pro-200=1944
|
||||
AMD-K6-233/DTK=2067
|
||||
Intel P2-233/Siemens=2350
|
||||
VIA Cyrix III 533/133=2362
|
||||
Intel Celeron-266/BXmaster=2586
|
||||
Intel P2-266/Siemens=2603
|
||||
AMD-K6-2-300/PCChips M577=2655
|
||||
Intel Celeron 300=2883
|
||||
Intel Celeron-300/PCChips=2922
|
||||
AMD-K6-2-350/FIC=3092
|
||||
AMD-K6-III-400=3524
|
||||
AMD-K6-III-400/FIC VA-503A=3557
|
||||
Intel Celeron-366/BXmaster=3718
|
||||
Intel P2-400/Siemens=3886
|
||||
Intel Celeron-400/BXmaster=3890
|
||||
AMD-K6-2-450/FIC=3964
|
||||
AMD-K6-III-448/FIC VA-503A=3975
|
||||
AMD-K6-III-450=3978
|
||||
Intel Mobile P2-400/Scenic=4047
|
||||
Intel Celeron-413/BXmaster=4175
|
||||
Intel Celeron-433=4219
|
||||
Intel P3-450/CC820=4363
|
||||
Intel P3-450/Siemens=4372
|
||||
Intel Celeron-450=4555
|
||||
Intel Celeron-300A@467=4686
|
||||
Intel Celeron-466/BXmaster=4789
|
||||
Intel P3-500/GA-6BXDS=5021
|
||||
Intel Pentium III Xeon-550=5299
|
||||
Intel Celeron-525/BXmaster=5314
|
||||
Intel P3-550/Siemens=5543
|
||||
Intel Celeron-550/BXmaster=5579
|
||||
Intel Celeron-575/BXmaster=5845
|
||||
Intel Celeron-616/BXmaster=5999
|
||||
Intel P3-617/GA-BX2000=6241
|
||||
AMD Athlon-600/AMD-750=6303
|
||||
AMD Duron-600/KT133=6436
|
||||
Intel P3-650/BX=6497
|
||||
AMD Athlon-650/KX133=6749
|
||||
AMD Duron-650/KT133=6971
|
||||
Intel P3-700/BX=7013
|
||||
AMD Athlon-700/KX133=7185
|
||||
AMD Duron-700/KT133=7507
|
||||
Intel Celeron-815/BXmaster=7985
|
||||
AMD Athlon-750/KT133=8085
|
||||
AMD Athlon-800/AMD-750=8286
|
||||
AMD Duron-800/KT133=8580
|
||||
Intel P3-650@870/BX=8675
|
||||
AMD Duron-850/KT133=9120
|
||||
Intel P3-650@917/BX=9175
|
||||
AMD Duron-900/KT133=9654
|
||||
AMD Duron-928 (9x103)=9952
|
||||
Intel Celeron-566@1010=10115
|
||||
VIA Antaur-1000=6108
|
||||
VIA C3-1333=7601
|
||||
AMD Duron-950/KT133=10190
|
||||
AMD Athlon-1000/KT133=10734
|
||||
AMD Athlon-1200/KT133=12949
|
||||
AMD Athlon XP 1500+/KT133=14297
|
||||
AMD Athlon XP 2000+/KT133A=17691
|
||||
AMD Athlon XP 2200+/KT133A=19490
|
||||
AMD Athlon XP-M 2500+/KM400=19590
|
||||
AMD Athlon XP-M 3000+/SiS748=23391
|
||||
Intel P3-1000/i815=10381
|
||||
Intel P4-1600=6636
|
||||
Intel P4-1800=7445
|
||||
Intel P4-2000=8272
|
||||
Intel P4-2500=11051
|
||||
Intel Pentium-M ULV-1000=10515
|
||||
Intel Pentium-M-1300=13590
|
||||
Intel Pentium-M-1600=16856
|
||||
Intel Pentium-M 735=16958
|
||||
Intel Pentium-M 755=20008
|
||||
Intel Pentium-M 770=21163
|
||||
Intel P4-2800(noHT)/i875P=12399
|
||||
Intel P4-3066(noHT)/i845PE=13479
|
||||
Intel P4-3000E(noHT)/i915P=22136
|
||||
Intel P4-3000 530 (HT)=34013
|
||||
Intel P4-3200E(noHT)/i875P=23446
|
||||
Intel P4-3600E(noHT)/i925X=26424
|
||||
Intel Xeon-3800(HT)=55028
|
||||
AMD Athlon64 3200+=23814
|
||||
AMD Athlon64 3800+=28731
|
||||
AMD Athlon64 FX-53=28727
|
||||
AMD Opteron 248=25920
|
||||
AMD Turion64 ML-34+=18520
|
||||
AMD Turion64 X2 TL-60=47697
|
||||
AMD Athlon 64 X2 4400+=52867
|
||||
Intel Core Duo T2600 (1core)=20293
|
||||
Intel Core Duo T2600 (2core)=40849
|
||||
Intel Core 2 Duo E6700=51765
|
||||
Intel Core 2 Duo T7400=53238
|
||||
Transmeta Crusoe TM5800-1000=6382
|
||||
2xIntel Xeon 5150/5000P=131832
|
||||
4xIntel Xeon MP 7040=180052
|
||||
Intel Core 2 Extreme QX6700=129908
|
||||
AMD Phenom 9500=103687
|
||||
Intel Atom 230=15438
|
||||
Intel Core i5-520M=94834
|
||||
Intel Core i7-860=180329
|
||||
Intel Core i7-820QM=123279
|
||||
Intel Core i7-980X=347501
|
||||
Intel Core i5-2520M=111448
|
||||
Intel Core i7-3820=265424
|
||||
|
||||
[Benchmark_FPU]
|
||||
Intel Pentium-100=1109
|
||||
VIA Cyrix III 533/133=1327
|
||||
Intel Pentium 120/Notebook=1350
|
||||
Intel Pentium Pro-166 Dual CPU=1663
|
||||
Intel Pentium Pro-200=1934
|
||||
Cyrix 6x86MX-PR300=2304
|
||||
Intel P2-233/Siemens=2323
|
||||
AMD-K6-166/QDI=2533
|
||||
Cyrix MII-PR333=2585
|
||||
Intel Celeron-266/BXmaster=2630
|
||||
Intel Mobile Pentium MMX-233=2647
|
||||
Intel P2-266/Siemens=2662
|
||||
Intel Celeron-300=2862
|
||||
AMD-K6-200/DTK=2999
|
||||
AMD-K6-200/QDI=3041
|
||||
AMD-K6-233/DTK=3492
|
||||
Intel Celeron-366/BXmaster=3650
|
||||
Intel P2-400/Siemens=3968
|
||||
Intel Celeron-400/BXmaster=3972
|
||||
Intel Mobile P2-400/Scenic=3973
|
||||
Intel Celeron-413/BXmaster=4097
|
||||
Intel Celeron-433=4304
|
||||
Intel P3-450/CC820=4444
|
||||
Intel P3-450/Siemens=4452
|
||||
Intel Celeron-450=4472
|
||||
Intel Celeron-300A@467=4599
|
||||
AMD-K6-2-300/PCChips M577=4605
|
||||
Intel Celeron-466/BXmaster=4628
|
||||
Intel P3-500/GA-6BXDS=4958
|
||||
Intel Celeron-525/BXmaster=5215
|
||||
AMD-K6-2-350/FIC=5368
|
||||
Intel Pentium III Xeon-550=5417
|
||||
Intel P3-550/Siemens=5440
|
||||
Intel Celeron-550/BXmaster=5477
|
||||
Intel Celeron-575/BXmaster=5738
|
||||
Intel Celeron-616/BXmaster=5897
|
||||
Intel P3-617/GA-BX2000=6114
|
||||
AMD-K6-III-400/FIC VA-503A=6166
|
||||
AMD-K6-III-400=6169
|
||||
Intel P3-650/BX=6446
|
||||
AMD-K6-2-450/FIC=6876
|
||||
AMD-K6-III-448/FIC VA-503A=6893
|
||||
AMD-K6-III-450=6895
|
||||
Intel P3-700/BX=6942
|
||||
Intel Celeron-815/BXmaster=7799
|
||||
Intel P3-650@870/BX=8614
|
||||
Intel P3-650@917/BX=9080
|
||||
VIA C3-1333=3160
|
||||
AMD Duron-600/KT133=9132
|
||||
AMD Athlon-600/AMD-750=9231
|
||||
AMD Athlon-650/KX133=9888
|
||||
Intel Celeron-566@1010=9977
|
||||
AMD Athlon-700/KX133=10527
|
||||
AMD Athlon-750/KT133=11457
|
||||
AMD Athlon-800/AMD-750=12149
|
||||
AMD Duron-850/KT133=12954
|
||||
AMD Duron-900/KT133=13712
|
||||
AMD Duron-928 (9x103)=14150
|
||||
AMD Duron-950/KT133=14479
|
||||
AMD Athlon-1000/KT133=15252
|
||||
AMD Athlon-1200/KT133=18378
|
||||
AMD Athlon XP 1500+/KT133=20757
|
||||
AMD Athlon XP 1800+=23375
|
||||
AMD Athlon XP 2000+/KT133A=25693
|
||||
AMD Athlon XP 2200+/KT133A=28296
|
||||
AMD Athlon XP-M 2500+/KM400=28877
|
||||
AMD Athlon XP-M 3000+/SiS748=34104
|
||||
Intel P3-1000/i815=9813
|
||||
Intel P4-1600=3282
|
||||
Intel P4-1800=3833
|
||||
Intel P4-2000=4256
|
||||
Intel P4-2500=6020
|
||||
Intel Pentium-M ULV-1000=8547
|
||||
Intel Pentium-M-1300=11089
|
||||
Intel Pentium-M-1600=13614
|
||||
Intel Pentium-M 735=14211
|
||||
Intel Pentium-M 755=16772
|
||||
Intel Pentium-M 770=17807
|
||||
Intel P4-2800(noHT)/i875P=6799
|
||||
Intel P4-3066(noHT)/i845PE=7396
|
||||
Intel P4-3000 530 (HT)=9220
|
||||
Intel P4-3200E(noHT)/i875P=6578
|
||||
Intel P4-3600E(noHT)/i925X=8163
|
||||
Intel Xeon-3800(HT)=17241
|
||||
AMD Athlon64 3200+=31194
|
||||
AMD Athlon64 3800+=37379
|
||||
AMD Athlon64 FX-53=37426
|
||||
AMD Opteron 248=34115
|
||||
AMD Turion64 ML-34+=28056
|
||||
AMD Turion64 X2 TL-60=62143
|
||||
AMD Athlon 64 X2 4400+=68974
|
||||
Intel Core Duo T2600 (1core)=16967
|
||||
Intel Core Duo T2600 (2core)=34039
|
||||
Intel Core 2 Duo E6600=36031
|
||||
Intel Core 2 Duo E6700=40075
|
||||
Intel Core 2 Duo T7400=32659
|
||||
Transmeta Crusoe TM5800-1000=4251
|
||||
2xIntel Xeon 5150/5000P=80725
|
||||
4xIntel Xeon MP 7040=54379
|
||||
Intel Core 2 Extreme QX6700=80338
|
||||
AMD Phenom 9500=133430
|
||||
Intel Atom 230=10769
|
||||
Intel Core i5-520M=60634
|
||||
Intel Core i7-860=131820
|
||||
Intel Core i7-820QM=90751
|
||||
Intel Core i7-980X=215620
|
||||
Intel Core i5-2520M=55354
|
||||
Intel Core i7-3820=130252
|
||||
|
||||
[Benchmark_MMX]
|
||||
AMD-K6-166/QDI=909
|
||||
AMD-K6-200/QDI=1070
|
||||
Intel P2-266/440LX=1339
|
||||
VIA Cyrix III 533/133=1815
|
||||
Intel Pentium MMX-200=2041
|
||||
Intel Mobile Pentium MMX-233=2363
|
||||
Intel P2-233/440BX=2390
|
||||
Intel Celeron-300=2931
|
||||
Intel Celeron-366=3742
|
||||
Intel Celeron-450=4602
|
||||
Intel Celeron-300A@467=4737
|
||||
Intel P3-500/GA-6BXDS=5009
|
||||
AMD Duron-600/KT133=5454
|
||||
Intel P3-550/Siemens=5513
|
||||
AMD Athlon-650/KX133=5906
|
||||
AMD Athlon-700/Abit KA7=6356
|
||||
Intel P3-650/BX=6490
|
||||
AMD Duron-750/KT133=6823
|
||||
AMD Athlon-750/KT133=6846
|
||||
Intel P3-700/BX=7025
|
||||
AMD Duron-800/KT133=7277
|
||||
AMD Duron-850/KT133=7738
|
||||
AMD Duron-900/KT133=8192
|
||||
AMD Duron-928 (9x103)=8448
|
||||
AMD Duron-950/KT133=8645
|
||||
Intel P3-650@870/BX=8706
|
||||
AMD Athlon-1000/KT133=9110
|
||||
Intel P3-650@917/BX=9173
|
||||
Intel Celeron-566@1010=10080
|
||||
VIA C3-1333=6063
|
||||
AMD Athlon-1200/KT133=10998
|
||||
AMD Athlon XP 1500+/KT133=12125
|
||||
AMD Athlon XP 1800+=13642
|
||||
AMD Athlon XP 2000+/KT133A=15013
|
||||
AMD Athlon XP 2200+/KT133A=16516
|
||||
AMD Athlon XP-M 2500+/KM400=16858
|
||||
AMD Athlon XP-M 3000+/SiS748=20040
|
||||
Intel P3-1000=9903
|
||||
Intel P4-1600=14468
|
||||
Intel P4-1800=16319
|
||||
Intel P4-2000=18140
|
||||
Intel P4-2500=22681
|
||||
Intel Pentium-M ULV-1000=9937
|
||||
Intel Pentium-M-1300=12865
|
||||
Intel Pentium-M-1600=15835
|
||||
Intel Pentium-M 735=16839
|
||||
Intel Pentium-M 755=19869
|
||||
Intel Pentium-M 770=21149
|
||||
Intel P4-2800(noHT)/i875P=24478
|
||||
Intel P4-3066(noHT)/i845PE=26437
|
||||
Intel P4-3000 530 (HT)=27352
|
||||
Intel P4-3200E(noHT)/i875P=22592
|
||||
Intel P4-3600E(noHT)/i925X=25314
|
||||
Intel Xeon-3800(HT)=53268
|
||||
AMD Athlon64 3200+=18228
|
||||
AMD Athlon64 3800+=21859
|
||||
AMD Athlon64 FX-53=21856
|
||||
AMD Opteron 248=19926
|
||||
AMD Turion64 ML-34+=16403
|
||||
AMD Turion64 X2 TL-60=36363
|
||||
AMD Athlon 64 X2 4400+=40282
|
||||
Intel Core Duo T2600 (1core)=21423
|
||||
Intel Core Duo T2600 (2core)=42912
|
||||
Intel Core 2 Duo E6600=74154
|
||||
Intel Core 2 Duo E6700=82312
|
||||
Intel Core 2 Duo T7400=67321
|
||||
Transmeta Crusoe TM5800-1000=5272
|
||||
2xIntel Xeon 5150/5000P=51186
|
||||
4xIntel Xeon MP 7040=83086
|
||||
Intel Core 2 Extreme QX6700=165067
|
||||
AMD Phenom 9500=80202
|
||||
Intel Atom 230=14545
|
||||
Intel Core i5-520M=80822
|
||||
Intel Core i7-860=171336
|
||||
Intel Core i7-820QM=115063
|
||||
Intel Core i7-980X=261051
|
||||
Intel Core i5-2520M=81444
|
||||
Intel Core i7-3820=160178
|
||||
|
||||
[Benchmark_Memory]
|
||||
Intel Pentium-100/FPM=69
|
||||
Intel Pentium Pro-166 Dual CPU=78
|
||||
AMD-K6-166/QDI/EDO=85
|
||||
Intel Pentium MMX-200/EDO=92
|
||||
AMD-K6-200/QDI/EDO=93
|
||||
Intel Pentium MMX-233/PC66=101
|
||||
Intel P2-233/440BX/PC66=111
|
||||
VIA Cyrix III 533/133=114
|
||||
Intel P2-266/440BX/PC66=117
|
||||
AMD-K6-III-400=135
|
||||
Intel Celeron-366/PC66=163
|
||||
AMD Duron-600/KT133=173
|
||||
AMD Athlon-700/KX133/PC133=202
|
||||
AMD Athlon-650/KX133=205
|
||||
Intel P3-500/GA-6BXDS/PC100=209
|
||||
Intel P3-550/Siemens/PC100=215
|
||||
Intel Celeron-300A@467/PC66=209
|
||||
Intel Celeron-300/PC66=146
|
||||
Intel P3-650/BX/PC100=238
|
||||
Intel P3-700/BX/PC100=211
|
||||
AMD Athlon-750/KT133/PC133=214
|
||||
AMD Duron-750/KT133=263
|
||||
Intel Celeron-566@1010=273
|
||||
VIA C3-1333/CN400=223
|
||||
AMD Duron-950/KT133=275
|
||||
AMD Duron-928 (9x103)/KT133=292
|
||||
AMD Duron-1100/SiS745/DDR333=477
|
||||
AMD Athlon XP-M 2500+/DDR333=548
|
||||
Intel P3-650@917/FSB140=310
|
||||
Intel P3-1000/PC133=218
|
||||
Intel P4-1600/i850=1115
|
||||
Intel P4-2000/i850/PC800=1245
|
||||
Intel P4-1800/i845G/DDR266=867
|
||||
Intel P4-2500/i845/DDR266=757
|
||||
Intel Pentium-M-1600/DDR266=830
|
||||
Intel Pentium-M 735/855PM/DDR400=971
|
||||
Intel P4-3066/i845PE/DDR266=1028
|
||||
Intel P4-2800/i875P/2Ch/DDR400=2056
|
||||
Intel P4-3200E/i875P/2Ch/DDR400=2342
|
||||
Intel P4-3600E/i915P/DDR2-533=2556
|
||||
Intel P4-3600E/i925X/DDR2-533=2844
|
||||
Intel Xeon-3800/E7525/DDR2-400=1635
|
||||
AMD Athlon64 3200+/1Ch/DDR400=1266
|
||||
AMD Athlon64 3800+/2Ch/DDR400=2375
|
||||
AMD Athlon64 FX-53/2Ch/DDR400=2166
|
||||
AMD Opteron 248/DDR266=947
|
||||
AMD Turion64 ML-34+=1071
|
||||
Intel Core 2 Duo E6700/DDR2-800=2894
|
||||
Transmeta Crusoe TM5800-1000=337
|
||||
2xIntel Xeon 5150/5000P/DDR2-667F=2919
|
||||
4xIntel Xeon MP 7040=1721
|
||||
AMD Phenom 9500=1795
|
||||
Intel Atom 230/945/DDR2-800=1682
|
||||
Intel Core i5-520M=5235
|
||||
Intel Core i7-860/DDR3-667/2CH=6506
|
||||
Intel Core i7-820QM=5424
|
||||
Intel Core i7-980X=9343
|
||||
Intel Core i7-3820/DDR3-1600/4CH=13366
|
||||
|
||||
[Benchmark_Disk_ReadBurst]
|
||||
Fujitsu MPB3043ATU E/PIO=4.03
|
||||
Seagate ST38410A/PIO=4.33
|
||||
Maxtor 91021U2/PIO=4.61
|
||||
Maxtor 92041U4/PIO=4.82
|
||||
Quantum Fireball_TM2110S300X=6.83
|
||||
SEAGATE ST51080N=7.92
|
||||
Seagate ST31277A=8,37
|
||||
IBM DCAS-32160 S65A=8.65
|
||||
QUANTUM FIREBALL ST3.2A/PIO=14.74
|
||||
Seagate ST39102LW Cheetah=30.05
|
||||
IBM DJNA-370910/UDMA66=15.27
|
||||
Seagate ST34321A/UDMA33=21.03
|
||||
Seagate ST38421A=23.82
|
||||
Seagate ST34310A=23.88
|
||||
QUANTUM FIREBALL SE2.1A=26.43
|
||||
Maxtor 91021U2/UDMA33=29.13
|
||||
Maxtor 54098U8/UDMA33=29.5
|
||||
IBM DTTA-350430=29.7
|
||||
IBM-DPTA-371360=29.86
|
||||
Seagate ST320420A=47.3
|
||||
IBM-DJNA-371350=27.87
|
||||
IBM-DTLA-307030/ATA100=82.22
|
||||
SEAGATE Cheetah X15/RAID=137.08
|
||||
IBM Deskstar 60GXP/ATA100=81.98
|
||||
MAXTOR 4K020H1/ATA100=84.58
|
||||
Seagate ST317221A/UDMA66=42.03
|
||||
Maxtor 6E040L0=79.36
|
||||
Seagate ST380021A/ATA100=73.11
|
||||
HITACHI DK23EA-40=80.04
|
||||
WDC WD800JB/ATA100=85.71
|
||||
TOSHIBA MK4019GAX=83.60
|
||||
Maxtor MaxLine III SATA+NCQ=119.96
|
||||
ST312002 6AS=106.61
|
||||
Maxtor Atlas 10K5 73SCA=145.86
|
||||
WDC WD3200YS-01PGB0=167.33
|
||||
Hitachi HTE726040M9AT00=84.61
|
||||
Seagate ST3160827AS=120.88
|
||||
WDC WD5000AADS-00S9B0=122.87
|
||||
Hitachi HTS545032B9A=161.10
|
||||
Seagate ST1000DM003-9YN1=282.43
|
||||
|
||||
[Benchmark_Disk_ReadRandom]
|
||||
Hitachi HTE726040M9AT00=22.82
|
||||
Maxtor Atlas 10K5 73SCA=31.61
|
||||
Seagate ST3160827AS=32.26
|
||||
FUJITSU MHV2080BH=17.79
|
||||
TOSHIBA MK8034GSX=18.12
|
||||
ST916082 1AS=22.27
|
||||
WDC WD5000AADS-00S9B0=24.58
|
||||
Hitachi HTS545032B9A=24.72
|
||||
Seagate ST1000DM003-9YN1=37.09
|
||||
|
||||
[Benchmark_Disk_RandomAccess]
|
||||
SEAGATE ST51080N=20.96
|
||||
Quantum Fireball_TM2110S300X=20.74
|
||||
Seagate ST34321A/UDMA33=17.21
|
||||
Seagate ST38410A/PIO=17.17
|
||||
Seagate ST31277A=16.75
|
||||
Fujitsu MPB3043ATU E=16.18
|
||||
IBM DTTA-350430=16.5
|
||||
IBM DCAS-32160 S65A=15.95
|
||||
Maxtor 92041U4/PIO=15.81
|
||||
Seagate ST34310A=15.56
|
||||
Maxtor 91021U2/PIO=15.66
|
||||
Seagate ST38421A=15.71
|
||||
QUANTUM FIREBALL ST3.2A=15.50
|
||||
QUANTUM FIREBALL SE2.1A=14.94
|
||||
Maxtor 54098U8/UDMA33=13.77
|
||||
Seagate ST320420A=12.57
|
||||
IBM DJNA-370910/UDMA66=12.10
|
||||
Seagate ST39102LW Cheetah=8.78
|
||||
IBM-DPTA-371360=13.37
|
||||
IBM-DJNA-371350=13.38
|
||||
IBM-DTLA-307030/ATA100=12.44
|
||||
IBM-DTLA-307030/ATA100+AAM=22.34
|
||||
SEAGATE Cheetah X15/RAID=5.65
|
||||
IBM Deskstar 60GXP=12.70
|
||||
MAXTOR 4K020H1/ATA100=19.12
|
||||
Seagate ST317221A/UDMA66=16.60
|
||||
Maxtor 6E040L0=14.52
|
||||
Seagate ST380021A/ATA100=14.58
|
||||
HITACHI DK23EA-40=19.40
|
||||
WDC WD800JB/ATA100=13.61
|
||||
TOSHIBA MK4019GAX=18.61
|
||||
Maxtor MaxLine III SATA+NCQ=15.82
|
||||
ST312002 6AS=12.51
|
||||
Maxtor Atlas 10K5 73SCA=10.16
|
||||
WDC WD3200YS-01PGB0=13.16
|
||||
Hitachi HTE726040M9AT00=12.90
|
||||
Seagate ST3160827AS=11.65
|
||||
Seagate ST380215A=14.82
|
||||
WDC WD5000AADS-00S9B0=17.37
|
||||
Hitachi HTS545032B9A=22.16
|
||||
Seagate ST1000DM003-9YN1=15.53
|
||||
|
||||
[LogfileSettings]
|
||||
COMP=1
|
||||
COMP_SP=1
|
||||
COMP_Name=1
|
||||
COMP_Os=1
|
||||
COMP_User=0
|
||||
CPU=1
|
||||
CPU_Name=1
|
||||
CPU_ID=1
|
||||
CPU_Vendor=1
|
||||
CPU_Stepping=1
|
||||
CPU_Type=1
|
||||
CPU_BrandID=1
|
||||
CPU_PN=1
|
||||
CPU_Clock=1
|
||||
CPU_MaxFreq=1
|
||||
CPU_CacheL1=1
|
||||
CPU_CacheL2=1
|
||||
CPU_TLB_I=1
|
||||
CPU_TLB_D=1
|
||||
CPU_Features=1
|
||||
CPU_PIROM=1
|
||||
MEM=1
|
||||
MEM_TotalSize=1
|
||||
MEM_Timing=1
|
||||
MEM_Row=1
|
||||
MEM_Row_Size=1
|
||||
MEM_Row_Type=1
|
||||
MEM_Row_Speed=1
|
||||
MEM_Row_Model=1
|
||||
MEM_Row_ECC=1
|
||||
MEM_Row_Date=1
|
||||
MEM_Row_SN=1
|
||||
MEM_Row_Cfg=1
|
||||
MEM_Row_Latency=1
|
||||
MEM_Row_Features=1
|
||||
MEM_Row_iFeatures=1
|
||||
BUS=1
|
||||
BUS_PCI=1
|
||||
BUS_PCI_DevName=1
|
||||
BUS_PCI_DevNumber=1
|
||||
BUS_PCI_Resources=1
|
||||
BUS_PCI_Features=1
|
||||
BUS_PCI_DevSpecific=1
|
||||
BUS_PCIX_Features=1
|
||||
BUS_PCIe_Features=1
|
||||
BUS_PCI_DRV_INFO=1
|
||||
BUS_EISA=1
|
||||
DMI=1
|
||||
DMI_0=1
|
||||
DMI_1=1
|
||||
DMI_2=1
|
||||
DMI_3=1
|
||||
DMI_4=1
|
||||
DMI_5=1
|
||||
DMI_6=1
|
||||
DMI_7=1
|
||||
DMI_8=1
|
||||
DMI_9=1
|
||||
DMI_10=1
|
||||
DMI_11=1
|
||||
DMI_12=1
|
||||
DMI_13=1
|
||||
DMI_14=1
|
||||
DMI_15=1
|
||||
DMI_16=1
|
||||
DMI_17=1
|
||||
DMI_18=1
|
||||
DMI_19=1
|
||||
DMI_20=1
|
||||
DMI_21=1
|
||||
DMI_22=1
|
||||
DMI_23=1
|
||||
DMI_24=1
|
||||
DMI_25=1
|
||||
DMI_26=1
|
||||
DMI_27=1
|
||||
DMI_28=1
|
||||
DMI_29=1
|
||||
DMI_30=1
|
||||
DMI_31=1
|
||||
DMI_32=1
|
||||
DMI_33=1
|
||||
DMI_34=1
|
||||
DMI_35=1
|
||||
DMI_36=1
|
||||
DMI_37=1
|
||||
DMI_38=1
|
||||
DMI_39=1
|
||||
DMI_129=1
|
||||
DMI_130=1
|
||||
DMI_131=1
|
||||
VIDEO=1
|
||||
VIDEO_Chipset=1
|
||||
VIDEO_Memory=1
|
||||
VIDEO_Card=1
|
||||
VIDEO_Bus=1
|
||||
VIDEO_RAMDAC=1
|
||||
VIDEO_BIOSver=1
|
||||
VIDEO_Clock=1
|
||||
VIDEO_HWID=1
|
||||
VIDEO_DRV_INFO=1
|
||||
VIDEO_DirectX=1
|
||||
MON=1
|
||||
MON_Name=1
|
||||
MON_SN=1
|
||||
MON_Date=1
|
||||
MON_Dimensions=1
|
||||
MON_DisplayType=1
|
||||
MON_InputSignal=1
|
||||
MON_Gamma=1
|
||||
MON_DPMSinput=1
|
||||
MON_DPMSmodes=1
|
||||
MOBO=1
|
||||
MOBO_Model=1
|
||||
MOBO_Chipset=1
|
||||
MOBO_CompName=1
|
||||
MOBO_MachineType=1
|
||||
MOBO_Slots=1
|
||||
MOBO_BIOS_Manuf=1
|
||||
MOBO_BIOS_Date=1
|
||||
MOBO_PNP_Devs=1
|
||||
MOBO_PNP_Nodes=1
|
||||
MOBO_ACPI_Devs=1
|
||||
MOBO_ACPI_Enum=1
|
||||
DRIVE=1
|
||||
DRIVE_IDE=1
|
||||
DRIVE_IDE_Ctrller=1
|
||||
DRIVE_IDE_Channel=1
|
||||
DRIVE_IDE_Model=1
|
||||
DRIVE_IDE_Rev=1
|
||||
DRIVE_IDE_SN=1
|
||||
DRIVE_IDE_Capacity=1
|
||||
DRIVE_IDE_Geometry=1
|
||||
DRIVE_IDE_Cache=1
|
||||
DRIVE_IDE_Xfer=1
|
||||
DRIVE_IDE_BasicCapab=1
|
||||
DRIVE_IDE_ATA2Capab=1
|
||||
DRIVE_IDE_SMART=1
|
||||
DRIVE_SCSI=1
|
||||
DRIVE_SCSI_ID=1
|
||||
DRIVE_SCSI_Desc=1
|
||||
DRIVE_SCSI_Class=1
|
||||
DRIVE_Floppy=1
|
||||
NETWORK=1
|
||||
NETWORK_HWID=1
|
||||
NETWORK_DRV_INFO=1
|
||||
AUDIO=1
|
||||
AUDIO_DRV_INFO=1
|
||||
AUDIO_HWID=1
|
||||
PORTS=1
|
||||
BUS_USB=1
|
||||
BUS_USB_DRV_INFO=1
|
||||
BATTERY=1
|
||||
SENSORS=1
|
||||
|
||||
[Settings]
|
||||
HighestIdeAddress=0
|
||||
AcpiEnum=0
|
||||
SWSMI=1
|
||||
DebugMode=0
|
||||
SMBus=1
|
||||
TempScale=C
|
||||
AC97CodecID=1
|
||||
SkipProblematicPciDev=0
|
||||
GPUI2C=1
|
||||
LPC=1
|
||||
DefReportType=5
|
||||
TPM=0
|
||||
PCIdirect=1
|
||||
OpenSystemSummary=0
|
||||
RememberPreferences=1
|
||||
LargeFonts=0
|
||||
OpenSensors=0
|
||||
MinimalizeMainWnd=0
|
||||
MinimalizeSensors=0
|
||||
PersistentDriver=0
|
||||
UseHPET=1
|
||||
AutoUpdate=0
|
||||
GPUI2CNVAPI=1
|
||||
GPUI2CADL=0
|
||||
SensorsOnly=0
|
||||
AcpiEval=1
|
||||
CpuClkFromBusClk=1
|
||||
BusClkPolling=1
|
||||
SMBusAdrExclude=11111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000
|
||||
GPUI2CBusExclude=00000000
|
||||
SensorsSM=1
|
||||
IoctlKernel=0
|
||||
SummaryOnly=0
|
||||
WakeGPUs=1
|
||||
KeepTheme=0
|
||||
FlushBuffers=1
|
||||
iMEsupport=1
|
||||
GPUI2Ccaching=1
|
||||
CSMI_SAS_Support=1
|
||||
DebugDirect=1
|
||||
MinimalizeSensorsClose=0
|
||||
WakeGPUsExt=0
|
||||
PollSleepingGPUs=0
|
||||
ShowWelcomeAndProgress=1
|
||||
EnablePchTherm=0
|
||||
ReorderGPUs=1
|
||||
NvmlSupport=1
|
||||
DecimalSeparator=.
|
||||
ThousandsSeparator=,
|
||||
CsvSeparator=,
|
||||
MinimizeGraphs=1
|
||||
TextButtons=0
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
@echo off
|
||||
|
||||
start "" %SystemDrive%\.bin\NotepadPlusPlus\notepadplusplus.exe %2 %3 %4 %5 %6 %7 %8 %9
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
[Start]
|
||||
m_lang_id=1
|
||||
QDir_Id=0
|
||||
useColorStart=1
|
||||
Als=12
|
||||
designe_mode=2
|
||||
showCmd=3
|
||||
StartCrash=0
|
||||
default_tab=
|
||||
Max=1
|
||||
show_ext_in_type=1
|
||||
title_info=1
|
||||
adresbar_style=1
|
||||
useTreeColor=1
|
||||
useColor=1
|
||||
[Favoriten]
|
||||
Ordner=.\Favoriten\
|
||||
[Q]
|
||||
Link=.\Favoriten\Quick-Link\
|
||||
[Q-Dir]
|
||||
Lizenz=1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[Vorschau]
|
||||
Filter=*.avi;*.bmp;*.gif;*.ico;*.jpeg;*.jpg;*.mp*;*.pdf;*.png;*.wm*;
|
||||
[Filter2]
|
||||
0=#Hidden=1=-1=1=1=-1=0
|
||||
1=*.zip;*.rar;*.gz;*.7z;=1=00AA00=-1=1=-1=0
|
||||
2=*.mp*;*.avi;*.wma;=1=DD0058=-1=1=-1=0
|
||||
3=#DIR=1=008800=-1=1=-1=0
|
||||
4=*.jpg;*.jpeg;*.png,*.gif;*.bmp;*.ico=1=BB00BB=-1=1=-1=0
|
||||
5=*.html;*.htm;*.url=1=456789=-1=1=-1=0
|
||||
6=*.pl;*.cgi;*.php;*.pdf;*.doc;*.rtf;*.xls=1=BB8844=-1=1=-1=0
|
||||
7=*.cpp;*.hpp;*.h=1=DD0058=-1=1=-1=0
|
||||
8=*.exe;*.dll;*.bat=1=FF0000=-1=1=-1=0
|
||||
9=*=1=0000BB=-1=1=-1=0
|
||||
10=#BG=1=-1=-1=1=-1=0
|
||||
11=#BG-A=1=-1=-1=1=-1=0
|
||||
[Ordner]
|
||||
Filter=
|
||||
[Column_OS_6.1_Ploder1]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
Spatlen_291=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%00%00%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%EE%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0E%00%00%00%69%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%91%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0C%00%00%00%46%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%00%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-563719693|772
|
||||
[Column_OS_6.1_Ploder2]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
[Column_OS_6.1_Ploder3]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
[Column_OS_6.1_Ploder4]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
[Programs_State]
|
||||
Disable=0
|
||||
[Quick-Links]
|
||||
WK=%systemdrive%/WK
|
||||
[Options]
|
||||
Start=7
|
||||
[X-Size]
|
||||
mode=1
|
||||
dig=0
|
||||
fld_size=1
|
||||
ths_sep=1
|
||||
type=0
|
||||
precent=1
|
||||
ff_cnt=1
|
||||
block_no_focus=1
|
||||
nosort_fld_size=1
|
||||
|
|
@ -6,23 +6,44 @@
|
|||
if (Test-Path Env:\DEBUG) {
|
||||
Set-PSDebug -Trace 1
|
||||
}
|
||||
$Host.UI.RawUI.WindowTitle = "Wizard Kit: Windows PE Build Tool"
|
||||
$WD = $(Split-Path $MyInvocation.MyCommand.Path)
|
||||
$Bin = (Get-Item $WD -Force).Parent.FullName
|
||||
$Root = (Get-Item $Bin -Force).Parent.FullName
|
||||
$Build = "$Root\BUILD_PE"
|
||||
$LogDir = "$Build\Logs"
|
||||
$Temp = "$Build\Temp"
|
||||
try {
|
||||
Import-Module -Name $Env:DISMRoot -ErrorAction "stop"
|
||||
}
|
||||
catch {
|
||||
Write-Host -ForegroundColor "Red" "ERROR: Failed to load DISM CmdLet"
|
||||
Abort
|
||||
}
|
||||
# Dirs
|
||||
$WorkingDir = $(Split-Path $MyInvocation.MyCommand.Path)
|
||||
$SetupDir = (Get-Item $WorkingDir -Force).Parent.FullName
|
||||
$RootDir = (Get-Item $SetupDir -Force).Parent.FullName
|
||||
$BuildDir = "$SetupDir\BUILD_PE"
|
||||
$OutDir = "$SetupDir\OUT_PE"
|
||||
$TempDir = "$BuildDir\temp"
|
||||
$MountDir = "$BuildDir\mount"
|
||||
$TargetDir = "$BuildDir\pe_files"
|
||||
# Misc
|
||||
$Arch = "amd64"
|
||||
$Date = Get-Date -UFormat "%Y-%m-%d"
|
||||
$Host.UI.RawUI.BackgroundColor = "Black"
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
$DISM = "{0}\DISM.exe" -f $Env:DISMRoot
|
||||
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
||||
$HostSysWOW64 = "{0}\SysWOW64" -f $Env:SystemRoot
|
||||
$DISM = "{0}\DISM.exe" -f $Env:DISMRoot
|
||||
#Enable TLS 1.2
|
||||
$KitNameFull = (Get-Content "$RootDir\scripts\wk\cfg\main.py" | Where-Object {$_ -imatch '^KIT_NAME_FULL'}) -ireplace '.*=.(.*).$', '$1'
|
||||
$KitNameShort = (Get-Content "$RootDir\scripts\wk\cfg\main.py" | Where-Object {$_ -imatch '^KIT_NAME_SHORT'}) -ireplace '.*=.(.*).$', '$1'
|
||||
# Set up UI
|
||||
$Host.UI.RawUI.WindowTitle = "${KitNameFull}: Windows PE Build Tool"
|
||||
$Host.UI.RawUI.BackgroundColor = "Black"
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
# Enable TLS 1.2
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
|
||||
## Functions ##
|
||||
function Abort {
|
||||
Write-Host -ForegroundColor "Red" "`nAborted."
|
||||
WKPause "Press Enter to exit... "
|
||||
exit
|
||||
}
|
||||
|
||||
function Ask-User ($text = "Kotaero") {
|
||||
$text += " [Y/N]"
|
||||
while ($true) {
|
||||
|
|
@ -37,33 +58,36 @@ function Ask-User ($text = "Kotaero") {
|
|||
}
|
||||
$answer
|
||||
}
|
||||
function Abort {
|
||||
Write-Host -ForegroundColor "Red" "`nAborted."
|
||||
WKPause "Press Enter to exit... "
|
||||
exit
|
||||
}
|
||||
function MakeClean {
|
||||
|
||||
function Clean-BuildDir {
|
||||
$Folders = @(
|
||||
"$Build\Mount",
|
||||
"$Build\PEFiles")
|
||||
$Clean = $false
|
||||
"$BuildDir\additions",
|
||||
"$BuildDir\mount",
|
||||
"$BuildDir\pe_files",
|
||||
"$BuildDir\temp")
|
||||
|
||||
# WIM cleanup
|
||||
if (Test-Path "$MountDir") {
|
||||
try {
|
||||
Dismount-WindowsImage -Path "$MountDir" -Discard
|
||||
}
|
||||
catch {
|
||||
# Ignore
|
||||
}
|
||||
Start-Process -FilePath $DISM -ArgumentList @("/Cleanup-Mountpoints") -NoNewWindow -Wait
|
||||
}
|
||||
|
||||
# Folders
|
||||
foreach ($f in $Folders) {
|
||||
if (Test-Path $f) {
|
||||
Write-Host -ForegroundColor "Yellow" ("Found: {0}" -f $f)
|
||||
$Clean = $true
|
||||
}
|
||||
}
|
||||
if (($Clean) -and (Ask-User "Delete the above folder(s)?")) {
|
||||
foreach ($f in $Folders) {
|
||||
if (Test-Path $f) {
|
||||
Remove-Item -Path $f -Recurse -Force
|
||||
}
|
||||
Write-Host -ForegroundColor "Yellow" ("Removing: {0}" -f $f)
|
||||
Remove-Item -Path $f -Recurse -Force
|
||||
}
|
||||
}
|
||||
}
|
||||
function DownloadFile ($Path, $Name, $Url) {
|
||||
$OutFile = "{0}\{1}" -f $Path, $Name
|
||||
|
||||
function Download-File ($Path, $Name, $Url) {
|
||||
$OutFile = "{0}\{1}" -f $Path, $Name
|
||||
Write-Host ("Downloading: $Name")
|
||||
New-Item -Type Directory $Path 2>&1 | Out-Null
|
||||
try {
|
||||
|
|
@ -71,10 +95,128 @@ function DownloadFile ($Path, $Name, $Url) {
|
|||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to download file." ) -ForegroundColor "Red"
|
||||
$global:DownloadErrors += 1
|
||||
Abort
|
||||
}
|
||||
}
|
||||
function FindDynamicUrl ($SourcePage, $RegEx) {
|
||||
|
||||
function Download-SourceFiles {
|
||||
$Sources = Get-Content -Path "$WorkingDir\sources.json" | ConvertFrom-JSON
|
||||
foreach ($s in $Sources) {
|
||||
$Dest = "$BuildDir\downloads\{0}" -f $s.Name
|
||||
if (Test-Path -PathType Leaf -Path "$Dest") {
|
||||
if (Test-Hash -File $Dest -Hash $s.Hash) {
|
||||
continue
|
||||
}
|
||||
# Hash didn't match
|
||||
Remove-Item $Dest -Force
|
||||
}
|
||||
|
||||
# File needs downloaded (again)
|
||||
Download-File -Path "$BuildDir\downloads" -Name $s.Name -Url $s.Url
|
||||
|
||||
# Verify download
|
||||
if ( -Not (Test-Hash -File $Dest -Hash $s.Hash)) {
|
||||
Write-Host (" ERROR: Download failed hash check." ) -ForegroundColor "Red"
|
||||
Abort
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Extract-SourceFiles {
|
||||
$ProgramFilesPE = "$BuildDir\additions\Program Files"
|
||||
New-Item -Type Directory $ProgramFilesPE -Force
|
||||
|
||||
# 7-Zip
|
||||
Write-Host "Extracting: 7-Zip"
|
||||
try {
|
||||
$ArgumentList = @("/a", "$BuildDir\downloads\7z.msi", "TARGETDIR=$TempDir\7zi", "/qn")
|
||||
Start-Process -FilePath "$HostSystem32\msiexec.exe" -ArgumentList $ArgumentList -Wait
|
||||
New-Item -Type Directory "$ProgramFilesPE\7-Zip" 2>&1 | Out-Null
|
||||
Move-Item "$TempDir\7zi\Files\7-Zip\7z.dll" "$ProgramFilesPE\7-Zip\7z.dll"
|
||||
Move-Item "$TempDir\7zi\Files\7-Zip\7z.exe" "$ProgramFilesPE\7-Zip\7z.exe"
|
||||
Move-Item "$TempDir\7zi\Files\7-Zip\License.txt" "$ProgramFilesPE\7-Zip\License.txt"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
$SevenZip = "$ProgramFilesPE\7-Zip\7z.exe"
|
||||
|
||||
# ConEmu
|
||||
Write-Host "Extracting: ConEmu"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$BuildDir\downloads\ConEmu.7z", "-o`"$ProgramFilesPE`"\ConEmu",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"ConEmu.exe",
|
||||
"ConEmu.map",
|
||||
"ConEmu64.exe",
|
||||
"ConEmu64.map",
|
||||
"ConEmu\CmdInit.cmd",
|
||||
"ConEmu\ConEmuC.exe",
|
||||
"ConEmu\ConEmuC64.exe",
|
||||
"ConEmu\ConEmuCD.dll",
|
||||
"ConEmu\ConEmuCD64.dll",
|
||||
"ConEmu\ConEmuHk.dll",
|
||||
"ConEmu\ConEmuHk64.dll"
|
||||
)
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Notepad++
|
||||
Write-Host "Extracting: Notepad++"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$BuildDir\downloads\npp.7z", "-o`"$ProgramFilesPE`"\NotepadPlusPlus",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# NTPWEdit
|
||||
Write-Host "Extracting: NTPWEdit"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$BuildDir\downloads\ntpwedit.zip", "-o`"$ProgramFilesPE`"\NTPWEdit",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"COPYING.txt", "GPL.txt", "ntpwedit64.exe")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$ProgramFilesPE\NTPWEdit\ntpwedit64.exe" "$ProgramFilesPE\NTPWEdit\ntpwedit.exe"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# OSFMount
|
||||
Write-Host "Extracting: OSFMount"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$BuildDir\downloads\osfmount.7z", "-o`"$ProgramFilesPE`"\OSFMount",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# wimlib
|
||||
Write-Host "Extracting: wimlib"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$BuildDir\downloads\wimlib.zip", "-o`"$ProgramFilesPE`"\wimlib",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
}
|
||||
|
||||
function Find-DynamicUrl ($SourcePage, $RegEx) {
|
||||
# Get source page
|
||||
Invoke-Webrequest -Uri $SourcePage -OutFile "tmp_page"
|
||||
|
||||
|
|
@ -88,11 +230,25 @@ function FindDynamicUrl ($SourcePage, $RegEx) {
|
|||
|
||||
$Url | Select-Object -First 1
|
||||
}
|
||||
|
||||
function Test-Hash ($File, $Hash) {
|
||||
Write-Host -BackgroundColor Black -ForegroundColor Cyan "Verifying ${File}..."
|
||||
$FileHash = (Get-FileHash -Path $File -Algorithm SHA256 -ErrorAction Stop).Hash
|
||||
return ($FileHash.ToLower() -eq $Hash)
|
||||
}
|
||||
|
||||
function WKPause ($Message = "Press Enter to continue... ") {
|
||||
Write-Host $Message -NoNewLine
|
||||
Read-Host
|
||||
}
|
||||
|
||||
## Safety Check ##
|
||||
if ($PSVersionTable.PSVersion.Major -eq 6 -and $PSVersionTable.OS -imatch "Windows 6.1") {
|
||||
Write-Host "`nThis script doesn't support PowerShell 6.0 on Windows 7."
|
||||
Write-Host "Press Enter to exit... " -NoNewLine
|
||||
Abort
|
||||
}
|
||||
|
||||
## PowerShell equivalent of Python's "if __name__ == '__main__'"
|
||||
# Code based on StackOverflow comments
|
||||
# Question: https://stackoverflow.com/q/4693947
|
||||
|
|
@ -100,558 +256,140 @@ function WKPause ($Message = "Press Enter to continue... ") {
|
|||
# Asked by: https://stackoverflow.com/users/65164/mark-mascolino
|
||||
# Answer by: https://stackoverflow.com/users/696808/bacon-bits
|
||||
if ($MyInvocation.InvocationName -ne ".") {
|
||||
Clear-Host
|
||||
Write-Host "Wizard Kit: Windows PE Build Tool`n`n`n`n`n"
|
||||
Push-Location "$WorkingDir"
|
||||
New-Item -Type Directory $BuildDir 2>&1 | Out-Null
|
||||
Clean-BuildDir
|
||||
Copy-Item -Path "$SetupDir\pe\additions" -Destination "$BuildDir\additions" -Recurse -Force
|
||||
|
||||
## Prep ##
|
||||
try {
|
||||
Import-Module -Name $Env:DISMRoot -ErrorAction "stop"
|
||||
}
|
||||
catch {
|
||||
Write-Host -ForegroundColor "Red" "ERROR: Failed to load DISM CmdLet"
|
||||
Abort
|
||||
}
|
||||
Push-Location "$WD"
|
||||
MakeClean
|
||||
New-Item -Type Directory $Build 2>&1 | Out-Null
|
||||
New-Item -Type Directory $LogDir 2>&1 | Out-Null
|
||||
|
||||
## main.py ##
|
||||
if (!(Test-Path "$Build\main.py") -or (Ask-User "Replace existing main.py?")) {
|
||||
Copy-Item -Path "$Bin\Scripts\settings\main.py" -Destination "$Build\main.py" -Force
|
||||
}
|
||||
WKPause "Press Enter to open settings..."
|
||||
Start-Process "$HostSystem32\notepad.exe" -ArgumentList @("$Build\main.py") -Wait
|
||||
$KitNameFull = (Get-Content "$Build\main.py" | Where-Object {$_ -match 'FULL'}) -replace ".*'(.*)'$", '$1'
|
||||
$KitNameShort = (Get-Content "$Build\main.py" | Where-Object {$_ -match 'SHORT'}) -replace ".*'(.*)'$", '$1'
|
||||
|
||||
if (Ask-User "Update Tools?") {
|
||||
$DownloadErrors = 0
|
||||
|
||||
## Download Tools ##
|
||||
$ToolSources = @(
|
||||
# 7-Zip
|
||||
@("7z-installer.msi", "https://www.7-zip.org/a/7z1900.msi"),
|
||||
@("7z-extra.7z", "https://www.7-zip.org/a/7z1900-extra.7z"),
|
||||
# Blue Screen View
|
||||
@("bluescreenview32.zip", "http://www.nirsoft.net/utils/bluescreenview.zip"),
|
||||
@("bluescreenview64.zip", "http://www.nirsoft.net/utils/bluescreenview-x64.zip"),
|
||||
# ConEmu
|
||||
@("ConEmuPack.7z", "https://github.com/Maximus5/ConEmu/releases/download/v19.03.10/ConEmuPack.190310.7z"),
|
||||
# Fast Copy
|
||||
@("fastcopy.zip", "http://ftp.vector.co.jp/71/31/2323/FastCopy363_installer.exe"),
|
||||
# HWiNFO
|
||||
@("hwinfo.zip", "http://files2.majorgeeks.com/377527622c5325acc1cb937fb149d0de922320c0/systeminfo/hwi_602.zip"),
|
||||
# Killer Network Drivers
|
||||
@(
|
||||
"killerinf.zip",
|
||||
("https://www.killernetworking.com"+(FindDynamicUrl "https://www.killernetworking.com/killersupport/category/other-downloads" "Download Killer-Ethernet").replace('&', '&'))
|
||||
),
|
||||
# Notepad++
|
||||
@("npp_x86.7z", "https://notepad-plus-plus.org/repository/7.x/7.6.4/npp.7.6.4.bin.minimalist.7z"),
|
||||
@("npp_amd64.7z", "https://notepad-plus-plus.org/repository/7.x/7.6.4/npp.7.6.4.bin.minimalist.x64.7z"),
|
||||
# NT Password Editor
|
||||
@("ntpwed.zip", "http://cdslow.org.ru/files/ntpwedit/ntpwed07.zip"),
|
||||
# Prime95
|
||||
@("prime95_32.zip", "http://www.mersenne.org/ftp_root/gimps/p95v294b7.win32.zip"),
|
||||
@("prime95_64.zip", "http://www.mersenne.org/ftp_root/gimps/p95v294b8.win64.zip"),
|
||||
# ProduKey
|
||||
@("produkey32.zip", "http://www.nirsoft.net/utils/produkey.zip"),
|
||||
@("produkey64.zip", "http://www.nirsoft.net/utils/produkey-x64.zip"),
|
||||
# Python
|
||||
@("python32.zip", "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-win32.zip"),
|
||||
@("python64.zip", "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-amd64.zip"),
|
||||
# Python: psutil
|
||||
@(
|
||||
"psutil64.whl",
|
||||
(FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp37-cp37m-win_amd64.whl")
|
||||
),
|
||||
@(
|
||||
"psutil32.whl",
|
||||
(FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp37-cp37m-win32.whl")
|
||||
),
|
||||
# Q-Dir
|
||||
@("qdir32.zip", "https://www.softwareok.com/Download/Q-Dir_Portable.zip"),
|
||||
@("qdir64.zip", "https://www.softwareok.com/Download/Q-Dir_Portable_x64.zip"),
|
||||
# TestDisk / PhotoRec
|
||||
@("testdisk32.zip", "https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip"),
|
||||
@("testdisk64.zip", "https://www.cgsecurity.org/testdisk-7.1-WIP.win64.zip"),
|
||||
# VirtIO drivers
|
||||
@("virtio-win.iso", "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso"),
|
||||
# Visual C++ Runtimes
|
||||
@("vcredist_x86.exe", "https://aka.ms/vs/15/release/vc_redist.x86.exe"),
|
||||
@("vcredist_x64.exe", "https://aka.ms/vs/15/release/vc_redist.x64.exe"),
|
||||
# wimlib-imagex
|
||||
@("wimlib32.zip", "https://wimlib.net/downloads/wimlib-1.13.0-windows-i686-bin.zip"),
|
||||
@("wimlib64.zip", "https://wimlib.net/downloads/wimlib-1.13.0-windows-x86_64-bin.zip")
|
||||
)
|
||||
foreach ($Tool in $ToolSources) {
|
||||
DownloadFile -Path $Temp -Name $Tool[0] -Url $Tool[1]
|
||||
}
|
||||
|
||||
## Bail ##
|
||||
# If errors were encountered during downloads
|
||||
if ($DownloadErrors -gt 0) {
|
||||
Abort
|
||||
}
|
||||
|
||||
## Install ##
|
||||
# Visual C++ Runtimes
|
||||
Write-Host "Installing: Visual C++ Runtimes"
|
||||
$ArgumentList = @("/install", "/passive", "/norestart")
|
||||
Start-Process -FilePath "$Temp\vcredist_x86.exe" -ArgumentList $ArgumentList -Wait
|
||||
Start-Process -FilePath "$Temp\vcredist_x64.exe" -ArgumentList $ArgumentList -Wait
|
||||
|
||||
## Extract ##
|
||||
# 7-Zip
|
||||
Write-Host "Extracting: 7-Zip"
|
||||
try {
|
||||
$ArgumentList = @("/a", "$Temp\7z-installer.msi", "TARGETDIR=$Temp\7zi", "/qn")
|
||||
Start-Process -FilePath "$HostSystem32\msiexec.exe" -ArgumentList $ArgumentList -Wait
|
||||
$SevenZip = "$Temp\7zi\Files\7-Zip\7z.exe"
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\7z-extra.7z", "-o$Build\bin\amd64\7-Zip",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"x64\7za.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\7z-extra.7z", "-o$Build\bin\x86\7-Zip",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"7za.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Blue Screen View
|
||||
Write-Host "Extracting: BlueScreenView"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\bluescreenview64.zip", "-o$Build\bin\amd64\BlueScreenView",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\bluescreenview32.zip", "-o$Build\bin\x86\BlueScreenView",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# ConEmu
|
||||
Write-Host "Extracting: ConEmu"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\ConEmuPack.7z", "-o$Build\bin\amd64\ConEmu",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.exe"
|
||||
Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.map"
|
||||
Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.exe" "$Build\bin\amd64\ConEmu\ConEmu.exe" -Force
|
||||
Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.map" "$Build\bin\amd64\ConEmu\ConEmu.map" -Force
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\ConEmuPack.7z", "-o$Build\bin\x86\ConEmu",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.exe"
|
||||
Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.map"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Fast Copy
|
||||
Write-Host "Extracting: FastCopy"
|
||||
try {
|
||||
# Extract Installer
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\fastcopy.zip", "-o$Temp",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
# Extract 64-bit
|
||||
$ArgumentList = @(
|
||||
"/NOSUBDIR", "/DIR=$Build\bin\amd64\FastCopy",
|
||||
"/EXTRACT64")
|
||||
Start-Process -FilePath "$TEMP\FastCopy354_installer.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Build\bin\amd64\FastCopy\setup.exe" -Force
|
||||
|
||||
# Extract 32-bit
|
||||
$ArgumentList = @(
|
||||
"/NOSUBDIR", "/DIR=$Build\bin\x86\FastCopy",
|
||||
"/EXTRACT32")
|
||||
Start-Process -FilePath "$TEMP\FastCopy354_installer.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Build\bin\x86\FastCopy\setup.exe" -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
|
||||
# Killer Network Driver
|
||||
Write-Host "Extracting: Killer Network Driver"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\killerinf.zip", "-o$Build\Drivers\amd64\Killer",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"Production\Windows10-x64\Eth\*")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\killerinf.zip", "-o$Build\Drivers\x86\Killer",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"Production\Windows10-x86\Eth\*")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# HWiNFO
|
||||
Write-Host "Extracting: HWiNFO"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\hwinfo.zip", "-o$Build\bin\amd64\HWiNFO",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO64.exe")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\hwinfo.zip", "-o$Build\bin\x86\HWiNFO",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO32.exe")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\amd64\HWiNFO\HWiNFO64.exe" "$Build\bin\amd64\HWiNFO\HWiNFO.exe" -Force
|
||||
Move-Item "$Build\bin\x86\HWiNFO\HWiNFO32.exe" "$Build\bin\x86\HWiNFO\HWiNFO.exe" -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Notepad++
|
||||
Write-Host "Extracting: Notepad++"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\npp_amd64.7z", "-o$Build\bin\amd64\NotepadPlusPlus",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\npp_x86.7z", "-o$Build\bin\x86\NotepadPlusPlus",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\amd64\NotepadPlusPlus\notepad++.exe" "$Build\bin\amd64\NotepadPlusPlus\notepadplusplus.exe" -Force
|
||||
Move-Item "$Build\bin\x86\NotepadPlusPlus\notepad++.exe" "$Build\bin\x86\NotepadPlusPlus\notepadplusplus.exe" -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# NT Password Editor
|
||||
Write-Host "Extracting: NT Password Editor"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\ntpwed.zip", ('-o"{0}\bin\amd64\NT Password Editor"' -f $Build),
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"ntpwedit64.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\amd64\NT Password Editor\ntpwedit64.exe" "$Build\bin\amd64\NT Password Editor\ntpwedit.exe" -Force
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\ntpwed.zip", ('-o"{0}\bin\x86\NT Password Editor"' -f $Build),
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"ntpwedit.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# PhotoRec / TestDisk
|
||||
Write-Host "Extracting: PhotoRec / TestDisk"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\testdisk64.zip", "-o$Build\bin\amd64\TestDisk",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
# Remove destination since Move-Item -Force can't handle this recursive merge
|
||||
Remove-Item "$Build\bin\amd64\TestDisk" -Recurse -Force 2>&1 | Out-Null
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\amd64\TestDisk" -Force
|
||||
Remove-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\testdisk32.zip", "-o$Build\bin\x86\TestDisk",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
# Remove destination since Move-Item -Force can't handle this recursive merge
|
||||
Remove-Item "$Build\bin\x86\TestDisk" -Recurse -Force 2>&1 | Out-Null
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\x86\TestDisk" -Force
|
||||
Remove-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Prime95
|
||||
Write-Host "Extracting: Prime95"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\prime95_64.zip", "-o$Build\bin\amd64\Prime95",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\prime95_32.zip", "-o$Build\bin\x86\Prime95",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# ProduKey
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\produkey64.zip", "-o$Build\bin\amd64\ProduKey",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\produkey32.zip", "-o$Build\bin\x86\ProduKey",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Python (x64)
|
||||
Write-Host "Extracting: Python (x64)"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\python64.zip", "-o$Build\bin\amd64\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\psutil64.whl", "-o$Build\bin\amd64\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
try {
|
||||
Copy-Item -Path "$HostSystem32\vcruntime140.dll" -Destination "$Build\bin\amd64\python\vcruntime140.dll" -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to copy Visual C++ Runtime DLL." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Python (x32)
|
||||
Write-Host "Extracting: Python (x32)"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\python32.zip", "-o$Build\bin\x86\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\psutil32.whl", "-o$Build\bin\x86\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
try {
|
||||
Copy-Item -Path "$HostSysWOW64\vcruntime140.dll" -Destination "$Build\bin\x86\python\vcruntime140.dll" -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to copy Visual C++ Runtime DLL." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Q-Dir
|
||||
Write-Host "Extracting: Q-Dir"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\qdir64.zip", "-o$Build\bin\amd64",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\amd64\Q-Dir\Q-Dir_x64.exe" "$Build\bin\amd64\Q-Dir\Q-Dir.exe" -Force
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\qdir32.zip", "-o$Build\bin\x86",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# VirtIO Drivers
|
||||
Write-Host "Extracting: VirtIO Drivers"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\virtio-win.iso", "-o$Build\Drivers\amd64\VirtIO",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"*\w10\amd64\*")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\virtio-win.iso", "-o$Build\Drivers\x86\VirtIO",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"*\w10\x86\*")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# wimlib-imagex
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\wimlib64.zip", "-o$Build\bin\amd64\wimlib",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\wimlib32.zip", "-o$Build\bin\x86\wimlib",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
## Cleanup ##
|
||||
if (Ask-User "Delete temp files?") {
|
||||
Remove-Item "$Temp" -Recurse
|
||||
}
|
||||
}
|
||||
## Download Sources ##
|
||||
Download-SourceFiles
|
||||
Extract-SourceFiles
|
||||
|
||||
## Build ##
|
||||
foreach ($Arch in @("amd64", "x86")) {
|
||||
$Drivers = "$Build\Drivers\$Arch"
|
||||
$Mount = "$Build\Mount"
|
||||
$PEFiles = "$Build\PEFiles\$Arch"
|
||||
|
||||
# Copy WinPE files
|
||||
Write-Host "Copying files..."
|
||||
$Cmd = ("{0}\copype.cmd" -f $Env:WinPERoot)
|
||||
Start-Process -FilePath $Cmd -ArgumentList @($Arch, $PEFiles) -NoNewWindow -Wait
|
||||
# Copy WinPE files
|
||||
Write-Host "Copying files..."
|
||||
$Cmd = ("{0}\copype.cmd" -f $Env:WinPERoot)
|
||||
Start-Process -FilePath $Cmd -ArgumentList @($Arch, $TargetDir) -NoNewWindow -Wait
|
||||
|
||||
# Remove unwanted items
|
||||
foreach ($SubDir in @("media", "media\Boot", "media\EFI\Microsoft\Boot")) {
|
||||
foreach ($Item in Get-ChildItem "$PEFiles\$SubDir") {
|
||||
if ($Item.Name -inotmatch "^(boot|efi|en-us|sources|fonts|resources|bcd|memtest)") {
|
||||
Remove-Item -Path $Item.FullName -Recurse -Force
|
||||
}
|
||||
# Remove unwanted items
|
||||
foreach ($SubDir in @("media", "media\Boot", "media\EFI\Microsoft\Boot")) {
|
||||
foreach ($Item in Get-ChildItem "$TargetDir\$SubDir") {
|
||||
if ($Item.Name -inotmatch "^(boot|efi|en-us|sources|fonts|resources|bcd|memtest)") {
|
||||
Remove-Item -Path $Item.FullName -Recurse -Force
|
||||
}
|
||||
}
|
||||
|
||||
# Mount image
|
||||
Write-Host "Mounting image..."
|
||||
New-Item -Path $Mount -ItemType "directory" -Force | Out-Null
|
||||
Mount-WindowsImage -Path $Mount -ImagePath "$PEFiles\media\sources\boot.wim" -Index 1 -LogPath "$LogDir\DISM.log"
|
||||
|
||||
# Add drivers
|
||||
Add-WindowsDriver -Path $Mount -Driver $Drivers -Recurse -LogPath "$LogDir\DISM.log"
|
||||
|
||||
# Add packages
|
||||
Write-Host "Adding packages:"
|
||||
$WinPEPackages = @(
|
||||
"WinPE-EnhancedStorage",
|
||||
"WinPE-FMAPI",
|
||||
"WinPE-WMI",
|
||||
"WinPE-SecureStartup"
|
||||
)
|
||||
foreach ($Package in $WinPEPackages) {
|
||||
$PackagePath = ("{0}\{1}\WinPE_OCs\{2}.cab" -f $Env:WinPERoot, $Arch, $Package)
|
||||
Write-Host " $Package..."
|
||||
Add-WindowsPackage –PackagePath $PackagePath –Path $Mount -LogPath "$LogDir\DISM.log"
|
||||
$LangPackagePath = ("{0}\{1}\WinPE_OCs\en-us\{2}_en-us.cab" -f $Env:WinPERoot, $Arch, $Package)
|
||||
if (Test-Path $LangPackagePath) {
|
||||
Add-WindowsPackage –PackagePath $LangPackagePath –Path $Mount -LogPath "$LogDir\DISM.log"
|
||||
}
|
||||
}
|
||||
|
||||
# Set RamDisk size
|
||||
$ArgumentList = @(
|
||||
('/Image:"{0}"' -f $Mount),
|
||||
"/Set-ScratchSpace:512",
|
||||
('/LogPath:"{0}\DISM.log"' -f $LogDir)
|
||||
)
|
||||
Start-Process -FilePath $DISM -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
# Add tools
|
||||
Write-Host "Copying tools..."
|
||||
Copy-Item -Path "$Build\bin\$Arch" -Destination "$Mount\.bin" -Recurse -Force
|
||||
Copy-Item -Path "$Root\.pe_items\_include\*" -Destination "$Mount\.bin" -Recurse -Force
|
||||
if ($Arch -eq "amd64") {
|
||||
$DestIni = "$Mount\.bin\HWiNFO\HWiNFO64.INI"
|
||||
} else {
|
||||
$DestIni = "$Mount\.bin\HWiNFO\HWiNFO32.INI"
|
||||
}
|
||||
Move-Item -Path "$Mount\.bin\HWiNFO\HWiNFO.INI" -Destination $DestIni -Force
|
||||
Copy-Item -Path "$Root\Images\WinPE.jpg" -Destination "$Mount\.bin\ConEmu\ConEmu.jpg" -Recurse -Force
|
||||
Copy-Item -Path "$Bin\Scripts" -Destination "$Mount\.bin\Scripts" -Recurse -Force
|
||||
Copy-Item -Path "$Build\main.py" -Destination "$Mount\.bin\Scripts\settings\main.py" -Force
|
||||
|
||||
# Add System32 items
|
||||
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
||||
Copy-Item -Path "$Root\.pe_items\System32\*" -Destination "$Mount\Windows\System32" -Recurse -Force
|
||||
$ArgumentList = @("/f", "$Mount\Windows\System32\winpe.jpg", "/a")
|
||||
Start-Process -FilePath "$HostSystem32\takeown.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @("$Mount\Windows\System32\winpe.jpg", "/grant", "Administrators:F")
|
||||
Start-Process -FilePath "$HostSystem32\icacls.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Copy-Item -Path "$Root\Images\WinPE.jpg" -Destination "$Mount\Windows\System32\winpe.jpg" -Recurse -Force
|
||||
|
||||
# Load registry hives
|
||||
Write-Host "Updating Registry..."
|
||||
$Reg = "$HostSystem32\reg.exe"
|
||||
$ArgumentList = @("load", "HKLM\WinPE-SW", "$Mount\Windows\System32\config\SOFTWARE")
|
||||
Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @("load", "HKLM\WinPE-SYS", "$Mount\Windows\System32\config\SYSTEM")
|
||||
Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
# Add tools to path
|
||||
## .NET code to properly handle REG_EXPAND_SZ values
|
||||
## Credit: https://www.sepago.com/blog/2013/08/22/reading-and-writing-regexpandsz-data-with-powershell
|
||||
## By: Marius Gawenda
|
||||
$Hive = [Microsoft.Win32.Registry]::LocalMachine
|
||||
$RegPath = "WinPE-SYS\ControlSet001\Control\Session Manager\Environment"
|
||||
$RegKey = $Hive.OpenSubKey($RegPath)
|
||||
$CurValue = $RegKey.GetValue(
|
||||
"Path", $false, [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
|
||||
$NewValue = "$CurValue;%SystemDrive%\.bin\7-Zip;%SystemDrive%\.bin\python;%SystemDrive%\.bin\wimlib"
|
||||
Set-ItemProperty -Path "HKLM:\$RegPath" -Name "Path" -Value $NewValue -Force | Out-Null
|
||||
$Hive.close()
|
||||
$RegKey.close()
|
||||
|
||||
# Replace Notepad
|
||||
$RegPath = "HKLM:\WinPE-SW\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe"
|
||||
$NewValue = 'cmd /c "%SystemDrive%\.bin\NotepadPlusPlus\npp.cmd"'
|
||||
New-Item -Path $RegPath -Force | Out-Null
|
||||
New-ItemProperty -Path $RegPath -Name "Debugger" -Value $NewValue -Force | Out-Null
|
||||
|
||||
# Run garbage collection to release potential stale handles
|
||||
## Credit: https://jrich523.wordpress.com/2012/03/06/powershell-loading-and-unloading-registry-hives/
|
||||
Start-Sleep -Seconds 2
|
||||
[gc]::collect()
|
||||
|
||||
# Unload registry hives
|
||||
Start-Sleep -Seconds 2
|
||||
Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SW") -NoNewWindow -Wait
|
||||
Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SYS") -NoNewWindow -Wait
|
||||
|
||||
# Unmount image
|
||||
Write-Host "Dismounting image..."
|
||||
Dismount-WindowsImage -Path $Mount -Save -LogPath "$LogDir\DISM.log"
|
||||
|
||||
# Create ISO
|
||||
New-Item -Type Directory "$Root\OUT_PE" 2>&1 | Out-Null
|
||||
$ArgumentList = @("/iso", $PEFiles, "$Root\OUT_PE\$KitNameShort-WinPE-$Date-$Arch.iso")
|
||||
$Cmd = "{0}\MakeWinPEMedia.cmd" -f $Env:WinPERoot
|
||||
Start-Process -FilePath $Cmd -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
|
||||
# Mount image
|
||||
Write-Host "Mounting image..."
|
||||
New-Item -Path $MountDir -ItemType "directory" -Force | Out-Null
|
||||
Mount-WindowsImage -Path $MountDir -ImagePath "$TargetDir\media\sources\boot.wim" -Index 1
|
||||
|
||||
# Add drivers
|
||||
Write-Host "Adding drivers..."
|
||||
Add-WindowsDriver -Path $MountDir -Driver "$SetupDir\pe\drivers" -ForceUnsigned -Recurse
|
||||
|
||||
# Add packages
|
||||
Write-Host "Adding packages..."
|
||||
$WinPEPackages = @(
|
||||
"WinPE-EnhancedStorage",
|
||||
"WinPE-FMAPI",
|
||||
"WinPE-WMI",
|
||||
"WinPE-SecureStartup"
|
||||
)
|
||||
foreach ($Package in $WinPEPackages) {
|
||||
$PackagePath = ("{0}\{1}\WinPE_OCs\{2}.cab" -f $Env:WinPERoot, $Arch, $Package)
|
||||
Write-Host " $Package..."
|
||||
Add-WindowsPackage –PackagePath $PackagePath –Path $MountDir
|
||||
$LangPackagePath = ("{0}\{1}\WinPE_OCs\en-us\{2}_en-us.cab" -f $Env:WinPERoot, $Arch, $Package)
|
||||
if (Test-Path $LangPackagePath) {
|
||||
Add-WindowsPackage –PackagePath $LangPackagePath –Path $MountDir
|
||||
}
|
||||
}
|
||||
|
||||
# Set RamDisk size
|
||||
$ArgumentList = @(
|
||||
('/Image:"{0}"' -f $MountDir),
|
||||
"/Set-ScratchSpace:512"
|
||||
)
|
||||
Start-Process -FilePath $DISM -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
# Add tools
|
||||
Write-Host "Copying tools..."
|
||||
Copy-Item -Path "$BuildDir\additions\*" -Destination $MountDir -Recurse -Force
|
||||
Copy-Item -Path "$RootDir\Images\WinPE.jpg" -Destination "$MountDir\Program Files\ConEmu\ConEmu.jpg" -Recurse -Force
|
||||
|
||||
# Add System32 items
|
||||
$ArgumentList = @("/f", "$MountDir\Windows\System32\winpe.jpg", "/a")
|
||||
Start-Process -FilePath "$HostSystem32\takeown.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @("$MountDir\Windows\System32\winpe.jpg", "/grant", "Administrators:F")
|
||||
Start-Process -FilePath "$HostSystem32\icacls.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Copy-Item -Path "$RootDir\Images\WinPE.jpg" -Destination "$MountDir\Windows\System32\winpe.jpg" -Force
|
||||
|
||||
# Load registry hives
|
||||
Write-Host "Updating Registry..."
|
||||
$Reg = "$HostSystem32\reg.exe"
|
||||
$ArgumentList = @("load", "HKLM\WinPE-SW", "$MountDir\Windows\System32\config\SOFTWARE")
|
||||
Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @("load", "HKLM\WinPE-SYS", "$MountDir\Windows\System32\config\SYSTEM")
|
||||
Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
# Configure CMD (command aliases "DOSKEY Macros" and tab completion)
|
||||
$RegPath = "HKLM:\WinPE-SW\Microsoft\Command Processor"
|
||||
$NewValue = "doskey /macrofile=X:\Windows\System32\custom.doskey"
|
||||
New-Item -Path $RegPath -Force | Out-Null
|
||||
New-ItemProperty -Path $RegPath -Name "AutoRun" -Value $NewValue -Force | Out-Null
|
||||
New-ItemProperty -Path $RegPath -Name "CompletionChar" -Value 9 -Type DWord -Force | Out-Null
|
||||
New-ItemProperty -Path $RegPath -Name "PathCompletionChar" -Value 9 -Type DWord -Force | Out-Null
|
||||
|
||||
# Add tools to path
|
||||
## .NET code to properly handle REG_EXPAND_SZ values
|
||||
## Credit: https://www.sepago.com/blog/2013/08/22/reading-and-writing-regexpandsz-data-with-powershell
|
||||
## By: Marius Gawenda
|
||||
$Hive = [Microsoft.Win32.Registry]::LocalMachine
|
||||
$RegPath = "WinPE-SYS\ControlSet001\Control\Session Manager\Environment"
|
||||
$RegKey = $Hive.OpenSubKey($RegPath)
|
||||
$CurValue = $RegKey.GetValue(
|
||||
"Path", $false, [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
|
||||
$NewValue = "$CurValue;%ProgramFiles%\7-Zip;%ProgramFiles%\OSFMount;%ProgramFiles%\wimlib"
|
||||
Set-ItemProperty -Path "HKLM:\$RegPath" -Name "Path" -Value $NewValue -Force | Out-Null
|
||||
$Hive.close()
|
||||
$RegKey.close()
|
||||
|
||||
# Run garbage collection to release potential stale handles
|
||||
## Credit: https://jrich523.wordpress.com/2012/03/06/powershell-loading-and-unloading-registry-hives/
|
||||
Start-Sleep -Seconds 2
|
||||
[gc]::collect()
|
||||
|
||||
# Unload registry hives
|
||||
Start-Sleep -Seconds 2
|
||||
Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SW") -NoNewWindow -Wait
|
||||
Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SYS") -NoNewWindow -Wait
|
||||
|
||||
# Unmount image
|
||||
Write-Host "Dismounting image..."
|
||||
Dismount-WindowsImage -Path $MountDir -Save
|
||||
|
||||
# Rebuild image
|
||||
Write-Host "Recompressing image..."
|
||||
Move-Item "$TargetDir\media\sources\boot.wim" "$TargetDir\media\sources\boot-edited.wim"
|
||||
Export-WindowsImage -DestinationImagePath "$TargetDir\media\sources\boot.wim" -SourceImagePath "$TargetDir\media\sources\boot-edited.wim" -SourceIndex 1 -CompressionType Max
|
||||
Remove-Item "$TargetDir\media\sources\boot-edited.wim" -Force
|
||||
|
||||
# Create ISO
|
||||
New-Item -Type Directory "$SetupDir\OUT_PE" 2>&1 | Out-Null
|
||||
$ArgumentList = @("/iso", $TargetDir, "$SetupDir\OUT_PE\$KitNameShort-WinPE-$Date-$Arch.iso", "/f")
|
||||
$Cmd = "{0}\MakeWinPEMedia.cmd" -f $Env:WinPERoot
|
||||
Start-Process -FilePath $Cmd -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
## Cleanup ##
|
||||
Remove-Item -Path "$Build\Mount" -Recurse -Force
|
||||
Remove-Item -Path "$Build\PEFiles" -Recurse -Force
|
||||
Remove-Item -Path "$MountDir" -Recurse -Force
|
||||
|
||||
## Done ##
|
||||
Pop-Location
|
||||
Write-Host "`nDone."
|
||||
WKPause "Press Enter to exit... "
|
||||
}
|
||||
|
||||
|
|
|
|||
4
setup/pe/drivers/README.md
Normal file
4
setup/pe/drivers/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# WizardKit: WinPE - Drivers #
|
||||
|
||||
All drivers added to this folder will be injected into the WinPE image (recursively)
|
||||
|
||||
38
setup/pe/sources.json
Normal file
38
setup/pe/sources.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
{
|
||||
"Item": "7-Zip",
|
||||
"Hash": "eb94db7341e59f1871a4d4f60165563f1881e33aef093b7d8427651c2a0f4b6f",
|
||||
"Name": "7z.msi",
|
||||
"Url": "https://www.7-zip.org/a/7z2407-x64.msi"
|
||||
},
|
||||
{
|
||||
"Item": "ConEmu",
|
||||
"Hash": "2a9b98ebecaede62665ef427b05b3a5ccdac7bd3202414fc0f4c10825b4f4ea2",
|
||||
"Name": "ConEmu.7z",
|
||||
"Url": "https://github.com/Maximus5/ConEmu/releases/download/v23.07.24/ConEmuPack.230724.7z"
|
||||
},
|
||||
{
|
||||
"Item": "Notepad++",
|
||||
"Hash": "ef9b63b1f5f06ffa3d5fbed698f57c4dfb2f2ac88c340f0fd1dbad0c3ef8a524",
|
||||
"Name": "npp.7z",
|
||||
"Url": "https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v8.6.7/npp.8.6.7.portable.minimalist.x64.7z"
|
||||
},
|
||||
{
|
||||
"Item": "NTPWEdit",
|
||||
"Hash": "ca832bd62d8eb38541db1108054d1b4b52869837470ee770c39c2a5bea973e31",
|
||||
"Name": "ntpwedit.zip",
|
||||
"Url": "http://cdslow.org.ru/files/ntpwedit/ntpwed07.zip"
|
||||
},
|
||||
{
|
||||
"Item": "OSFMount",
|
||||
"Hash": "059B3F45902DF6FD6A7473ECDDAC3B16A73B49817F1FC85F118E6701F2493AC8",
|
||||
"Name": "osfmount.7z",
|
||||
"Url": "https://nextcloud.2shirt.work/s/2jA74iK2TdQKnSe/download/OSFMount.7z"
|
||||
},
|
||||
{
|
||||
"Item": "wimlib",
|
||||
"Hash": "6d99e242bfbc6d36fc987d433d63772180551b7f2d8de43e9561535a3e2c16d8",
|
||||
"Name": "wimlib.zip",
|
||||
"Url": "https://wimlib.net/downloads/wimlib-1.14.4-windows-x86_64-bin.zip"
|
||||
}
|
||||
]
|
||||
BIN
setup/ufd/._.
BIN
setup/ufd/._.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
setup/ufd/macOS-boot-icon.tar
Normal file
BIN
setup/ufd/macOS-boot-icon.tar
Normal file
Binary file not shown.
|
|
@ -95,9 +95,6 @@ if ($MyInvocation.InvocationName -ne ".") {
|
|||
DownloadFile -Path $Temp -Name "python32.zip" -Url $Sources.'Python x32'
|
||||
DownloadFile -Path $Temp -Name "python64.zip" -Url $Sources.'Python x64'
|
||||
|
||||
# Python: docopt
|
||||
Copy-Item -Path "$WD\docopt\docopt-0.6.2-py2.py3-none-any.whl" -Destination "$Temp\docopt.whl"
|
||||
|
||||
# Python: psutil
|
||||
$DownloadPage = "https://pypi.org/project/psutil/"
|
||||
$RegEx = "href=.*-abi3-win32.whl"
|
||||
|
|
@ -159,7 +156,6 @@ if ($MyInvocation.InvocationName -ne ".") {
|
|||
"Pygments.whl",
|
||||
"certifi.whl",
|
||||
"chardet.whl",
|
||||
"docopt.whl",
|
||||
"idna.whl",
|
||||
"prompt_toolkit.whl",
|
||||
"psutil$Arch.whl",
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
Copyright (c) 2012 Vladimir Keleshev, <vladimir@keleshev.com>
|
||||
|
||||
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.
|
||||
Binary file not shown.
Loading…
Reference in a new issue