v1.0.0 - WizardHat
## Major Update ## * Build Kit.cmd * This script will build a fully functional kit requiring only PowerShell 3.0+ be installed prior. * All launchers are now generated during builds and updates (by update_kit.py) * This allows for a much leaner code-base to manage * Lots of bugfixes, cleanup, and other adjustments.
This commit is contained in:
commit
537973fa90
156 changed files with 11517 additions and 14946 deletions
787
.bin/ConEmu/ConEmu.xml
Normal file
787
.bin/ConEmu/ConEmu.xml
Normal file
|
|
@ -0,0 +1,787 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<key name="Software">
|
||||||
|
<key name="ConEmu">
|
||||||
|
<key name=".Vanilla" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="StartType" type="hex" data="02"/>
|
||||||
|
<value name="CmdLine" type="string" data=""/>
|
||||||
|
<value name="StartTasksFile" type="string" data=""/>
|
||||||
|
<value name="StartTasksName" type="string" data="{Shells::cmd}"/>
|
||||||
|
<value name="StartFarFolders" type="hex" data="00"/>
|
||||||
|
<value name="StartFarEditors" type="hex" data="00"/>
|
||||||
|
<value name="StartCreateDelay" type="ulong" data="100"/>
|
||||||
|
<value name="ColorTable00" type="dword" data="00303030"/>
|
||||||
|
<value name="ColorTable01" type="dword" data="00ff5b1f"/>
|
||||||
|
<value name="ColorTable02" type="dword" data="0000ffaf"/>
|
||||||
|
<value name="ColorTable03" type="dword" data="00ffff87"/>
|
||||||
|
<value name="ColorTable04" type="dword" data="002929ef"/>
|
||||||
|
<value name="ColorTable05" type="dword" data="00ff8ad1"/>
|
||||||
|
<value name="ColorTable06" type="dword" data="000087ff"/>
|
||||||
|
<value name="ColorTable07" type="dword" data="00c6c6c6"/>
|
||||||
|
<value name="ColorTable08" type="dword" data="00b2b2b2"/>
|
||||||
|
<value name="ColorTable09" type="dword" data="00d7af5f"/>
|
||||||
|
<value name="ColorTable10" type="dword" data="0000dba1"/>
|
||||||
|
<value name="ColorTable11" type="dword" data="00afd700"/>
|
||||||
|
<value name="ColorTable12" type="dword" data="004b4bff"/>
|
||||||
|
<value name="ColorTable13" type="dword" data="00a34eff"/>
|
||||||
|
<value name="ColorTable14" type="dword" data="004fe9fc"/>
|
||||||
|
<value name="ColorTable15" type="dword" data="00e7fdfd"/>
|
||||||
|
<value name="ColorTable16" type="dword" data="00000000"/>
|
||||||
|
<value name="ColorTable17" type="dword" data="00000080"/>
|
||||||
|
<value name="ColorTable18" type="dword" data="00008000"/>
|
||||||
|
<value name="ColorTable19" type="dword" data="00008080"/>
|
||||||
|
<value name="ColorTable20" type="dword" data="00800000"/>
|
||||||
|
<value name="ColorTable21" type="dword" data="00800080"/>
|
||||||
|
<value name="ColorTable22" type="dword" data="00808000"/>
|
||||||
|
<value name="ColorTable23" type="dword" data="00c0c0c0"/>
|
||||||
|
<value name="ColorTable24" type="dword" data="00808080"/>
|
||||||
|
<value name="ColorTable25" type="dword" data="000000ff"/>
|
||||||
|
<value name="ColorTable26" type="dword" data="0000ff00"/>
|
||||||
|
<value name="ColorTable27" type="dword" data="0000ffff"/>
|
||||||
|
<value name="ColorTable28" type="dword" data="00ff0000"/>
|
||||||
|
<value name="ColorTable29" type="dword" data="00ff00ff"/>
|
||||||
|
<value name="ColorTable30" type="dword" data="00ffff00"/>
|
||||||
|
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||||
|
<value name="ExtendColors" type="hex" data="00"/>
|
||||||
|
<value name="ExtendColorIdx" type="hex" data="0e"/>
|
||||||
|
<value name="TextColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="BackColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="PopTextColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="ExtendFonts" type="hex" data="00"/>
|
||||||
|
<value name="ExtendFontNormalIdx" type="hex" data="01"/>
|
||||||
|
<value name="ExtendFontBoldIdx" type="hex" data="0c"/>
|
||||||
|
<value name="ExtendFontItalicIdx" type="hex" data="0d"/>
|
||||||
|
<value name="CursorTypeActive" type="dword" data="000232c1"/>
|
||||||
|
<value name="CursorTypeInactive" type="dword" data="00823283"/>
|
||||||
|
<value name="ClipboardDetectLineEnd" type="hex" data="01"/>
|
||||||
|
<value name="ClipboardBashMargin" type="hex" data="00"/>
|
||||||
|
<value name="ClipboardTrimTrailing" type="hex" data="02"/>
|
||||||
|
<value name="ClipboardEOL" type="hex" data="00"/>
|
||||||
|
<value name="ClipboardArrowStart" type="hex" data="01"/>
|
||||||
|
<value name="ClipboardAllLines" type="hex" data="01"/>
|
||||||
|
<value name="ClipboardFirstLine" type="hex" data="01"/>
|
||||||
|
<value name="ClipboardClickPromptPosition" type="hex" data="02"/>
|
||||||
|
<value name="ClipboardDeleteLeftWord" type="hex" data="02"/>
|
||||||
|
<value name="TrueColorerSupport" type="hex" data="01"/>
|
||||||
|
<value name="VividColors" type="hex" data="01"/>
|
||||||
|
<value name="FadeInactive" type="hex" data="01"/>
|
||||||
|
<value name="FadeInactiveLow" type="hex" data="00"/>
|
||||||
|
<value name="FadeInactiveHigh" type="hex" data="d0"/>
|
||||||
|
<value name="ConVisible" type="hex" data="00"/>
|
||||||
|
<value name="UseInjects" type="hex" data="01"/>
|
||||||
|
<value name="SetDefaultTerminal" type="hex" data="00"/>
|
||||||
|
<value name="SetDefaultTerminalStartup" type="hex" data="00"/>
|
||||||
|
<value name="SetDefaultTerminalStartupTSA" type="hex" data="00"/>
|
||||||
|
<value name="DefaultTerminalAgressive" type="hex" data="01"/>
|
||||||
|
<value name="DefaultTerminalNoInjects" type="hex" data="00"/>
|
||||||
|
<value name="DefaultTerminalNewWindow" type="hex" data="00"/>
|
||||||
|
<value name="DefaultTerminalDebugLog" type="hex" data="00"/>
|
||||||
|
<value name="DefaultTerminalConfirm" type="hex" data="01"/>
|
||||||
|
<value name="DefaultTerminalApps" type="string" data="explorer.exe"/>
|
||||||
|
<value name="ProcessAnsi" type="hex" data="01"/>
|
||||||
|
<value name="AnsiExecution" type="hex" data="01"/>
|
||||||
|
<value name="AnsiAllowedCommands" type="multi">
|
||||||
|
<line data="cmd -cur_console:R /cGitShowBranch.cmd"/>
|
||||||
|
</value>
|
||||||
|
<value name="AnsiLog" type="hex" data="00"/>
|
||||||
|
<value name="AnsiLogPath" type="string" data="%UserProfile%\ConEmu\Logs\"/>
|
||||||
|
<value name="KillSshAgent" type="hex" data="01"/>
|
||||||
|
<value name="ProcessNewConArg" type="hex" data="01"/>
|
||||||
|
<value name="ProcessCmdStart" type="hex" data="00"/>
|
||||||
|
<value name="ProcessCtrlZ" type="hex" data="00"/>
|
||||||
|
<value name="SuppressBells" type="hex" data="01"/>
|
||||||
|
<value name="ConsoleExceptionHandler" type="hex" data="00"/>
|
||||||
|
<value name="UseClink" type="hex" data="01"/>
|
||||||
|
<value name="StoreTaskbarkTasks" type="hex" data="01"/>
|
||||||
|
<value name="StoreTaskbarCommands" type="hex" data="00"/>
|
||||||
|
<value name="JumpListAutoUpdate" type="hex" data="01"/>
|
||||||
|
<value name="SaveCmdHistory" type="hex" data="01"/>
|
||||||
|
<value name="CmdLineHistory" type="multi">
|
||||||
|
<line data="msys2_shell.cmd -conemu"/>
|
||||||
|
<line data="msys2_shell.cmd"/>
|
||||||
|
<line data="cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd""/>
|
||||||
|
</value>
|
||||||
|
<value name="SingleInstance" type="hex" data="00"/>
|
||||||
|
<value name="ShowHelpTooltips" type="hex" data="01"/>
|
||||||
|
<value name="Multi" type="hex" data="01"/>
|
||||||
|
<value name="Multi.ShowButtons" type="hex" data="01"/>
|
||||||
|
<value name="Multi.ShowSearch" type="hex" data="01"/>
|
||||||
|
<value name="Multi.NumberInCaption" type="hex" data="00"/>
|
||||||
|
<value name="Multi.CloseConfirmFlags" type="hex" data="04"/>
|
||||||
|
<value name="Multi.NewConfirm" type="hex" data="00"/>
|
||||||
|
<value name="Multi.DupConfirm" type="hex" data="01"/>
|
||||||
|
<value name="Multi.DetachConfirm" type="hex" data="01"/>
|
||||||
|
<value name="Multi.UseArrows" type="hex" data="00"/>
|
||||||
|
<value name="Multi.UseNumbers" type="hex" data="01"/>
|
||||||
|
<value name="Multi.UseWinTab" type="hex" data="00"/>
|
||||||
|
<value name="Multi.AutoCreate" type="hex" data="00"/>
|
||||||
|
<value name="Multi.LeaveOnClose" type="hex" data="00"/>
|
||||||
|
<value name="Multi.HideOnClose" type="hex" data="00"/>
|
||||||
|
<value name="Multi.MinByEsc" type="hex" data="00"/>
|
||||||
|
<value name="MapShiftEscToEsc" type="hex" data="01"/>
|
||||||
|
<value name="Multi.Iterate" type="hex" data="01"/>
|
||||||
|
<value name="Multi.SplitWidth" type="hex" data="04"/>
|
||||||
|
<value name="Multi.SplitHeight" type="hex" data="04"/>
|
||||||
|
<value name="KeyboardHooks" type="hex" data="02"/>
|
||||||
|
<value name="FontName" type="string" data="Consolas"/>
|
||||||
|
<value name="FontName2" type="string" data=""/>
|
||||||
|
<value name="FontAutoSize" type="hex" data="00"/>
|
||||||
|
<value name="FontSize" type="ulong" data="14"/>
|
||||||
|
<value name="FontSizeX" type="ulong" data="0"/>
|
||||||
|
<value name="FontUseDpi" type="hex" data="01"/>
|
||||||
|
<value name="FontUseUnits" type="hex" data="01"/>
|
||||||
|
<value name="FontSizeX2" type="ulong" data="0"/>
|
||||||
|
<value name="FontSizeX3" type="ulong" data="0"/>
|
||||||
|
<value name="FontCharSet" type="hex" data="01"/>
|
||||||
|
<value name="Anti-aliasing" type="ulong" data="6"/>
|
||||||
|
<value name="FontBold" type="hex" data="00"/>
|
||||||
|
<value name="FontItalic" type="hex" data="00"/>
|
||||||
|
<value name="Monospace" type="hex" data="01"/>
|
||||||
|
<value name="CompressLongStrings" type="hex" data="01"/>
|
||||||
|
<value name="BackGround Image show" type="hex" data="01"/>
|
||||||
|
<value name="BackGround Image" type="string" data="ConEmu.png"/>
|
||||||
|
<value name="bgImageDarker" type="hex" data="60"/>
|
||||||
|
<value name="bgImageColors" type="dword" data="ffffffff"/>
|
||||||
|
<value name="bgOperation" type="hex" data="07"/>
|
||||||
|
<value name="bgPluginAllowed" type="hex" data="01"/>
|
||||||
|
<value name="AlphaValue" type="hex" data="ff"/>
|
||||||
|
<value name="AlphaValueSeparate" type="hex" data="00"/>
|
||||||
|
<value name="AlphaValueInactive" type="hex" data="92"/>
|
||||||
|
<value name="UserScreenTransparent" type="hex" data="00"/>
|
||||||
|
<value name="ColorKeyTransparent" type="hex" data="00"/>
|
||||||
|
<value name="ColorKeyValue" type="dword" data="00010101"/>
|
||||||
|
<value name="UseCurrentSizePos" type="hex" data="01"/>
|
||||||
|
<value name="AutoSaveSizePos" type="hex" data="00"/>
|
||||||
|
<value name="Cascaded" type="hex" data="00"/>
|
||||||
|
<value name="IntegralSize" type="hex" data="00"/>
|
||||||
|
<value name="WindowMode" type="dword" data="00000520"/>
|
||||||
|
<value name="ConWnd X" type="long" data="6"/>
|
||||||
|
<value name="ConWnd Y" type="long" data="6"/>
|
||||||
|
<value name="LastMonitor" type="string" data="0,0,1366,728"/>
|
||||||
|
<value name="ConWnd Width" type="dword" data="0200004b"/>
|
||||||
|
<value name="ConWnd Height" type="dword" data="02000033"/>
|
||||||
|
<value name="16bit Height" type="ulong" data="0"/>
|
||||||
|
<value name="QuakeStyle" type="hex" data="00"/>
|
||||||
|
<value name="Restore2ActiveMon" type="hex" data="00"/>
|
||||||
|
<value name="QuakeAnimation" type="ulong" data="300"/>
|
||||||
|
<value name="HideCaption" type="hex" data="01"/>
|
||||||
|
<value name="HideChildCaption" type="hex" data="01"/>
|
||||||
|
<value name="FocusInChildWindows" type="hex" data="01"/>
|
||||||
|
<value name="HideCaptionAlways" type="hex" data="00"/>
|
||||||
|
<value name="HideCaptionAlwaysFrame" type="hex" data="ff"/>
|
||||||
|
<value name="HideCaptionAlwaysDelay" type="ulong" data="2000"/>
|
||||||
|
<value name="HideCaptionAlwaysDisappear" type="ulong" data="2000"/>
|
||||||
|
<value name="DownShowHiddenMessage" type="hex" data="00"/>
|
||||||
|
<value name="DownShowExOnTopMessage" type="hex" data="00"/>
|
||||||
|
<value name="ConsoleFontName" type="string" data="Lucida Console"/>
|
||||||
|
<value name="ConsoleFontWidth" type="long" data="3"/>
|
||||||
|
<value name="ConsoleFontHeight" type="long" data="5"/>
|
||||||
|
<value name="DefaultBufferHeight" type="long" data="1000"/>
|
||||||
|
<value name="AutoBufferHeight" type="hex" data="01"/>
|
||||||
|
<value name="UseScrollLock" type="hex" data="01"/>
|
||||||
|
<value name="CmdOutputCP" type="long" data="0"/>
|
||||||
|
<value name="ComSpec.Type" type="hex" data="00"/>
|
||||||
|
<value name="ComSpec.Bits" type="hex" data="00"/>
|
||||||
|
<value name="ComSpec.UpdateEnv" type="hex" data="00"/>
|
||||||
|
<value name="ComSpec.EnvAddPath" type="hex" data="01"/>
|
||||||
|
<value name="ComSpec.EnvAddExePath" type="hex" data="01"/>
|
||||||
|
<value name="ComSpec.UncPaths" type="hex" data="00"/>
|
||||||
|
<value name="ComSpec.Path" type="string" data=""/>
|
||||||
|
<value name="EnvironmentSet" type="multi">
|
||||||
|
<line data="set PATH=%ConEmuBaseDir%\Scripts;%PATH%"/>
|
||||||
|
</value>
|
||||||
|
<value name="CTS.Intelligent" type="hex" data="01"/>
|
||||||
|
<value name="CTS.IntelligentExceptions" type="string" data="far|vim"/>
|
||||||
|
<value name="CTS.AutoCopy" type="hex" data="01"/>
|
||||||
|
<value name="CTS.ResetOnRelease" type="hex" data="01"/>
|
||||||
|
<value name="CTS.IBeam" type="hex" data="01"/>
|
||||||
|
<value name="CTS.EndOnTyping" type="hex" data="00"/>
|
||||||
|
<value name="CTS.EndOnKeyPress" type="hex" data="00"/>
|
||||||
|
<value name="CTS.EraseBeforeReset" type="hex" data="01"/>
|
||||||
|
<value name="CTS.Freeze" type="hex" data="00"/>
|
||||||
|
<value name="CTS.SelectBlock" type="hex" data="01"/>
|
||||||
|
<value name="CTS.SelectText" type="hex" data="01"/>
|
||||||
|
<value name="CTS.HtmlFormat" type="hex" data="00"/>
|
||||||
|
<value name="CTS.ForceLocale" type="dword" data="00000000"/>
|
||||||
|
<value name="CTS.RBtnAction" type="hex" data="03"/>
|
||||||
|
<value name="CTS.MBtnAction" type="hex" data="00"/>
|
||||||
|
<value name="CTS.ColorIndex" type="hex" data="e0"/>
|
||||||
|
<value name="ClipboardConfirmEnter" type="hex" data="01"/>
|
||||||
|
<value name="ClipboardConfirmLonger" type="ulong" data="200"/>
|
||||||
|
<value name="FarGotoEditorOpt" type="hex" data="01"/>
|
||||||
|
<value name="FarGotoEditorPath" type="string" data="far.exe /e%1:%2 "%3""/>
|
||||||
|
<value name="HighlightMouseRow" type="hex" data="00"/>
|
||||||
|
<value name="HighlightMouseCol" type="hex" data="00"/>
|
||||||
|
<value name="FixFarBorders" type="hex" data="01"/>
|
||||||
|
<value name="Anti-aliasing2" type="hex" data="00"/>
|
||||||
|
<value name="FixFarBordersRanges" type="string" data="2013-25C4;"/>
|
||||||
|
<value name="ExtendUCharMap" type="hex" data="01"/>
|
||||||
|
<value name="EnhanceGraphics" type="hex" data="01"/>
|
||||||
|
<value name="EnhanceButtons" type="hex" data="00"/>
|
||||||
|
<value name="PartBrush75" type="hex" data="c8"/>
|
||||||
|
<value name="PartBrush50" type="hex" data="96"/>
|
||||||
|
<value name="PartBrush25" type="hex" data="5a"/>
|
||||||
|
<value name="PartBrushBlack" type="hex" data="20"/>
|
||||||
|
<value name="RightClick opens context menu" type="hex" data="02"/>
|
||||||
|
<value name="RightClickMacro2" type="string" data=""/>
|
||||||
|
<value name="SendAltTab" type="hex" data="00"/>
|
||||||
|
<value name="SendAltEsc" type="hex" data="00"/>
|
||||||
|
<value name="SendAltPrintScrn" type="hex" data="00"/>
|
||||||
|
<value name="SendPrintScrn" type="hex" data="00"/>
|
||||||
|
<value name="SendCtrlEsc" type="hex" data="00"/>
|
||||||
|
<value name="Min2Tray" type="hex" data="01"/>
|
||||||
|
<value name="AlwaysShowTrayIcon" type="hex" data="01"/>
|
||||||
|
<value name="SafeFarClose" type="hex" data="01"/>
|
||||||
|
<value name="SafeFarCloseMacro" type="string" data=""/>
|
||||||
|
<value name="FARuseASCIIsort" type="hex" data="00"/>
|
||||||
|
<value name="ShellNoZoneCheck" type="hex" data="00"/>
|
||||||
|
<value name="FixAltOnAltTab" type="hex" data="00"/>
|
||||||
|
<value name="UseAltGrayPlus" type="hex" data="01"/>
|
||||||
|
<value name="DisableMouse" type="hex" data="00"/>
|
||||||
|
<value name="RSelectionFix" type="hex" data="01"/>
|
||||||
|
<value name="MouseSkipActivation" type="hex" data="01"/>
|
||||||
|
<value name="MouseSkipMoving" type="hex" data="01"/>
|
||||||
|
<value name="MouseDragWindow" type="hex" data="01"/>
|
||||||
|
<value name="FarHourglass" type="hex" data="01"/>
|
||||||
|
<value name="FarHourglassDelay" type="ulong" data="500"/>
|
||||||
|
<value name="Dnd" type="hex" data="01"/>
|
||||||
|
<value name="DndDrop" type="hex" data="01"/>
|
||||||
|
<value name="DefCopy" type="hex" data="01"/>
|
||||||
|
<value name="DropUseMenu" type="hex" data="02"/>
|
||||||
|
<value name="DragOverlay" type="hex" data="01"/>
|
||||||
|
<value name="DragShowIcons" type="hex" data="01"/>
|
||||||
|
<value name="DebugSteps" type="hex" data="00"/>
|
||||||
|
<value name="DebugLog" type="hex" data="00"/>
|
||||||
|
<value name="DragPanel" type="hex" data="02"/>
|
||||||
|
<value name="DragPanelBothEdges" type="hex" data="00"/>
|
||||||
|
<value name="KeyBarRClick" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Show" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Flags" type="dword" data="00000002"/>
|
||||||
|
<value name="StatusFontFace" type="string" data="Segoe UI"/>
|
||||||
|
<value name="StatusFontCharSet" type="ulong" data="0"/>
|
||||||
|
<value name="StatusFontHeight" type="long" data="12"/>
|
||||||
|
<value name="StatusBar.Color.Back" type="dword" data="00423607"/>
|
||||||
|
<value name="StatusBar.Color.Light" type="dword" data="00e3f6fd"/>
|
||||||
|
<value name="StatusBar.Color.Dark" type="dword" data="00a1a193"/>
|
||||||
|
<value name="StatusBar.Hide.VCon" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.CapsL" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.NumL" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.ScrL" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.VisL" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Lang" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.KeyHooks" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.WPos" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.WSize" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.WClient" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.WWork" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.WVBack" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.WVDC" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Style" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.StyleEx" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.hFore" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.hFocus" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Zoom" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.ABuf" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.CPos" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.CSize" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.BSize" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.CurX" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.CurY" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.CurS" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.CurI" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.ConEmuPID" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.ConEmuHWND" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.ConEmuView" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Srv" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.SrvHWND" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Transparency" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.New" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.Sync" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.Proc" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.Title" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Time" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.Resize" type="hex" data="00"/>
|
||||||
|
<value name="Tabs" type="hex" data="00"/>
|
||||||
|
<value name="TabsLocation" type="hex" data="00"/>
|
||||||
|
<value name="TabIcons" type="hex" data="01"/>
|
||||||
|
<value name="OneTabPerGroup" type="hex" data="00"/>
|
||||||
|
<value name="ActivateSplitMouseOver" type="hex" data="01"/>
|
||||||
|
<value name="TabSelf" type="hex" data="01"/>
|
||||||
|
<value name="TabLazy" type="hex" data="01"/>
|
||||||
|
<value name="TabFlashChanged" type="long" data="8"/>
|
||||||
|
<value name="TabRecent" type="hex" data="01"/>
|
||||||
|
<value name="TabDblClick" type="ulong" data="1"/>
|
||||||
|
<value name="TabBtnDblClick" type="ulong" data="0"/>
|
||||||
|
<value name="TabsOnTaskBar" type="hex" data="02"/>
|
||||||
|
<value name="TaskBarOverlay" type="hex" data="01"/>
|
||||||
|
<value name="TaskbarProgress" type="hex" data="01"/>
|
||||||
|
<value name="TabCloseMacro" type="string" data=""/>
|
||||||
|
<value name="TabFontFace" type="string" data="Segoe UI"/>
|
||||||
|
<value name="TabFontCharSet" type="ulong" data="0"/>
|
||||||
|
<value name="TabFontHeight" type="long" data="13"/>
|
||||||
|
<value name="SaveAllEditors" type="string" data=""/>
|
||||||
|
<value name="ToolbarAddSpace" type="long" data="0"/>
|
||||||
|
<value name="TabConsole" type="string" data="<%c> %s"/>
|
||||||
|
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
||||||
|
<value name="TabSkipWords" type="string" data="Administrator:|Администратор:"/>
|
||||||
|
<value name="TabPanels" type="string" data="<%c> %s"/>
|
||||||
|
<value name="TabEditor" type="string" data="<%c.%i>{%s}"/>
|
||||||
|
<value name="TabEditorModified" type="string" data="<%c.%i>[%s] *"/>
|
||||||
|
<value name="TabViewer" type="string" data="<%c.%i>[%s]"/>
|
||||||
|
<value name="TabLenMax" type="ulong" data="20"/>
|
||||||
|
<value name="AdminTitleSuffix" type="string" data=" (Admin)"/>
|
||||||
|
<value name="AdminShowShield" type="hex" data="01"/>
|
||||||
|
<value name="HideInactiveConsoleTabs" type="hex" data="00"/>
|
||||||
|
<value name="ShowFarWindows" type="hex" data="01"/>
|
||||||
|
<value name="TryToCenter" type="hex" data="00"/>
|
||||||
|
<value name="CenterConsolePad" type="ulong" data="0"/>
|
||||||
|
<value name="ShowScrollbar" type="hex" data="02"/>
|
||||||
|
<value name="ScrollBarAppearDelay" type="ulong" data="100"/>
|
||||||
|
<value name="ScrollBarDisappearDelay" type="ulong" data="200"/>
|
||||||
|
<value name="IconID" type="ulong" data="1"/>
|
||||||
|
<value name="MainTimerElapse" type="ulong" data="10"/>
|
||||||
|
<value name="MainTimerInactiveElapse" type="ulong" data="1000"/>
|
||||||
|
<value name="AffinityMask" type="dword" data="00000000"/>
|
||||||
|
<value name="SkipFocusEvents" type="hex" data="00"/>
|
||||||
|
<value name="MonitorConsoleLang" type="hex" data="03"/>
|
||||||
|
<value name="SnapToDesktopEdges" type="hex" data="00"/>
|
||||||
|
<value name="AlwaysOnTop" type="hex" data="00"/>
|
||||||
|
<value name="SleepInBackground" type="hex" data="00"/>
|
||||||
|
<value name="RetardInactivePanes" type="hex" data="00"/>
|
||||||
|
<value name="MinimizeOnLoseFocus" type="hex" data="00"/>
|
||||||
|
<value name="DisableFarFlashing" type="hex" data="00"/>
|
||||||
|
<value name="DisableAllFlashing" type="hex" data="00"/>
|
||||||
|
<value name="FindText" type="string" data=""/>
|
||||||
|
<value name="FindMatchCase" type="hex" data="00"/>
|
||||||
|
<value name="FindMatchWholeWords" type="hex" data="00"/>
|
||||||
|
<value name="FindTransparent" type="hex" data="01"/>
|
||||||
|
<value name="PanView.BackColor" type="dword" data="30ffffff"/>
|
||||||
|
<value name="PanView.PFrame" type="long" data="1"/>
|
||||||
|
<value name="PanView.PFrameColor" type="dword" data="28808080"/>
|
||||||
|
<value name="PanView.SFrame" type="long" data="1"/>
|
||||||
|
<value name="PanView.SFrameColor" type="dword" data="07c0c0c0"/>
|
||||||
|
<value name="PanView.Thumbs.ImgSize" type="long" data="96"/>
|
||||||
|
<value name="PanView.Thumbs.SpaceX1" type="long" data="1"/>
|
||||||
|
<value name="PanView.Thumbs.SpaceY1" type="long" data="1"/>
|
||||||
|
<value name="PanView.Thumbs.SpaceX2" type="long" data="5"/>
|
||||||
|
<value name="PanView.Thumbs.SpaceY2" type="long" data="20"/>
|
||||||
|
<value name="PanView.Thumbs.LabelSpacing" type="long" data="2"/>
|
||||||
|
<value name="PanView.Thumbs.LabelPadding" type="long" data="0"/>
|
||||||
|
<value name="PanView.Thumbs.FontName" type="string" data="Segoe UI"/>
|
||||||
|
<value name="PanView.Thumbs.FontHeight" type="long" data="14"/>
|
||||||
|
<value name="PanView.Tiles.ImgSize" type="long" data="48"/>
|
||||||
|
<value name="PanView.Tiles.SpaceX1" type="long" data="4"/>
|
||||||
|
<value name="PanView.Tiles.SpaceY1" type="long" data="4"/>
|
||||||
|
<value name="PanView.Tiles.SpaceX2" type="long" data="172"/>
|
||||||
|
<value name="PanView.Tiles.SpaceY2" type="long" data="4"/>
|
||||||
|
<value name="PanView.Tiles.LabelSpacing" type="long" data="4"/>
|
||||||
|
<value name="PanView.Tiles.LabelPadding" type="long" data="1"/>
|
||||||
|
<value name="PanView.Tiles.FontName" type="string" data="Segoe UI"/>
|
||||||
|
<value name="PanView.Tiles.FontHeight" type="long" data="14"/>
|
||||||
|
<value name="PanView.LoadPreviews" type="hex" data="03"/>
|
||||||
|
<value name="PanView.LoadFolders" type="hex" data="01"/>
|
||||||
|
<value name="PanView.LoadTimeout" type="ulong" data="15"/>
|
||||||
|
<value name="PanView.MaxZoom" type="ulong" data="600"/>
|
||||||
|
<value name="PanView.UsePicView2" type="hex" data="01"/>
|
||||||
|
<value name="PanView.RestoreOnStartup" type="hex" data="00"/>
|
||||||
|
<value name="Update.VerLocation" type="string" data=""/>
|
||||||
|
<value name="Update.CheckOnStartup" type="hex" data="00"/>
|
||||||
|
<value name="Update.CheckHourly" type="hex" data="00"/>
|
||||||
|
<value name="Update.ConfirmDownload" type="hex" data="01"/>
|
||||||
|
<value name="Update.UseBuilds" type="hex" data="02"/>
|
||||||
|
<value name="Update.InetTool" type="hex" data="00"/>
|
||||||
|
<value name="Update.InetToolCmd" type="string" data=""/>
|
||||||
|
<value name="Update.UseProxy" type="hex" data="00"/>
|
||||||
|
<value name="Update.Proxy" type="string" data=""/>
|
||||||
|
<value name="Update.ProxyUser" type="string" data=""/>
|
||||||
|
<value name="Update.ProxyPassword" type="string" data=""/>
|
||||||
|
<value name="Update.ExeCmdLine" type="string" data=""/>
|
||||||
|
<value name="Update.ArcCmdLine" type="string" data=""/>
|
||||||
|
<value name="Update.DownloadPath" type="string" data="%TEMP%\ConEmu"/>
|
||||||
|
<value name="Update.LeavePackages" type="hex" data="00"/>
|
||||||
|
<value name="Update.PostUpdateCmd" type="string" data="echo Last successful update>ConEmuUpdate.info && date /t>>ConEmuUpdate.info && time /t>>ConEmuUpdate.info"/>
|
||||||
|
<key name="HotKeys" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="KeyMacroVersion" type="hex" data="02"/>
|
||||||
|
<value name="Multi.Modifier" type="dword" data="0000005b"/>
|
||||||
|
<value name="Multi.ArrowsModifier" type="dword" data="0000005b"/>
|
||||||
|
<value name="MinimizeRestore" type="dword" data="000011c0"/>
|
||||||
|
<value name="MinimizeRestore2" type="dword" data="00000000"/>
|
||||||
|
<value name="GlobalRestore" type="dword" data="00000000"/>
|
||||||
|
<value name="CdExplorerPath" type="dword" data="00000000"/>
|
||||||
|
<value name="ForcedFullScreen" type="dword" data="12115b0d"/>
|
||||||
|
<value name="SwitchGuiFocus" type="dword" data="00005b5a"/>
|
||||||
|
<value name="SetFocusGui" type="dword" data="00000000"/>
|
||||||
|
<value name="SetFocusChild" type="dword" data="00000000"/>
|
||||||
|
<value name="ChildSystemMenu" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.NewConsole" type="dword" data="00005b57"/>
|
||||||
|
<value name="Multi.NewConsoleShift" type="dword" data="00105b57"/>
|
||||||
|
<value name="Multi.CmdKey" type="dword" data="00005b58"/>
|
||||||
|
<value name="Multi.NewWindow" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.NewConsolePopup" type="dword" data="00005b4e"/>
|
||||||
|
<value name="Multi.NewConsolePopup2" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.NewAttach" type="dword" data="00005b47"/>
|
||||||
|
<value name="Multi.NewSplitV" type="dword" data="0010114f"/>
|
||||||
|
<value name="Multi.NewSplitH" type="dword" data="00101145"/>
|
||||||
|
<value name="Multi.SplitMaximize" type="dword" data="00005d0d"/>
|
||||||
|
<value name="Multi.SplitSizeVU" type="dword" data="00105d26"/>
|
||||||
|
<value name="Multi.SplitSizeVD" type="dword" data="00105d28"/>
|
||||||
|
<value name="Multi.SplitSizeHL" type="dword" data="00105d25"/>
|
||||||
|
<value name="Multi.SplitSizeHR" type="dword" data="00105d27"/>
|
||||||
|
<value name="Key.TabPane1" type="dword" data="00005d09"/>
|
||||||
|
<value name="Key.TabPane2" type="dword" data="00105d09"/>
|
||||||
|
<value name="Multi.SplitFocusU" type="dword" data="00005d26"/>
|
||||||
|
<value name="Multi.SplitFocusD" type="dword" data="00005d28"/>
|
||||||
|
<value name="Multi.SplitFocusL" type="dword" data="00005d25"/>
|
||||||
|
<value name="Multi.SplitFocusR" type="dword" data="00005d27"/>
|
||||||
|
<value name="Multi.Next" type="dword" data="00005b51"/>
|
||||||
|
<value name="Multi.NextShift" type="dword" data="00105b51"/>
|
||||||
|
<value name="Multi.Recreate" type="dword" data="00005bc0"/>
|
||||||
|
<value name="Multi.AltCon" type="dword" data="00005b41"/>
|
||||||
|
<value name="Multi.Pause" type="dword" data="80808013"/>
|
||||||
|
<value name="Multi.Scroll" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.GroupInput" type="dword" data="00005d47"/>
|
||||||
|
<value name="Multi.Detach" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.Unfasten" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.Close" type="dword" data="00005b2e"/>
|
||||||
|
<value name="CloseTabKey" type="dword" data="00125b2e"/>
|
||||||
|
<value name="CloseGroupKey" type="dword" data="00115b2e"/>
|
||||||
|
<value name="CloseGroupPrcKey" type="dword" data="00000000"/>
|
||||||
|
<value name="CloseAllConKey" type="dword" data="00000000"/>
|
||||||
|
<value name="CloseZombiesKey" type="dword" data="00000000"/>
|
||||||
|
<value name="CloseExceptConKey" type="dword" data="00000000"/>
|
||||||
|
<value name="KillProcessKey" type="dword" data="00121103"/>
|
||||||
|
<value name="KillAllButShellKey" type="dword" data="00125b13"/>
|
||||||
|
<value name="DuplicateRootKey" type="dword" data="00005b53"/>
|
||||||
|
<value name="CloseConEmuKey" type="dword" data="00005b73"/>
|
||||||
|
<value name="Multi.Rename" type="dword" data="00005d52"/>
|
||||||
|
<value name="AffinityPriorityKey" type="dword" data="00005d41"/>
|
||||||
|
<value name="Multi.MoveLeft" type="dword" data="00125b25"/>
|
||||||
|
<value name="Multi.MoveRight" type="dword" data="00125b27"/>
|
||||||
|
<value name="CTS.VkBlockStart" type="dword" data="00000000"/>
|
||||||
|
<value name="CTS.VkTextStart" type="dword" data="00000000"/>
|
||||||
|
<value name="CTS.VkCopyFmt0" type="dword" data="00001143"/>
|
||||||
|
<value name="CTS.VkCopyFmt1" type="dword" data="00101143"/>
|
||||||
|
<value name="CTS.VkCopyFmt2" type="dword" data="00000000"/>
|
||||||
|
<value name="CTS.VkCopyAll" type="dword" data="00000000"/>
|
||||||
|
<value name="HighlightMouseSwitch" type="dword" data="00005d4c"/>
|
||||||
|
<value name="HighlightMouseSwitchX" type="dword" data="00005d58"/>
|
||||||
|
<value name="Multi.ShowTabsList" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.ShowTabsList2" type="dword" data="00005d7b"/>
|
||||||
|
<value name="ClipboardVkAllLines" type="dword" data="0000102d"/>
|
||||||
|
<value name="ClipboardVkFirstLine" type="dword" data="00001156"/>
|
||||||
|
<value name="Key.AltNumpad" type="dword" data="00000000"/>
|
||||||
|
<value name="DeleteWordToLeft" type="dword" data="00001108"/>
|
||||||
|
<value name="FindTextKey" type="dword" data="00005d46"/>
|
||||||
|
<value name="ScreenshotKey" type="dword" data="00005b48"/>
|
||||||
|
<value name="ScreenshotFullKey" type="dword" data="00105b48"/>
|
||||||
|
<value name="ShowStatusBarKey" type="dword" data="00005d53"/>
|
||||||
|
<value name="ShowTabBarKey" type="dword" data="00005d54"/>
|
||||||
|
<value name="ShowCaptionKey" type="dword" data="00005d43"/>
|
||||||
|
<value name="AlwaysOnTopKey" type="dword" data="00000000"/>
|
||||||
|
<value name="TransparencyInc" type="dword" data="00000000"/>
|
||||||
|
<value name="TransparencyDec" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.TabMenu" type="dword" data="00005d20"/>
|
||||||
|
<value name="Key.TabMenu2" type="dword" data="00001002"/>
|
||||||
|
<value name="Key.Maximize" type="dword" data="00001278"/>
|
||||||
|
<value name="Key.MaximizeWidth" type="dword" data="00105b28"/>
|
||||||
|
<value name="Key.MaximizeHeight" type="dword" data="00105b26"/>
|
||||||
|
<value name="Key.TileToLeft" type="dword" data="00005b25"/>
|
||||||
|
<value name="Key.TileToRight" type="dword" data="00005b27"/>
|
||||||
|
<value name="Key.JumpActiveMonitor" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.JumpPrevMonitor" type="dword" data="00105b25"/>
|
||||||
|
<value name="Key.JumpNextMonitor" type="dword" data="00105b27"/>
|
||||||
|
<value name="Key.FullScreen" type="dword" data="0000120d"/>
|
||||||
|
<value name="Key.SysMenu" type="dword" data="00001220"/>
|
||||||
|
<value name="Key.SysMenu2" type="dword" data="00001102"/>
|
||||||
|
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
||||||
|
<value name="Key.DumpProcess" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.DumpTree" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.BufUp" type="dword" data="00001126"/>
|
||||||
|
<value name="Key.BufDn" type="dword" data="00001128"/>
|
||||||
|
<value name="Key.BufPgUp" type="dword" data="00001121"/>
|
||||||
|
<value name="Key.BufPgDn" type="dword" data="00001122"/>
|
||||||
|
<value name="Key.BufHfPgUp" type="dword" data="00005d21"/>
|
||||||
|
<value name="Key.BufHfPgDn" type="dword" data="00005d22"/>
|
||||||
|
<value name="Key.BufTop" type="dword" data="00005d24"/>
|
||||||
|
<value name="Key.BufBottom" type="dword" data="00005d23"/>
|
||||||
|
<value name="Key.BufCursor" type="dword" data="00005d08"/>
|
||||||
|
<value name="Key.ResetTerm" type="dword" data="00000000"/>
|
||||||
|
<value name="FontLargerKey" type="dword" data="000011d0"/>
|
||||||
|
<value name="FontSmallerKey" type="dword" data="000011d1"/>
|
||||||
|
<value name="FontOriginalKey" type="dword" data="00001104"/>
|
||||||
|
<value name="PasteFileKey" type="dword" data="00101146"/>
|
||||||
|
<value name="PastePathKey" type="dword" data="00101144"/>
|
||||||
|
<value name="PasteCygwinKey" type="dword" data="00005d2d"/>
|
||||||
|
<value name="KeyMacro01" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro01.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro02" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro02.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro03" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro03.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro04" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro04.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro05" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro05.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro06" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro06.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro07" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro07.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro08" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro08.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro09" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro09.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro10" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro10.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro11" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro11.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro12" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro12.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro13" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro13.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro14" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro14.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro15" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro15.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro16" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro16.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro17" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro17.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro18" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro18.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro19" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro19.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro20" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro20.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro21" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro21.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro22" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro22.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro23" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro23.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro24" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro24.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro25" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro25.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro26" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro26.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro27" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro27.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro28" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro28.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro29" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro29.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro30" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro30.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro31" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro31.Text" type="string" data=""/>
|
||||||
|
<value name="KeyMacro32" type="dword" data="00000000"/>
|
||||||
|
<value name="KeyMacro32.Text" type="string" data=""/>
|
||||||
|
<value name="CTS.VkBlock" type="hex" data="a4"/>
|
||||||
|
<value name="CTS.VkText" type="hex" data="a0"/>
|
||||||
|
<value name="CTS.VkAct" type="hex" data="00"/>
|
||||||
|
<value name="CTS.VkPrompt" type="hex" data="00"/>
|
||||||
|
<value name="FarGotoEditorVk" type="hex" data="a2"/>
|
||||||
|
<value name="DndLKey" type="hex" data="00"/>
|
||||||
|
<value name="DndRKey" type="hex" data="a2"/>
|
||||||
|
<value name="WndDragKey" type="dword" data="00121101"/>
|
||||||
|
<value name="Multi.SplitSwap" type="dword" data="00125d58"/>
|
||||||
|
<value name="Multi.SplitSwapU" type="dword" data="00125d26"/>
|
||||||
|
<value name="Multi.SplitSwapD" type="dword" data="00125d28"/>
|
||||||
|
<value name="Multi.SplitSwapL" type="dword" data="00125d25"/>
|
||||||
|
<value name="Multi.SplitSwapR" type="dword" data="00125d27"/>
|
||||||
|
<value name="Multi.GroupInputAll" type="dword" data="00105d47"/>
|
||||||
|
<value name="Multi.GroupInputKey" type="dword" data="00125d47"/>
|
||||||
|
<value name="Key.BufPrUp" type="dword" data="00121121"/>
|
||||||
|
<value name="Key.BufPrDn" type="dword" data="00121122"/>
|
||||||
|
</key>
|
||||||
|
<key name="Tasks" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Count" type="long" data="10"/>
|
||||||
|
<key name="Task1" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Shells::cmd}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000002"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data="cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd""/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task2" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Shells::cmd (Admin)}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data="cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd" -new_console:a"/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task3" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Shells::cmd-32}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data=""%windir%\syswow64\cmd.exe" /k "%ConEmuBaseDir%\CmdInit.cmd""/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task4" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Shells::cmd 64/32}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data="> "%windir%\system32\cmd.exe" /k ""%ConEmuBaseDir%\CmdInit.cmd" & echo This is Native cmd.exe""/>
|
||||||
|
<value name="Cmd2" type="string" data=""%windir%\syswow64\cmd.exe" /k ""%ConEmuBaseDir%\CmdInit.cmd" & echo This is 32 bit cmd.exe -new_console:s50V""/>
|
||||||
|
<value name="Active" type="long" data="1"/>
|
||||||
|
<value name="Count" type="long" data="2"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task5" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Shells::PowerShell}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data="powershell.exe"/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task6" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Shells::PowerShell (Admin)}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data="powershell.exe -new_console:a"/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task7" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Bash::Git bash}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data=""%ConEmuDrive%\Program Files\Git\git-cmd.exe" --no-cd --command=usr/bin/bash.exe -l -i"/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task8" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Helper::Show ANSI colors}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data="cmd.exe /k type "%ConEmuBaseDir%\Addons\AnsiColors16t.ans" -cur_console:n"/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task9" modified="2017-10-30 01:12:26" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Tools::Chocolatey (Admin)}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Cmd1" type="string" data="*cmd.exe /k Title Chocolatey & "%ConEmuBaseDir%\Addons\ChocolateyAbout.cmd""/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task10" modified="2017-10-30 01:28:33" build="170910">
|
||||||
|
<value name="Name" type="string" data="{Shells::MSYS2}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data=""/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
<value name="Cmd1" type="string" data="set MSYSTEM=MINGW32 & set MSYSCON=conemu64.exe & "C:\msys32\usr\bin\bash.exe" --login -i -new_console:C:"C:\msys32\mingw32.exe""/>
|
||||||
|
</key>
|
||||||
|
</key>
|
||||||
|
<key name="Apps" modified="2017-10-30 01:28:33" build="170910">
|
||||||
|
<value name="Count" type="long" data="0"/>
|
||||||
|
</key>
|
||||||
|
<key name="Colors" modified="2017-10-30 01:28:33" build="170910">
|
||||||
|
<value name="Count" type="long" data="2"/>
|
||||||
|
<key name="Palette1" modified="2017-10-30 01:28:33" build="170910">
|
||||||
|
<value name="Name" type="string" data="moe-dark"/>
|
||||||
|
<value name="ExtendColors" type="hex" data="00"/>
|
||||||
|
<value name="ExtendColorIdx" type="hex" data="0e"/>
|
||||||
|
<value name="TextColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="BackColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="PopTextColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="ColorTable00" type="dword" data="00303030"/>
|
||||||
|
<value name="ColorTable01" type="dword" data="00ff5b1f"/>
|
||||||
|
<value name="ColorTable02" type="dword" data="0000ffaf"/>
|
||||||
|
<value name="ColorTable03" type="dword" data="00ffff87"/>
|
||||||
|
<value name="ColorTable04" type="dword" data="002929ef"/>
|
||||||
|
<value name="ColorTable05" type="dword" data="00ff8ad1"/>
|
||||||
|
<value name="ColorTable06" type="dword" data="000087ff"/>
|
||||||
|
<value name="ColorTable07" type="dword" data="00c6c6c6"/>
|
||||||
|
<value name="ColorTable08" type="dword" data="00b2b2b2"/>
|
||||||
|
<value name="ColorTable09" type="dword" data="00d7af5f"/>
|
||||||
|
<value name="ColorTable10" type="dword" data="0000dba1"/>
|
||||||
|
<value name="ColorTable11" type="dword" data="00afd700"/>
|
||||||
|
<value name="ColorTable12" type="dword" data="004b4bff"/>
|
||||||
|
<value name="ColorTable13" type="dword" data="00a34eff"/>
|
||||||
|
<value name="ColorTable14" type="dword" data="004fe9fc"/>
|
||||||
|
<value name="ColorTable15" type="dword" data="00e7fdfd"/>
|
||||||
|
<value name="ColorTable16" type="dword" data="00000000"/>
|
||||||
|
<value name="ColorTable17" type="dword" data="00000080"/>
|
||||||
|
<value name="ColorTable18" type="dword" data="00008000"/>
|
||||||
|
<value name="ColorTable19" type="dword" data="00008080"/>
|
||||||
|
<value name="ColorTable20" type="dword" data="00800000"/>
|
||||||
|
<value name="ColorTable21" type="dword" data="00800080"/>
|
||||||
|
<value name="ColorTable22" type="dword" data="00808000"/>
|
||||||
|
<value name="ColorTable23" type="dword" data="00c0c0c0"/>
|
||||||
|
<value name="ColorTable24" type="dword" data="00808080"/>
|
||||||
|
<value name="ColorTable25" type="dword" data="000000ff"/>
|
||||||
|
<value name="ColorTable26" type="dword" data="0000ff00"/>
|
||||||
|
<value name="ColorTable27" type="dword" data="0000ffff"/>
|
||||||
|
<value name="ColorTable28" type="dword" data="00ff0000"/>
|
||||||
|
<value name="ColorTable29" type="dword" data="00ff00ff"/>
|
||||||
|
<value name="ColorTable30" type="dword" data="00ffff00"/>
|
||||||
|
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||||
|
</key>
|
||||||
|
<key name="Palette2" modified="2017-10-30 01:28:33" build="170910">
|
||||||
|
<value name="Name" type="string" data="moe-light"/>
|
||||||
|
<value name="ExtendColors" type="hex" data="01"/>
|
||||||
|
<value name="ExtendColorIdx" type="hex" data="0b"/>
|
||||||
|
<value name="TextColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="BackColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="PopTextColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||||
|
<value name="ColorTable00" type="dword" data="00e7fdfd"/>
|
||||||
|
<value name="ColorTable01" type="dword" data="00ffe5d4"/>
|
||||||
|
<value name="ColorTable02" type="dword" data="0000af00"/>
|
||||||
|
<value name="ColorTable03" type="dword" data="0087af00"/>
|
||||||
|
<value name="ColorTable04" type="dword" data="000000dd"/>
|
||||||
|
<value name="ColorTable05" type="dword" data="00ff089a"/>
|
||||||
|
<value name="ColorTable06" type="dword" data="003387fe"/>
|
||||||
|
<value name="ColorTable07" type="dword" data="00626262"/>
|
||||||
|
<value name="ColorTable08" type="dword" data="00b2b2b2"/>
|
||||||
|
<value name="ColorTable09" type="dword" data="00ff5b1f"/>
|
||||||
|
<value name="ColorTable10" type="dword" data="0000af00"/>
|
||||||
|
<value name="ColorTable11" type="dword" data="00d7af5f"/>
|
||||||
|
<value name="ColorTable12" type="dword" data="002929ef"/>
|
||||||
|
<value name="ColorTable13" type="dword" data="008b1fff"/>
|
||||||
|
<value name="ColorTable14" type="dword" data="003387fe"/>
|
||||||
|
<value name="ColorTable15" type="dword" data="00303030"/>
|
||||||
|
<value name="ColorTable16" type="dword" data="00000000"/>
|
||||||
|
<value name="ColorTable17" type="dword" data="00000080"/>
|
||||||
|
<value name="ColorTable18" type="dword" data="00008000"/>
|
||||||
|
<value name="ColorTable19" type="dword" data="00008080"/>
|
||||||
|
<value name="ColorTable20" type="dword" data="00800000"/>
|
||||||
|
<value name="ColorTable21" type="dword" data="00800080"/>
|
||||||
|
<value name="ColorTable22" type="dword" data="00808000"/>
|
||||||
|
<value name="ColorTable23" type="dword" data="00c0c0c0"/>
|
||||||
|
<value name="ColorTable24" type="dword" data="00808080"/>
|
||||||
|
<value name="ColorTable25" type="dword" data="000000ff"/>
|
||||||
|
<value name="ColorTable26" type="dword" data="0000ff00"/>
|
||||||
|
<value name="ColorTable27" type="dword" data="0000ffff"/>
|
||||||
|
<value name="ColorTable28" type="dword" data="00ff0000"/>
|
||||||
|
<value name="ColorTable29" type="dword" data="00ff00ff"/>
|
||||||
|
<value name="ColorTable30" type="dword" data="00ffff00"/>
|
||||||
|
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||||
|
</key>
|
||||||
|
</key>
|
||||||
|
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
|
||||||
|
<value name="ClipboardAllLinesPosix" type="hex" data="00"/>
|
||||||
|
<value name="ClipboardFirstLinePosix" type="hex" data="00"/>
|
||||||
|
</key>
|
||||||
|
</key>
|
||||||
|
</key>
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,150 +1,152 @@
|
||||||
:: Wizard Kit: Copy Kit ::
|
:: Wizard Kit: Copy Kit ::
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
:Init
|
:Init
|
||||||
setlocal EnableDelayedExpansion
|
setlocal EnableDelayedExpansion
|
||||||
title Wizard Kit: Tools Copier
|
title Wizard Kit: Tools Copier
|
||||||
color 1b
|
color 1b
|
||||||
echo Initializing...
|
echo Initializing...
|
||||||
call :CheckFlags %*
|
call :CheckFlags %*
|
||||||
call :FindBin
|
call :FindBin
|
||||||
call :SetTitle Tools Copier
|
call :SetTitle Tools Copier
|
||||||
|
|
||||||
:SetVariables
|
:SetVariables
|
||||||
rem Set variables using settings\main.py file
|
rem Set variables using settings\main.py file
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
||||||
for %%v in (ARCHIVE_PASSWORD KIT_NAME_FULL) do (
|
for %%v in (ARCHIVE_PASSWORD KIT_NAME_FULL) do (
|
||||||
set "var=%%v"
|
set "var=%%v"
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr "!var!=" %SETTINGS%`) do (
|
for /f "tokens=* usebackq" %%f in (`findstr "!var!=" %SETTINGS%`) do (
|
||||||
set "_v=%%f"
|
set "_v=%%f"
|
||||||
set "_v=!_v:*'=!"
|
set "_v=!_v:*'=!"
|
||||||
set "%%v=!_v:~0,-1!"
|
set "%%v=!_v:~0,-1!"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
rem Set ARCH to 32 as a gross assumption and check for x86_64 status
|
rem Set ARCH to 32 as a gross assumption and check for x86_64 status
|
||||||
set ARCH=32
|
set ARCH=32
|
||||||
if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" set "ARCH=64"
|
if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" set "ARCH=64"
|
||||||
set "SEVEN_ZIP=%bin%\7-Zip\7za.exe"
|
set "SEVEN_ZIP=%bin%\7-Zip\7za.exe"
|
||||||
set "CON=%bin%\ConEmu\ConEmu.exe"
|
set "CON=%bin%\ConEmu\ConEmu.exe"
|
||||||
set "FASTCOPY=%bin%\FastCopy\FastCopy.exe"
|
set "FASTCOPY=%bin%\FastCopy\FastCopy.exe"
|
||||||
if %ARCH% equ 64 (
|
if %ARCH% equ 64 (
|
||||||
set "SEVEN_ZIP=%bin%\7-Zip\7za64.exe"
|
set "SEVEN_ZIP=%bin%\7-Zip\7za64.exe"
|
||||||
set "CON=%bin%\ConEmu\ConEmu64.exe"
|
set "CON=%bin%\ConEmu\ConEmu64.exe"
|
||||||
set "FASTCOPY=%bin%\FastCopy\FastCopy64.exe"
|
set "FASTCOPY=%bin%\FastCopy\FastCopy64.exe"
|
||||||
)
|
)
|
||||||
set "fastcopy_args=/cmd=diff /no_ui /auto_close"
|
set "fastcopy_args=/cmd=diff /no_ui /auto_close"
|
||||||
rem Set %client_dir%
|
rem Set %client_dir%
|
||||||
call "%bin%\Scripts\init_client_dir.cmd"
|
call "%bin%\Scripts\init_client_dir.cmd"
|
||||||
pushd "%bin%\.."
|
pushd "%bin%\.."
|
||||||
set "source=%cd%"
|
set "source=%cd%"
|
||||||
popd
|
popd
|
||||||
set "dest=%client_dir%\Tools"
|
set "dest=%client_dir%\Tools"
|
||||||
|
|
||||||
:RelaunchInConEmu
|
:RelaunchInConEmu
|
||||||
if not defined IN_CONEMU (
|
if not defined IN_CONEMU (
|
||||||
if not defined L_NCMD (
|
if not defined L_NCMD (
|
||||||
set "con_args=-new_console:n"
|
set "con_args=-new_console:n"
|
||||||
rem If in DEBUG state then force ConEmu to stay open
|
rem If in DEBUG state then force ConEmu to stay open
|
||||||
if defined DEBUG (set "con_args=!con_args! -new_console:c")
|
if defined DEBUG (set "con_args=!con_args! -new_console:c")
|
||||||
set IN_CONEMU=True
|
set IN_CONEMU=True
|
||||||
start "" "%CON%" -run ""%~0" %*" !con_args! || goto ErrorUnknown
|
start "" "%CON%" -run ""%~0" %*" !con_args! || goto ErrorUnknown
|
||||||
exit /b 0
|
exit /b 0
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
:CopyBin
|
:CopyBin
|
||||||
echo Copying .bin...
|
echo Copying .bin...
|
||||||
mkdir "%dest%\.bin" >nul 2>&1
|
mkdir "%dest%\.bin" >nul 2>&1
|
||||||
attrib +h "%dest%\.bin"
|
attrib +h "%dest%\.bin"
|
||||||
set _sources="%bin%\7-Zip"
|
set _sources="%bin%\7-Zip"
|
||||||
set _sources=%_sources% "%bin%\ConEmu"
|
set _sources=%_sources% "%bin%\ConEmu"
|
||||||
set _sources=%_sources% "%bin%\FastCopy"
|
set _sources=%_sources% "%bin%\FastCopy"
|
||||||
set _sources=%_sources% "%bin%\HWiNFO"
|
set _sources=%_sources% "%bin%\HWiNFO"
|
||||||
set _sources=%_sources% "%bin%\Python"
|
set _sources=%_sources% "%bin%\Python"
|
||||||
set _sources=%_sources% "%bin%\Scripts"
|
set _sources=%_sources% "%bin%\Scripts"
|
||||||
start "" /wait "%fastcopy%" %fastcopy_args% %_sources% /to="%dest%\.bin\"
|
start "" /wait "%fastcopy%" %fastcopy_args% %_sources% /to="%dest%\.bin\"
|
||||||
|
|
||||||
:CopyCBin
|
:CopyCBin
|
||||||
echo Copying .cbin...
|
echo Copying .cbin...
|
||||||
mkdir "%dest%\.cbin" >nul 2>&1
|
mkdir "%dest%\.cbin" >nul 2>&1
|
||||||
attrib +h "%dest%\.cbin"
|
attrib +h "%dest%\.cbin"
|
||||||
start "" /wait "%fastcopy%" %fastcopy_args% %cbin%\* /to="%dest%\.cbin\"
|
start "" /wait "%fastcopy%" %fastcopy_args% %cbin%\* /to="%dest%\.cbin\"
|
||||||
|
|
||||||
:CopyMainData
|
:CopyMainData
|
||||||
echo Copying Main Kit...
|
echo Copying Main Kit...
|
||||||
set _sources="%source%\Data Transfers & DSR"
|
set _sources="%source%\Data Transfers"
|
||||||
set _sources=%_sources% "%source%\Diagnostics"
|
set _sources=%_sources% "%source%\Diagnostics"
|
||||||
set _sources=%_sources% "%source%\Drivers"
|
set _sources=%_sources% "%source%\Drivers"
|
||||||
set _sources=%_sources% "%source%\Installers"
|
set _sources=%_sources% "%source%\Installers"
|
||||||
set _sources=%_sources% "%source%\Misc"
|
set _sources=%_sources% "%source%\Misc"
|
||||||
set _sources=%_sources% "%source%\OSR & VR"
|
set _sources=%_sources% "%source%\Repairs"
|
||||||
set _sources=%_sources% "%source%\Uninstallers"
|
set _sources=%_sources% "%source%\Uninstallers"
|
||||||
set _sources=%_sources% "%source%\Activate Windows.cmd"
|
set _sources=%_sources% "%source%\Activate Windows.cmd"
|
||||||
set _sources=%_sources% "%source%\Enter SafeMode.cmd"
|
set _sources=%_sources% "%source%\Enter SafeMode.cmd"
|
||||||
set _sources=%_sources% "%source%\Exit SafeMode.cmd"
|
set _sources=%_sources% "%source%\Exit SafeMode.cmd"
|
||||||
set _sources=%_sources% "%source%\System Checklist.cmd"
|
set _sources=%_sources% "%source%\LICENSE.txt"
|
||||||
set _sources=%_sources% "%source%\System Diagnostics.cmd"
|
set _sources=%_sources% "%source%\README.md"
|
||||||
set _sources=%_sources% "%source%\User Checklist.cmd"
|
set _sources=%_sources% "%source%\System Checklist.cmd"
|
||||||
start "" /wait "%fastcopy%" %fastcopy_args% /exclude="Snappy Driver Installer.cmd;*.exe" %_sources% /to="%dest%\"
|
set _sources=%_sources% "%source%\System Diagnostics.cmd"
|
||||||
start "" /wait "%fastcopy%" %fastcopy_args% "%source%\Installers\Extras\Office\Adobe Reader DC.exe" /to="%dest%\Installers\Extras\Office\"
|
set _sources=%_sources% "%source%\User Checklist.cmd"
|
||||||
|
start "" /wait "%fastcopy%" %fastcopy_args% /exclude="Snappy Driver Installer.cmd;*.exe" %_sources% /to="%dest%\"
|
||||||
:Ninite
|
start "" /wait "%fastcopy%" %fastcopy_args% "%source%\Installers\Extras\Office\Adobe Reader DC.exe" /to="%dest%\Installers\Extras\Office\"
|
||||||
echo Extracting Ninite installers...
|
|
||||||
"%SEVEN_ZIP%" x "%cbin%\_Ninite.7z" -aos -bso0 -bse0 -bsp0 -p%ARCHIVE_PASSWORD% -o"%dest%\Installers\Extras" || goto Abort
|
:Ninite
|
||||||
|
echo Extracting Ninite installers...
|
||||||
:OpenFolder
|
"%SEVEN_ZIP%" x "%cbin%\_Ninite.7z" -aos -bso0 -bse0 -bsp0 -p%ARCHIVE_PASS% -o"%dest%\Installers\Extras" || goto Abort
|
||||||
start "" explorer "%dest%"
|
|
||||||
goto Exit
|
:OpenFolder
|
||||||
|
start "" explorer "%dest%"
|
||||||
:: Functions ::
|
goto Exit
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
:: Functions ::
|
||||||
set DEBUG=
|
:CheckFlags
|
||||||
for %%f in (%*) do (
|
rem Loops through all arguments to check for accepted flags
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
set DEBUG=
|
||||||
)
|
for %%f in (%*) do (
|
||||||
@exit /b 0
|
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
||||||
|
)
|
||||||
:FindBin
|
@exit /b 0
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
:FindBin
|
||||||
set bin=
|
rem Checks the current directory and all parents for the ".bin" folder
|
||||||
pushd "%~dp0"
|
rem NOTE: Has not been tested for UNC paths
|
||||||
:FindBinInner
|
set bin=
|
||||||
if exist ".bin" (goto FindBinDone)
|
pushd "%~dp0"
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
:FindBinInner
|
||||||
cd ..
|
if exist ".bin" (goto FindBinDone)
|
||||||
goto FindBinInner
|
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
||||||
:FindBinDone
|
cd ..
|
||||||
set "bin=%cd%\.bin"
|
goto FindBinInner
|
||||||
set "cbin=%cd%\.cbin"
|
:FindBinDone
|
||||||
popd
|
set "bin=%cd%\.bin"
|
||||||
@exit /b 0
|
set "cbin=%cd%\.cbin"
|
||||||
|
popd
|
||||||
:SetTitle
|
@exit /b 0
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "window_title=%*"
|
:SetTitle
|
||||||
if not defined window_title set "window_title=Launcher"
|
rem Sets title using KIT_NAME_FULL from settings\main.py
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
set "window_title=%*"
|
||||||
title %window_title%
|
if not defined window_title set "window_title=Launcher"
|
||||||
@exit /b 0
|
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
||||||
|
title %window_title%
|
||||||
:: Errors ::
|
@exit /b 0
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
:: Errors ::
|
||||||
echo ERROR: ".bin" folder not found.
|
:ErrorNoBin
|
||||||
goto Abort
|
echo.
|
||||||
|
echo ERROR: ".bin" folder not found.
|
||||||
:Abort
|
goto Abort
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
:Abort
|
||||||
echo Press any key to exit...
|
color 4e
|
||||||
pause>nul
|
echo Aborted.
|
||||||
color
|
echo Press any key to exit...
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
pause>nul
|
||||||
color 00
|
color
|
||||||
goto Exit
|
rem Set errorlevel to 1 by calling color incorrectly
|
||||||
|
color 00
|
||||||
:: Cleanup and exit ::
|
goto Exit
|
||||||
:Exit
|
|
||||||
endlocal
|
:: Cleanup and exit ::
|
||||||
exit /b %errorlevel%
|
:Exit
|
||||||
|
endlocal
|
||||||
|
exit /b %errorlevel%
|
||||||
|
|
@ -1,407 +1,496 @@
|
||||||
:: Wizard Kit: Wrapper for launching programs and scripts.
|
:: Wizard Kit: Wrapper for launching programs and scripts.
|
||||||
::
|
::
|
||||||
:: Some features:
|
:: Some features:
|
||||||
:: * If the OS is 64-bit then the WorkingDir is scanned for a 64-bit version of the programs
|
:: * If the OS is 64-bit then the WorkingDir is scanned for a 64-bit version of the programs
|
||||||
:: * Allows for centralized terminal emulation settings management
|
:: * Allows for centralized terminal emulation settings management
|
||||||
:: * Allows for smaller "launcher" scripts to be used as they will rely on this script.
|
:: * Allows for smaller "launcher" scripts to be used as they will rely on this script.
|
||||||
|
|
||||||
@echo off
|
@echo off
|
||||||
if defined DEBUG (@echo on)
|
if defined DEBUG (@echo on)
|
||||||
|
|
||||||
:Init
|
:Init
|
||||||
setlocal EnableDelayedExpansion
|
setlocal EnableDelayedExpansion
|
||||||
title Wizard Kit: Launcher
|
title Wizard Kit: Launcher
|
||||||
pushd "%~dp0"
|
pushd "%~dp0"
|
||||||
call :FindBin
|
call :FindBin
|
||||||
call :DeQuote L_ITEM
|
call :DeQuote L_ITEM
|
||||||
call :DeQuote L_PATH
|
call :DeQuote L_PATH
|
||||||
call :DeQuote L_TYPE
|
call :DeQuote L_TYPE
|
||||||
|
|
||||||
:SetVariables
|
:SetVariables
|
||||||
rem Set variables using settings\main.py file
|
rem Set variables using settings\main.py file
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
||||||
for %%v in (ARCHIVE_PASSWORD KIT_NAME_FULL OFFICE_SERVER_IP QUICKBOOKS_SERVER_IP) do (
|
for %%v in (ARCHIVE_PASSWORD KIT_NAME_FULL OFFICE_SERVER_IP QUICKBOOKS_SERVER_IP) do (
|
||||||
set "var=%%v"
|
set "var=%%v"
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr "!var!=" %SETTINGS%`) do (
|
for /f "tokens=* usebackq" %%f in (`findstr "!var!=" %SETTINGS%`) do (
|
||||||
set "_v=%%f"
|
set "_v=%%f"
|
||||||
set "_v=!_v:*'=!"
|
set "_v=!_v:*'=!"
|
||||||
set "%%v=!_v:~0,-1!"
|
set "%%v=!_v:~0,-1!"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
rem Set ARCH to 32 as a gross assumption and check for x86_64 status
|
rem Set ARCH to 32 as a gross assumption and check for x86_64 status
|
||||||
set ARCH=32
|
set ARCH=32
|
||||||
if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" set "ARCH=64"
|
if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" set "ARCH=64"
|
||||||
set "SEVEN_ZIP=%bin%\7-Zip\7za.exe"
|
set "SEVEN_ZIP=%bin%\7-Zip\7za.exe"
|
||||||
set "CON=%bin%\ConEmu\ConEmu.exe"
|
set "CON=%bin%\ConEmu\ConEmu.exe"
|
||||||
set "FASTCOPY=%bin%\FastCopy\FastCopy.exe"
|
set "FASTCOPY=%bin%\FastCopy\FastCopy.exe"
|
||||||
set "PYTHON=%bin%\Python\x32\python.exe"
|
set "POWERSHELL=%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe"
|
||||||
if %ARCH% equ 64 (
|
set "PYTHON=%bin%\Python\x32\python.exe"
|
||||||
set "SEVEN_ZIP=%bin%\7-Zip\7za64.exe"
|
if %ARCH% equ 64 (
|
||||||
set "CON=%bin%\ConEmu\ConEmu64.exe"
|
set "SEVEN_ZIP=%bin%\7-Zip\7za64.exe"
|
||||||
set "FASTCOPY=%bin%\FastCopy\FastCopy64.exe"
|
set "CON=%bin%\ConEmu\ConEmu64.exe"
|
||||||
set "PYTHON=%bin%\Python\x64\python.exe"
|
set "FASTCOPY=%bin%\FastCopy\FastCopy64.exe"
|
||||||
)
|
set "PYTHON=%bin%\Python\x64\python.exe"
|
||||||
|
)
|
||||||
:UpdateTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py (unless %window_title% already set)
|
:UpdateTitle
|
||||||
if defined window_title (
|
rem Sets title using KIT_NAME_FULL from settings\main.py (unless %window_title% already set)
|
||||||
title %window_title%
|
if defined window_title (
|
||||||
) else (
|
title %window_title%
|
||||||
set "window_title=%*"
|
) else (
|
||||||
if not defined window_title set "window_title=Launcher"
|
set "window_title=%*"
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
if not defined window_title set "window_title=Launcher"
|
||||||
title %window_title%
|
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
||||||
)
|
title %window_title%
|
||||||
|
)
|
||||||
:CheckUsage
|
|
||||||
rem Check for empty passed variables
|
:CheckUsage
|
||||||
if not defined L_TYPE (goto Usage)
|
rem Check for empty passed variables
|
||||||
if not defined L_PATH (goto Usage)
|
if not defined L_TYPE (goto Usage)
|
||||||
if not defined L_ITEM (goto Usage)
|
if not defined L_PATH (goto Usage)
|
||||||
rem Assume if not "True" then False (i.e. undefine variable)
|
if not defined L_ITEM (goto Usage)
|
||||||
if /i not "%L_CHCK%" == "True" (set "L_CHCK=")
|
rem Assume if not "True" then False (i.e. undefine variable)
|
||||||
if /i not "%L_ELEV%" == "True" (set "L_ELEV=")
|
if /i not "%L_ELEV%" == "True" (set "L_ELEV=")
|
||||||
if /i not "%L_NCMD%" == "True" (set "L_NCMD=")
|
if /i not "%L_NCMD%" == "True" (set "L_NCMD=")
|
||||||
if /i not "%L_WAIT%" == "True" (set "L_WAIT=")
|
if /i not "%L__CLI%" == "True" (set "L__CLI=")
|
||||||
|
|
||||||
:RelaunchInConEmu
|
:RelaunchInConEmu
|
||||||
if not defined IN_CONEMU (
|
set RELOAD_IN_CONEMU=True
|
||||||
if not defined L_NCMD (
|
if defined ConEmuBuild set "RELOAD_IN_CONEMU="
|
||||||
set "con_args=-new_console:n"
|
if defined L_NCMD set "RELOAD_IN_CONEMU="
|
||||||
rem If in DEBUG state then force ConEmu to stay open
|
if "%L_TYPE%" == "Executable" set "RELOAD_IN_CONEMU="
|
||||||
if defined DEBUG (set "con_args=!con_args! -new_console:c")
|
if "%L_TYPE%" == "PSScript" set "RELOAD_IN_CONEMU="
|
||||||
set IN_CONEMU=True
|
if "%L_TYPE%" == "PyScript" set "RELOAD_IN_CONEMU="
|
||||||
start "" "%CON%" -run ""%~0" %*" !con_args! || goto ErrorUnknown
|
|
||||||
exit /b 0
|
if defined RELOAD_IN_CONEMU (
|
||||||
)
|
set "con_args=-new_console:n"
|
||||||
)
|
rem If in DEBUG state then force ConEmu to stay open
|
||||||
|
if defined DEBUG (set "con_args=!con_args! -new_console:c")
|
||||||
:CheckLaunchType
|
start "" "%CON%" -run ""%~0" %*" !con_args! || goto ErrorUnknown
|
||||||
rem Jump to the selected launch type or show usage
|
exit /b 0
|
||||||
if /i "%L_TYPE%" == "Console" (goto LaunchConsole)
|
)
|
||||||
if /i "%L_TYPE%" == "Folder" (goto LaunchFolder)
|
|
||||||
if /i "%L_TYPE%" == "Office" (goto LaunchOfficeSetup)
|
:CheckLaunchType
|
||||||
if /i "%L_TYPE%" == "QuickBooks" (goto LaunchQuickBooksSetup)
|
rem Jump to the selected launch type or show usage
|
||||||
if /i "%L_TYPE%" == "Program" (goto LaunchProgram)
|
if /i "%L_TYPE%" == "Executable" (goto LaunchExecutable)
|
||||||
if /i "%L_TYPE%" == "PSScript" (goto LaunchPSScript)
|
if /i "%L_TYPE%" == "Folder" (goto LaunchFolder)
|
||||||
if /i "%L_TYPE%" == "PyScript" (goto LaunchPyScript)
|
if /i "%L_TYPE%" == "Office" (goto LaunchOffice)
|
||||||
if /i "%L_TYPE%" == "PywScript" (goto LaunchPywScript)
|
if /i "%L_TYPE%" == "PSScript" (goto LaunchPSScript)
|
||||||
goto Usage
|
if /i "%L_TYPE%" == "PyScript" (goto LaunchPyScript)
|
||||||
|
if /i "%L_TYPE%" == "QuickBooks" (goto LaunchQuickBooksSetup)
|
||||||
:LaunchConsole
|
goto Usage
|
||||||
rem Check for a 64-bit version and set args
|
|
||||||
set "con_args=-new_console:n"
|
:LaunchExecutable
|
||||||
if defined DEBUG (set "con_args=%con_args% -new_console:c")
|
rem Prep
|
||||||
if defined L_ELEV (set "con_args=%con_args% -new_console:a")
|
call :ExtractOrFindPath || goto ErrorProgramNotFound
|
||||||
rem Test L_PATH and set %_path%
|
|
||||||
call :TestPath || goto ErrorProgramNotFound
|
rem Check for 64-bit prog (if running on 64-bit system)
|
||||||
rem Check for 64-bit prog (if running on 64-bit system)
|
set "prog=%_path%\%L_ITEM%"
|
||||||
set "prog=%_path%\%L_ITEM%"
|
if %ARCH% equ 64 (
|
||||||
if %ARCH% equ 64 (
|
if exist "%_path%\%L_ITEM:.=64.%" set "prog=%_path%\%L_ITEM:.=64.%"
|
||||||
if exist "%_path%\%L_ITEM:.=64.%" set "prog=%_path%\%L_ITEM:.=64.%"
|
)
|
||||||
)
|
if not exist "%prog%" goto ErrorProgramNotFound
|
||||||
if not exist "%prog%" goto ErrorProgramNotFound
|
|
||||||
popd && pushd "%_path%"
|
rem Run
|
||||||
rem Run program in console emulator %CON% and catch error(s)
|
popd && pushd "%_path%"
|
||||||
start "" "%CON%" -run "%prog%" %L_ARGS% %con_args% || goto ErrorUnknown
|
if defined L__CLI goto LaunchExecutableCLI
|
||||||
goto Exit
|
if defined L_ELEV (
|
||||||
|
goto LaunchExecutableElev
|
||||||
:LaunchFolder
|
) else (
|
||||||
rem Test L_PATH and set %_path% (extracts archive in necessary)
|
goto LaunchExecutableUser
|
||||||
call :TestPath || goto ErrorProgramNotFound
|
)
|
||||||
start "" "explorer.exe" "%_path%" || goto ErrorUnknown
|
|
||||||
goto Exit
|
:LaunchExecutableCLI
|
||||||
|
rem Prep
|
||||||
:LaunchOfficeSetup
|
set "con_args=-new_console:n"
|
||||||
rem set args and copy setup files to system
|
if defined DEBUG (set "con_args=%con_args% -new_console:c")
|
||||||
rem NOTE: init_client_dir.cmd sets %client_dir% and creates %client_dir%\Office folder
|
if defined L_ELEV (set "con_args=%con_args% -new_console:a")
|
||||||
call "%bin%\Scripts\init_client_dir.cmd" /Office
|
|
||||||
echo Copying setup file(s) for %L_ITEM%...
|
rem Run
|
||||||
rem extract setup/xml and start installation
|
start "" "%CON%" -run "%prog%" %L_ARGS% %con_args% || goto ErrorUnknown
|
||||||
set "setup=%L_PATH%\setup.exe"
|
goto Exit
|
||||||
set "dest=%client_dir%\Office\%L_PATH%"
|
|
||||||
"%SEVEN_ZIP%" e "%cbin%\_Office.7z" -aoa -bso0 -bse0 -p%ARCHIVE_PASSWORD% -o"!dest!" !setup! !L_ITEM! || exit /b 1
|
:LaunchExecutableElev
|
||||||
"%systemroot%\System32\ping.exe" -n 2 127.0.0.1>nul
|
rem Prep
|
||||||
if not exist "!dest!\setup.exe" (goto ErrorOfficeSourceNotFound)
|
call :DeQuote prog
|
||||||
if not exist "!dest!\!L_ITEM!" (goto ErrorOfficeSourceNotFound)
|
call :DeQuote L_ARGS
|
||||||
pushd "!dest!"
|
|
||||||
rem # The line below jumps to ErrorUnknown even though setup.exe is run correctly??
|
rem Create VB script
|
||||||
rem start "" "setup.exe" /configure !L_ITEM! || popd & goto ErrorUnknown
|
mkdir "%bin%\tmp" 2>nul
|
||||||
rem # Going to assume it extracted correctly and blindly start setup.exe
|
echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs"
|
||||||
start "" "setup.exe" /configure !L_ITEM!
|
echo UAC.ShellExecute "%prog%", "%L_ARGS%", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs"
|
||||||
popd
|
|
||||||
goto Exit
|
rem Run
|
||||||
|
"%systemroot%\System32\cscript.exe" //nologo "%bin%\tmp\Elevate.vbs" || goto ErrorUnknown
|
||||||
:LaunchQuickBooksSetup
|
goto Exit
|
||||||
rem set args and copy setup files to system
|
|
||||||
rem NOTE: init_client_dir.cmd sets %client_dir% and creates %client_dir%\QuickBooks folder
|
:LaunchExecutableUser
|
||||||
call "%bin%\Scripts\init_client_dir.cmd" /QuickBooks
|
rem Run
|
||||||
echo Copying setup file(s) for %L_ITEM%...
|
start "" "%prog%" %L_ARGS% || goto ErrorUnknown
|
||||||
rem copy setup files from QUICKBOOKS_SERVER_IP
|
goto Exit
|
||||||
set "fastcopy_args=/cmd=diff /no_ui /auto_close"
|
|
||||||
set "product=%L_PATH%\%L_ITEM%"
|
:LaunchFolder
|
||||||
set "product_name=%L_ITEM%"
|
rem Prep
|
||||||
call :GetBasename product_name || goto ErrorBasename
|
call :ExtractOrFindPath || goto ErrorProgramNotFound
|
||||||
set "source=\\%QUICKBOOKS_SERVER_IP%\QuickBooks\!product!"
|
|
||||||
set "dest=%client_dir%\QuickBooks"
|
rem Run
|
||||||
rem Verify source
|
start "" "explorer.exe" "%_path%" || goto ErrorUnknown
|
||||||
if not exist "!source!" (goto ErrorQuickBooksSourceNotFound)
|
goto Exit
|
||||||
rem Copy setup file(s) to system
|
|
||||||
start "" /wait "%FASTCOPY%" !fastcopy_args! "!source!" /to="!dest!\"
|
:LaunchOffice
|
||||||
rem Run setup
|
call "%bin%\Scripts\init_client_dir.cmd" /Office
|
||||||
if exist "!dest!\!product_name!\Setup.exe" (
|
set "_odt=False"
|
||||||
pushd "!dest!\!product_name!"
|
if %L_PATH% equ 2013 (set "_odt=True")
|
||||||
start "" "!dest!\!product_name!\Setup.exe" || goto ErrorUnknown
|
if %L_PATH% equ 2016 (set "_odt=True")
|
||||||
popd
|
if "%_odt%" == "True" (
|
||||||
) else (
|
goto LaunchOfficeODT
|
||||||
rem QuickBooks source not supported by this script
|
) else (
|
||||||
goto ErrorQuickBooksUnsupported
|
goto LaunchOfficeSetup
|
||||||
)
|
)
|
||||||
goto Exit
|
|
||||||
|
:LaunchOfficeODT
|
||||||
:LaunchProgram
|
rem Prep
|
||||||
rem Test L_PATH and set %_path%
|
set "args=-aoa -bso0 -bse0 -bsp0 -p%ARCHIVE_PASSWORD%"
|
||||||
call :TestPath || goto ErrorProgramNotFound
|
set "config=%L_ITEM%"
|
||||||
rem Check for 64-bit prog (if running on 64-bit system)
|
set "dest=%client_dir%\Office\%L_PATH%"
|
||||||
set "prog=%_path%\%L_ITEM%"
|
set "odt_exe=%L_PATH%\setup.exe"
|
||||||
if %ARCH% equ 64 (
|
set "source=%cbin%\_Office.7z"
|
||||||
if exist "%_path%\%L_ITEM:.=64.%" set "prog=%_path%\%L_ITEM:.=64.%"
|
|
||||||
)
|
rem Extract
|
||||||
if not exist "%prog%" goto ErrorProgramNotFound
|
if not exist "%source%" (goto ErrorODTSourceNotFound)
|
||||||
popd && pushd "%_path%"
|
"%SEVEN_ZIP%" e "%source%" %args% -o"%dest%" %odt_exe% %config% || exit /b 1
|
||||||
rem Run program and catch error(s)
|
"%systemroot%\System32\ping.exe" -n 2 127.0.0.1>nul
|
||||||
if defined L_ELEV (
|
|
||||||
call :DeQuote prog
|
rem Verify
|
||||||
call :DeQuote L_ARGS
|
if not exist "%dest%\setup.exe" (goto ErrorODTSourceNotFound)
|
||||||
rem Create a temporary VB script to elevate the specified program
|
if not exist "%dest%\%config%" (goto ErrorODTSourceNotFound)
|
||||||
mkdir "%bin%\tmp" 2>nul
|
pushd "%dest%"
|
||||||
echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs"
|
|
||||||
echo UAC.ShellExecute "!prog!", "!L_ARGS!", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs"
|
rem Run
|
||||||
"%systemroot%\System32\cscript.exe" //nologo "%bin%\tmp\Elevate.vbs" || goto ErrorUnknown
|
rem # The line below jumps to ErrorUnknown even when it runs correctly??
|
||||||
) else (
|
rem start "" "setup.exe" /configure %L_ITEM% || popd & goto ErrorUnknown
|
||||||
if defined L_WAIT (set "wait=/wait")
|
rem # Going to assume it extracted correctly and blindly start setup.exe
|
||||||
start "" %wait% "%prog%" %L_ARGS% || goto ErrorUnknown
|
start "" "setup.exe" /configure %config%
|
||||||
)
|
popd
|
||||||
goto Exit
|
goto Exit
|
||||||
|
|
||||||
:LaunchPSScript
|
:LaunchOfficeSetup
|
||||||
rem Test L_PATH and set %_path%
|
rem Prep
|
||||||
rem NOTE: This should always result in path=%bin%\Scripts. Exceptions are unsupported.
|
set "fastcopy_args=/cmd=diff /no_ui /auto_close"
|
||||||
call :TestPath || goto ErrorProgramNotFound
|
set "product=%L_PATH%\%L_ITEM%"
|
||||||
rem Set args
|
set "product_name=%L_ITEM%"
|
||||||
set "script=%_path%\%L_ITEM%"
|
call :GetBasename product_name || goto ErrorBasename
|
||||||
set "ps_args=-ExecutionPolicy Bypass -File "%script%" -NoProfile"
|
set "source=\\%OFFICE_SERVER_IP%\Office\%product%"
|
||||||
if defined L_ELEV (set "ps_args=%ps_args% -new_console:a -new_console:n")
|
set "dest=%client_dir%\Office"
|
||||||
if defined L_WAIT (set "ps_args=%ps_args% -Wait")
|
|
||||||
if not exist "%script%" goto ErrorScriptNotFound
|
rem Verify
|
||||||
rem Run program and catch error(s)
|
if not exist "%source%" (goto ErrorOfficeSourceNotFound)
|
||||||
start "" "%CON%" -run %systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe %ps_args% || goto ErrorUnknown
|
|
||||||
goto Exit
|
rem Copy
|
||||||
|
echo Copying setup file(s) for %product_name%...
|
||||||
:LaunchPyScript
|
start "" /wait "%FASTCOPY%" %fastcopy_args% "%source%" /to="%dest%\"
|
||||||
rem Test L_PATH and set %_path%
|
|
||||||
rem NOTE: This should always result in path=%bin%\Scripts. Exceptions are unsupported.
|
rem Run
|
||||||
call :TestPath || goto ErrorProgramNotFound
|
if exist "%dest%\%product_name%\setup.exe" (
|
||||||
rem Set args
|
start "" "%dest%\%product_name%\setup.exe" || goto ErrorUnknown
|
||||||
set "script=%_path%\%L_ITEM%"
|
) else if "%product_name:~-3,3%" == "exe" (
|
||||||
set "py_args=-new_console:n"
|
start "" "%dest%\%product_name%" || goto ErrorUnknown
|
||||||
if not exist "%script%" goto ErrorScriptNotFound
|
) else if "%product_name:~-3,3%" == "msi" (
|
||||||
if defined L_ELEV (
|
start "" "%dest%\%product_name%" || goto ErrorUnknown
|
||||||
call :DeQuote script
|
) else (
|
||||||
rem Create a temporary VB script to elevate the specified program
|
rem Office source not supported by this script
|
||||||
mkdir "%bin%\tmp" 2>nul
|
goto ErrorOfficeUnsupported
|
||||||
echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs"
|
)
|
||||||
echo UAC.ShellExecute "%CON%", "-run %PYTHON% !script! %py_args%", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs"
|
goto Exit
|
||||||
"%systemroot%\System32\cscript.exe" //nologo "%bin%\tmp\Elevate.vbs" || goto ErrorUnknown
|
|
||||||
) else (
|
:LaunchPSScript
|
||||||
start "" "%CON%" -run "%PYTHON%" "%script%" %py_args% || goto ErrorUnknown
|
rem Prep
|
||||||
)
|
call :ExtractOrFindPath || goto ErrorProgramNotFound
|
||||||
goto Exit
|
set "script=%_path%\%L_ITEM%"
|
||||||
|
set "ps_args=-ExecutionPolicy Bypass -NoProfile"
|
||||||
:LaunchPywScript
|
|
||||||
rem Test L_PATH and set %_path%
|
rem Verify
|
||||||
rem NOTE: This should always result in path=%bin%\Scripts. Exceptions are unsupported.
|
if not exist "%script%" goto ErrorScriptNotFound
|
||||||
call :TestPath || goto ErrorProgramNotFound
|
|
||||||
rem Set args
|
rem Run
|
||||||
set "script=%_path%\%L_ITEM%"
|
popd && pushd "%_path%"
|
||||||
if not exist "%script%" goto ErrorScriptNotFound
|
if defined L_ELEV (
|
||||||
if defined L_ELEV (
|
goto LaunchPSScriptElev
|
||||||
call :DeQuote script
|
) else (
|
||||||
rem Create a temporary VB script to elevate the specified program
|
goto LaunchPSScriptUser
|
||||||
mkdir "%bin%\tmp" 2>nul
|
)
|
||||||
echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs"
|
|
||||||
echo UAC.ShellExecute "%PYTHON%", "!script!", "", "runas", 3 >> "%bin%\tmp\Elevate.vbs"
|
:LaunchPSScriptElev
|
||||||
"%systemroot%\System32\cscript.exe" //nologo "%bin%\tmp\Elevate.vbs" || goto ErrorUnknown
|
rem Prep
|
||||||
) else (
|
call :DeQuote script
|
||||||
start "" "%PYTHON%" "%script%" /max || goto ErrorUnknown
|
|
||||||
)
|
rem Create VB script
|
||||||
goto Exit
|
mkdir "%bin%\tmp" 2>nul
|
||||||
|
echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs"
|
||||||
:Usage
|
if defined L_NCMD (
|
||||||
echo.
|
rem use Powershell's window instead of %CON%
|
||||||
echo.Usage (via defined variables):
|
echo UAC.ShellExecute "%POWERSHELL%", "%ps_args% -File "%script%"", "", "runas", 3 >> "%bin%\tmp\Elevate.vbs"
|
||||||
echo. L_TYPE L_PATH L_ITEM L_ARGS
|
) else (
|
||||||
echo. Console Working Dir Program Args [L_CHECK] [L_ELEV] [L_NCMD] [L_WAIT]
|
echo UAC.ShellExecute "%CON%", "-run %POWERSHELL% %ps_args% -File "%script%" -new_console:n", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs"
|
||||||
echo. Folder Folder '.' [L_CHECK] [L_NCMD]
|
)
|
||||||
echo. Office Year Product [L_CHECK] [L_NCMD]
|
|
||||||
echo. QuickBooks Year Product [L_CHECK] [L_NCMD]
|
rem Run
|
||||||
echo. Program Working Dir Program Args [L_CHECK] [L_ELEV] [L_NCMD] [L_WAIT]
|
"%systemroot%\System32\cscript.exe" //nologo "%bin%\tmp\Elevate.vbs" || goto ErrorUnknown
|
||||||
echo. PSScript Scripts Script [L_CHECK] [L_ELEV] [L_NCMD]
|
goto Exit
|
||||||
echo. PyScript Scripts Script [L_CHECK] [L_ELEV] [L_NCMD]
|
|
||||||
echo. PywScript Scripts Script [L_CHECK] [L_ELEV] [L_NCMD]
|
:LaunchPSScriptUser
|
||||||
echo.
|
rem Run
|
||||||
echo. NOTE: PywScript uses Python's window instead of %CON%
|
if defined L_NCMD (
|
||||||
echo.
|
start "" "%POWERSHELL%" %ps_args% -File "%script%" || goto ErrorUnknown
|
||||||
goto Abort
|
) else (
|
||||||
|
start "" "%CON%" -run "%POWERSHELL%" %ps_args% -File "%script%" -new_console:n || goto ErrorUnknown
|
||||||
:: Functions ::
|
)
|
||||||
:DeQuote
|
goto Exit
|
||||||
rem Code taken from http://ss64.com/nt/syntax-dequote.html
|
|
||||||
if not defined %1 (@exit /b 1)
|
:LaunchPyScript
|
||||||
for /f "delims=" %%a in ('echo %%%1%%') do set %1=%%~a
|
rem Prep
|
||||||
@exit /b 0
|
call :ExtractOrFindPath || goto ErrorProgramNotFound
|
||||||
|
set "script=%_path%\%L_ITEM%"
|
||||||
:ExtractCBin
|
|
||||||
rem Extract %cbin% archive into %bin%
|
rem Verify
|
||||||
echo Extracting "%L_ITEM%"...
|
if not exist "%script%" goto ErrorScriptNotFound
|
||||||
if exist "%cbin%\%L_PATH%\%L_ITEM:~0,-4%.7z" (
|
|
||||||
"%SEVEN_ZIP%" x "%cbin%\%L_PATH%\%L_ITEM:~0,-4%.7z" -aos -bso0 -bse0 -p%ARCHIVE_PASSWORD% -o"%bin%\%L_PATH%" %L_7ZIP% || exit /b 1
|
rem Run
|
||||||
) else (
|
if defined L_ELEV (
|
||||||
"%SEVEN_ZIP%" x "%cbin%\%L_PATH%.7z" -aos -bso0 -bse0 -p%ARCHIVE_PASSWORD% -o"%bin%\%L_PATH%" %L_7ZIP% || exit /b 1
|
goto LaunchPyScriptElev
|
||||||
)
|
) else (
|
||||||
ping.exe -n 2 127.0.0.1>nul
|
goto LaunchPyScriptUser
|
||||||
exit /b 0
|
)
|
||||||
|
|
||||||
:FindBin
|
:LaunchPyScriptElev
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
rem Prep
|
||||||
rem NOTE: Has not been tested for UNC paths
|
call :DeQuote script
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
rem Create VB script
|
||||||
:FindBinInner
|
mkdir "%bin%\tmp" 2>nul
|
||||||
if exist ".bin" (goto FindBinDone)
|
echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs"
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
if defined L_NCMD (
|
||||||
cd ..
|
echo UAC.ShellExecute "%PYTHON%", "%script%", "", "runas", 3 >> "%bin%\tmp\Elevate.vbs"
|
||||||
goto FindBinInner
|
) else (
|
||||||
:FindBinDone
|
echo UAC.ShellExecute "%CON%", "-run %PYTHON% %script% -new_console:n", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs"
|
||||||
set "bin=%cd%\.bin"
|
)
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
rem Run
|
||||||
@exit /b 0
|
"%systemroot%\System32\cscript.exe" //nologo "%bin%\tmp\Elevate.vbs" || goto ErrorUnknown
|
||||||
|
goto Exit
|
||||||
:GetBasename
|
|
||||||
rem Loop over passed variable to remove all text left of the last '\' character
|
:LaunchPyScriptUser
|
||||||
rem NOTE: This function should be called as 'call :GetBasename VarName || goto ErrorBasename' to catch variables that become empty.
|
if defined L_NCMD (
|
||||||
for /f "delims=" %%a in ('echo %%%1%%') do (set "_tmp=%%~a")
|
start "" "%PYTHON%" "%script%" || goto ErrorUnknown
|
||||||
:GetBasenameInner
|
) else (
|
||||||
set "_tmp=%_tmp:*\=%"
|
start "" "%CON%" -run "%PYTHON%" "%script%" -new_console:n || goto ErrorUnknown
|
||||||
if not defined _tmp (@exit /b 1)
|
)
|
||||||
if not "%_tmp%" == "%_tmp:*\=%" (goto GetBasenameInner)
|
goto Exit
|
||||||
:GetBasenameDone
|
|
||||||
set "%1=%_tmp%"
|
:LaunchQuickBooksSetup
|
||||||
@exit /b 0
|
rem Prep
|
||||||
|
call "%bin%\Scripts\init_client_dir.cmd" /QuickBooks
|
||||||
:TestPath
|
set "fastcopy_args=/cmd=diff /no_ui /auto_close"
|
||||||
rem Test L_PATH in the following order:
|
set "product=%L_PATH%\%L_ITEM%"
|
||||||
rem 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
set "product_name=%L_ITEM%"
|
||||||
rem 2: %bin%\L_PATH
|
call :GetBasename product_name || goto ErrorBasename
|
||||||
rem 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
set "source=\\%QUICKBOOKS_SERVER_IP%\QuickBooks\%product%"
|
||||||
rem NOTE: This function should be called as 'call :TestPath || goto ErrorProgramNotFound' to catch invalid paths.
|
set "dest=%client_dir%\QuickBooks"
|
||||||
set _path=
|
|
||||||
if exist "%cbin%\%L_PATH%.7z" (
|
rem Verify
|
||||||
call :ExtractCBin
|
if not exist "%source%" (goto ErrorQuickBooksSourceNotFound)
|
||||||
) else if exist "%cbin%\%L_PATH%\%L_ITEM:~0,-4%.7z" (
|
|
||||||
call :ExtractCBin
|
rem Copy
|
||||||
)
|
echo Copying setup file(s) for %L_ITEM%...
|
||||||
if exist "%bin%\%L_PATH%" (set "_path=%bin%\%L_PATH%")
|
start "" /wait "%FASTCOPY%" %fastcopy_args% "%source%" /to="%dest%\"
|
||||||
if not defined _path (set "_path=%L_PATH%")
|
|
||||||
rem Raise error if path is still not available
|
rem Run
|
||||||
if not exist "%_path%" (exit /b 1)
|
if exist "%dest%\%product_name%\Setup.exe" (
|
||||||
exit /b 0
|
pushd "%dest%\%product_name%"
|
||||||
|
start "" "%dest%\%product_name%\Setup.exe" || goto ErrorUnknown
|
||||||
:: Errors ::
|
popd
|
||||||
:ErrorBasename
|
) else (
|
||||||
echo.
|
rem QuickBooks source not supported by this script
|
||||||
echo ERROR: GetBasename resulted in an empty variable.
|
goto ErrorQuickBooksUnsupported
|
||||||
goto Abort
|
)
|
||||||
|
goto Exit
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
:Usage
|
||||||
echo ERROR: ".bin" folder not found.
|
echo.
|
||||||
goto Abort
|
echo.Usage (via defined variables):
|
||||||
|
echo. L_TYPE L_PATH L_ITEM L_ARGS
|
||||||
:ErrorOfficeSourceNotFound
|
echo. Executable Working Dir Program Args [L_7ZIP] [L_ELEV] [L__CLI]
|
||||||
echo.
|
echo. Folder Folder '.' [L_7ZIP]
|
||||||
echo ERROR: Office source "%L_ITEM%" not found.
|
echo. Office Year Product [L_7ZIP]
|
||||||
goto Abort
|
echo. PSScript Scripts Script [L_7ZIP] [L_ELEV] [L_NCMD]
|
||||||
|
echo. PyScript Scripts Script [L_7ZIP] [L_ELEV] [L_NCMD]
|
||||||
:ErrorOfficeUnsupported
|
echo. QuickBooks Year Product [L_7ZIP]
|
||||||
rem Source is not an executable nor is a folder with a setup.exe file inside. Open explorer to local setup file(s) instead.
|
echo.
|
||||||
echo.
|
echo.L_7ZIP: Extra arguments for 7-Zip (in the :ExtractCBin label)
|
||||||
echo ERROR: Office version not supported by this script.
|
echo.L_ELEV: Elevate to run as Admin
|
||||||
start "" "explorer.exe" "%client_dir%\Office"
|
echo.L_NCMD: Do not run script inside ConEmu (i.e. use the native window)
|
||||||
goto Abort
|
echo.L__CLI: Run executable in ConEmu
|
||||||
|
echo.
|
||||||
:ErrorQuickBooksSourceNotFound
|
goto Abort
|
||||||
echo.
|
|
||||||
echo ERROR: QuickBooks source "%L_ITEM%" not found.
|
:: Functions ::
|
||||||
goto Abort
|
:DeQuote
|
||||||
|
rem Code taken from http://ss64.com/nt/syntax-dequote.html
|
||||||
:ErrorQuickBooksUnsupported
|
if not defined %1 (@exit /b 1)
|
||||||
rem Source is not an executable nor is a folder with a setup.exe file inside. Open explorer to local setup file(s) instead.
|
for /f "delims=" %%a in ('echo %%%1%%') do set %1=%%~a
|
||||||
echo.
|
@exit /b 0
|
||||||
echo ERROR: QuickBooks version not supported by this script.
|
|
||||||
start "" "explorer.exe" "%client_dir%\QuickBooks"
|
:ExtractCBin
|
||||||
goto Abort
|
rem Extract %cbin% archive into %bin%
|
||||||
|
echo Extracting "%L_PATH%"...
|
||||||
:ErrorProgramNotFound
|
set "source=%cbin%\%L_PATH%.7z"
|
||||||
echo.
|
set "dest=%bin%\%L_PATH%"
|
||||||
echo ERROR: Program "%prog%" not found.
|
set "args=-aos -bso0 -bse0 -bsp0 -p%ARCHIVE_PASSWORD%"
|
||||||
goto Abort
|
if defined DEBUG (set "args=-aos -p%ARCHIVE_PASSWORD%")
|
||||||
|
"%SEVEN_ZIP%" x "%source%" %args% -o"%dest%" %L_7ZIP% || exit /b 1
|
||||||
:ErrorScriptNotFound
|
ping.exe -n 2 127.0.0.1>nul
|
||||||
echo.
|
exit /b 0
|
||||||
echo ERROR: Script "%script%" not found.
|
|
||||||
goto Abort
|
:FindBin
|
||||||
|
rem Checks the current directory and all parents for the ".bin" folder
|
||||||
:ErrorUnknown
|
rem NOTE: Has not been tested for UNC paths
|
||||||
echo.
|
set bin=
|
||||||
echo ERROR: Unknown error encountered.
|
pushd "%~dp0"
|
||||||
goto Abort
|
:FindBinInner
|
||||||
|
if exist ".bin" (goto FindBinDone)
|
||||||
:Abort
|
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
||||||
rem Handle color theme for both the native console and ConEmu
|
cd ..
|
||||||
if defined L_NCMD (
|
goto FindBinInner
|
||||||
color 4e
|
:FindBinDone
|
||||||
) else (
|
set "bin=%cd%\.bin"
|
||||||
color c4
|
set "cbin=%cd%\.cbin"
|
||||||
)
|
popd
|
||||||
echo Aborted.
|
@exit /b 0
|
||||||
echo.
|
|
||||||
echo DETAILS: L_TYPE: %L_TYPE%
|
:GetBasename
|
||||||
echo. L_PATH: %L_PATH%
|
rem Loop over passed variable to remove all text left of the last '\' character
|
||||||
echo. L_ITEM: %L_ITEM%
|
rem NOTE: This function should be called as 'call :GetBasename VarName || goto ErrorBasename' to catch variables that become empty.
|
||||||
echo. L_ARGS: %L_ARGS%
|
for /f "delims=" %%a in ('echo %%%1%%') do (set "_tmp=%%~a")
|
||||||
echo. L_CHCK: %L_CHCK%
|
:GetBasenameInner
|
||||||
echo. L_ELEV: %L_ELEV%
|
set "_tmp=%_tmp:*\=%"
|
||||||
echo. L_NCMD: %L_NCMD%
|
if not defined _tmp (@exit /b 1)
|
||||||
echo. L_WAIT: %L_WAIT%
|
if not "%_tmp%" == "%_tmp:*\=%" (goto GetBasenameInner)
|
||||||
echo. CON: %CON%
|
:GetBasenameDone
|
||||||
echo. DEBUG: %DEBUG%
|
set "%1=%_tmp%"
|
||||||
echo. PYTHON: %PYTHON%
|
@exit /b 0
|
||||||
rem Pause script only if we want to catch the error AND only when using ConEmu
|
|
||||||
if defined L_CHCK (
|
:ExtractOrFindPath
|
||||||
if not defined L_NCMD (
|
rem Test L_PATH in the following order:
|
||||||
echo Press any key to exit...
|
rem 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
||||||
pause>nul
|
rem 2: %bin%\L_PATH
|
||||||
)
|
rem 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
||||||
)
|
rem NOTE: This function should be called as 'call :ExtractOrFindPath || goto ErrorProgramNotFound' to catch invalid paths.
|
||||||
color
|
set _path=
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
if exist "%cbin%\%L_PATH%.7z" (
|
||||||
color 00
|
call :ExtractCBin
|
||||||
goto Exit
|
) else if exist "%cbin%\%L_PATH%\%L_ITEM:~0,-4%.7z" (
|
||||||
|
call :ExtractCBin
|
||||||
:: Cleanup and exit ::
|
)
|
||||||
:Exit
|
if exist "%bin%\%L_PATH%" (set "_path=%bin%\%L_PATH%")
|
||||||
popd
|
if not defined _path (set "_path=%L_PATH%")
|
||||||
endlocal
|
rem Raise error if path is still not available
|
||||||
|
if not exist "%_path%" (exit /b 1)
|
||||||
|
exit /b 0
|
||||||
|
|
||||||
|
:: Errors ::
|
||||||
|
:ErrorBasename
|
||||||
|
echo.
|
||||||
|
echo ERROR: GetBasename resulted in an empty variable.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorNoBin
|
||||||
|
echo.
|
||||||
|
echo ERROR: ".bin" folder not found.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorODTSourceNotFound
|
||||||
|
echo.
|
||||||
|
echo ERROR: Office Deployment Tool source not found.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorOfficeSourceNotFound
|
||||||
|
echo.
|
||||||
|
echo ERROR: Office source "%L_ITEM%" not found.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorOfficeUnsupported
|
||||||
|
rem Source is not an executable nor is a folder with a setup.exe file inside. Open explorer to local setup file(s) instead.
|
||||||
|
echo.
|
||||||
|
echo ERROR: Office version not supported by this script.
|
||||||
|
start "" "explorer.exe" "%client_dir%\Office"
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorQuickBooksSourceNotFound
|
||||||
|
echo.
|
||||||
|
echo ERROR: QuickBooks source "%L_ITEM%" not found.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorQuickBooksUnsupported
|
||||||
|
rem Source is not an executable nor is a folder with a setup.exe file inside. Open explorer to local setup file(s) instead.
|
||||||
|
echo.
|
||||||
|
echo ERROR: QuickBooks version not supported by this script.
|
||||||
|
start "" "explorer.exe" "%client_dir%\QuickBooks"
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorProgramNotFound
|
||||||
|
echo.
|
||||||
|
echo ERROR: Program "%prog%" not found.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorScriptNotFound
|
||||||
|
echo.
|
||||||
|
echo ERROR: Script "%script%" not found.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorUnknown
|
||||||
|
echo.
|
||||||
|
echo ERROR: Unknown error encountered.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:Abort
|
||||||
|
rem Handle color theme for both the native console and ConEmu
|
||||||
|
if defined ConEmuBuild (
|
||||||
|
color c4
|
||||||
|
) else (
|
||||||
|
color 4e
|
||||||
|
)
|
||||||
|
echo Aborted.
|
||||||
|
echo.
|
||||||
|
echo DETAILS: L_TYPE: %L_TYPE%
|
||||||
|
echo. L_PATH: %L_PATH%
|
||||||
|
echo. L_ITEM: %L_ITEM%
|
||||||
|
echo. L_ARGS: %L_ARGS%
|
||||||
|
echo. L_7ZIP: %L_7ZIP%
|
||||||
|
echo. L_ELEV: %L_ELEV%
|
||||||
|
echo. L_NCMD: %L_NCMD%
|
||||||
|
echo. L__CLI: %L__CLI%
|
||||||
|
echo. CON: %CON%
|
||||||
|
echo. DEBUG: %DEBUG%
|
||||||
|
echo. PYTHON: %PYTHON%
|
||||||
|
echo Press any key to exit...
|
||||||
|
pause>nul
|
||||||
|
rem reset color and reset errorlevel to 0
|
||||||
|
rem NOTE: This is done to avoid causing a ErrorLaunchCMD in the launcher.cmd
|
||||||
|
color
|
||||||
|
goto Exit
|
||||||
|
|
||||||
|
:: Cleanup and exit ::
|
||||||
|
:Exit
|
||||||
|
popd
|
||||||
|
endlocal
|
||||||
exit /b %errorlevel%
|
exit /b %errorlevel%
|
||||||
|
|
@ -1,126 +1,113 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
:: Wizard Kit: Launcher Script ::
|
||||||
::
|
::
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
:: This script works by setting env variables and then calling Launch.cmd
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
:: which inherits the variables. This bypasses batch file argument parsing
|
||||||
:: which is awful.
|
:: which is awful.
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
:Init
|
:Init
|
||||||
setlocal EnableDelayedExpansion
|
setlocal EnableDelayedExpansion
|
||||||
title Wizard Kit: Launcher
|
title Wizard Kit: Launcher
|
||||||
call :CheckFlags %*
|
call :CheckFlags %*
|
||||||
call :FindBin
|
call :FindBin
|
||||||
call :SetTitle Launcher
|
call :SetTitle Launcher
|
||||||
|
|
||||||
:DefineLaunch
|
:Optional
|
||||||
:: Set L_TYPE to one of these options:
|
:: This section is for any work that needs done before launching L_ITEM
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
rem EXTRA_CODE
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
:DefineLaunch
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
:: See %bin%\SCripts\Launch.cmd for details under :Usage label
|
||||||
:: 2: %bin%\L_PATH
|
set L_TYPE=
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
set L_PATH=
|
||||||
:: Set L_ITEM to one of the following:
|
set L_ITEM=
|
||||||
:: 1. The filename of the item to launch
|
set L_ARGS=
|
||||||
:: 2. The Office product to install
|
set L__CLI=
|
||||||
:: 3. '.' to open extracted folder
|
set L_7ZIP=
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
set L_ELEV=
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
set L_NCMD=
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
:::::::::::::::::::::::::::::::::::::::::::
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
:: Do not edit anything below this line! ::
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
:::::::::::::::::::::::::::::::::::::::::::
|
||||||
set L_TYPE=__TYPE__
|
|
||||||
set L_PATH=__PATH__
|
:LaunchPrep
|
||||||
set L_ITEM=__ITEM__
|
rem Verifies the environment before launching item
|
||||||
set L_ARGS=
|
if not defined bin (goto ErrorNoBin)
|
||||||
set L_7ZIP=
|
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=
|
:Launch
|
||||||
set L_NCMD=
|
rem Calls the Launch.cmd script using the variables defined above
|
||||||
set L_WAIT=
|
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
||||||
|
goto Exit
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
:: Functions ::
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
:CheckFlags
|
||||||
|
rem Loops through all arguments to check for accepted flags
|
||||||
:LaunchPrep
|
set DEBUG=
|
||||||
rem Verifies the environment before launching item
|
for %%f in (%*) do (
|
||||||
if not defined bin (goto ErrorNoBin)
|
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
)
|
||||||
|
@exit /b 0
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
:FindBin
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
rem Checks the current directory and all parents for the ".bin" folder
|
||||||
goto Exit
|
rem NOTE: Has not been tested for UNC paths
|
||||||
|
set bin=
|
||||||
:: Functions ::
|
pushd "%~dp0"
|
||||||
:CheckFlags
|
:FindBinInner
|
||||||
rem Loops through all arguments to check for accepted flags
|
if exist ".bin" (goto FindBinDone)
|
||||||
set DEBUG=
|
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
||||||
for %%f in (%*) do (
|
cd ..
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
goto FindBinInner
|
||||||
)
|
:FindBinDone
|
||||||
@exit /b 0
|
set "bin=%cd%\.bin"
|
||||||
|
set "cbin=%cd%\.cbin"
|
||||||
:FindBin
|
popd
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
@exit /b 0
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
:SetTitle
|
||||||
pushd "%~dp0"
|
rem Sets title using KIT_NAME_FULL from settings\main.py
|
||||||
:FindBinInner
|
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
||||||
if exist ".bin" (goto FindBinDone)
|
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
set "_v=%%f"
|
||||||
cd ..
|
set "_v=!_v:*'=!"
|
||||||
goto FindBinInner
|
set "KIT_NAME_FULL=!_v:~0,-1!"
|
||||||
:FindBinDone
|
)
|
||||||
set "bin=%cd%\.bin"
|
set "window_title=%*"
|
||||||
set "cbin=%cd%\.cbin"
|
if not defined window_title set "window_title=Launcher"
|
||||||
popd
|
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
||||||
@exit /b 0
|
title %window_title%
|
||||||
|
@exit /b 0
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
:: Errors ::
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
:ErrorLaunchCMD
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
echo.
|
||||||
set "_v=%%f"
|
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
||||||
set "_v=!_v:*'=!"
|
goto Abort
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
:ErrorLaunchCMDMissing
|
||||||
set "window_title=%*"
|
echo.
|
||||||
if not defined window_title set "window_title=Launcher"
|
echo ERROR: Launch.cmd script not found.
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
goto Abort
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
:ErrorNoBin
|
||||||
|
echo.
|
||||||
:: Errors ::
|
echo ERROR: ".bin" folder not found.
|
||||||
:ErrorLaunchCMD
|
goto Abort
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
:Abort
|
||||||
goto Abort
|
color 4e
|
||||||
|
echo Aborted.
|
||||||
:ErrorLaunchCMDMissing
|
echo.
|
||||||
echo.
|
echo Press any key to exit...
|
||||||
echo ERROR: Launch.cmd script not found.
|
pause>nul
|
||||||
goto Abort
|
color
|
||||||
|
rem Set errorlevel to 1 by calling color incorrectly
|
||||||
:ErrorNoBin
|
color 00
|
||||||
echo.
|
goto Exit
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
:: Cleanup and exit ::
|
||||||
|
:Exit
|
||||||
:Abort
|
endlocal
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
exit /b %errorlevel%
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=PyScript
|
|
||||||
set L_PATH=Scripts
|
|
||||||
set L_ITEM=update_kit.py
|
|
||||||
set L_ARGS=
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,57 +1,62 @@
|
||||||
# Wizard Kit: Activate Windows using various methods
|
# Wizard Kit: Activate Windows using various methods
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.activation import *
|
from functions.activation import *
|
||||||
from functions.common import *
|
init_global_vars()
|
||||||
init_global_vars()
|
os.system('title {}: Windows Activation Tool'.format(KIT_NAME_FULL))
|
||||||
os.system('title {}: Windows Activation Tool'.format(KIT_NAME_FULL))
|
|
||||||
|
if __name__ == '__main__':
|
||||||
def activate_with_bios():
|
try:
|
||||||
"""Attempt to activate Windows with a key stored in the BIOS."""
|
stay_awake()
|
||||||
try_and_print(message='BIOS Activation:',
|
os.system('cls')
|
||||||
function=activate_windows_with_bios, other_results=other_results)
|
print_info('{}: Windows Activation Tool\n'.format(KIT_NAME_FULL))
|
||||||
|
# Bail early if already activated
|
||||||
if __name__ == '__main__':
|
if windows_is_activated():
|
||||||
try:
|
print_info('This system is already activated')
|
||||||
stay_awake()
|
sleep(5)
|
||||||
# Bail early if already activated
|
exit_script()
|
||||||
if windows_is_activated():
|
other_results = {
|
||||||
print_info('This system is already activated')
|
'Error': {
|
||||||
sleep(5)
|
'BIOSKeyNotFoundError': 'BIOS key not found.',
|
||||||
exit_script()
|
}}
|
||||||
|
|
||||||
# Determine activation method
|
# Determine activation method
|
||||||
activation_methods = [
|
activation_methods = [
|
||||||
{'Name': 'Activate with BIOS key', 'Function': activate_with_bios},
|
{'Name': 'Activate with BIOS key', 'Function': activate_with_bios},
|
||||||
]
|
]
|
||||||
if global_vars['OS']['Version'] not in ['8', '10']:
|
if global_vars['OS']['Version'] not in ['8', '10']:
|
||||||
activation_methods[0]['Disabled'] = True
|
activation_methods[0]['Disabled'] = True
|
||||||
actions = [
|
actions = [
|
||||||
{'Name': 'Quit', 'Letter': 'Q'},
|
{'Name': 'Quit', 'Letter': 'Q'},
|
||||||
]
|
]
|
||||||
|
|
||||||
# Main loop
|
while True:
|
||||||
while True:
|
selection = menu_select(
|
||||||
selection = menu_select(
|
'{}: Windows Activation Menu'.format(KIT_NAME_FULL),
|
||||||
'{}: Windows Activation Menu'.format(KIT_NAME_FULL),
|
main_entries=activation_methods, action_entries=actions)
|
||||||
activation_methods, actions)
|
|
||||||
|
if (selection.isnumeric()):
|
||||||
if (selection.isnumeric()):
|
result = try_and_print(
|
||||||
activation_methods[int(selection)-1]['Function']()
|
message = activation_methods[int(selection)-1]['Name'],
|
||||||
break
|
function = activation_methods[int(selection)-1]['Function'],
|
||||||
elif selection == 'Q':
|
other_results=other_results)
|
||||||
exit_script()
|
if result['CS']:
|
||||||
|
break
|
||||||
# Done
|
else:
|
||||||
print_success('Done.')
|
sleep(2)
|
||||||
pause("Press Enter to exit...")
|
elif selection == 'Q':
|
||||||
exit_script()
|
exit_script()
|
||||||
except SystemExit:
|
|
||||||
pass
|
# Done
|
||||||
except:
|
print_success('\nDone.')
|
||||||
major_exception()
|
pause("Press Enter to exit...")
|
||||||
|
exit_script()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,57 +1,57 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Code borrowed from https://github.com/aeruder/get_win8key
|
# Code borrowed from https://github.com/aeruder/get_win8key
|
||||||
|
|
||||||
if sys.platform.startswith('win32'):
|
if sys.platform.startswith('win32'):
|
||||||
import ctypes
|
import ctypes
|
||||||
import ctypes.wintypes
|
import ctypes.wintypes
|
||||||
|
|
||||||
def EnumAcpiTables():
|
def EnumAcpiTables():
|
||||||
#returns a list of the names of the ACPI tables on this system
|
#returns a list of the names of the ACPI tables on this system
|
||||||
FirmwareTableProviderSignature=ctypes.wintypes.DWORD(1094930505)
|
FirmwareTableProviderSignature=ctypes.wintypes.DWORD(1094930505)
|
||||||
pFirmwareTableBuffer=ctypes.create_string_buffer(0)
|
pFirmwareTableBuffer=ctypes.create_string_buffer(0)
|
||||||
BufferSize=ctypes.wintypes.DWORD(0)
|
BufferSize=ctypes.wintypes.DWORD(0)
|
||||||
#http://msdn.microsoft.com/en-us/library/windows/desktop/ms724259
|
#http://msdn.microsoft.com/en-us/library/windows/desktop/ms724259
|
||||||
EnumSystemFirmwareTables=ctypes.WinDLL("Kernel32").EnumSystemFirmwareTables
|
EnumSystemFirmwareTables=ctypes.WinDLL("Kernel32").EnumSystemFirmwareTables
|
||||||
ret=EnumSystemFirmwareTables(FirmwareTableProviderSignature, pFirmwareTableBuffer, BufferSize)
|
ret=EnumSystemFirmwareTables(FirmwareTableProviderSignature, pFirmwareTableBuffer, BufferSize)
|
||||||
pFirmwareTableBuffer=None
|
pFirmwareTableBuffer=None
|
||||||
pFirmwareTableBuffer=ctypes.create_string_buffer(ret)
|
pFirmwareTableBuffer=ctypes.create_string_buffer(ret)
|
||||||
BufferSize.value=ret
|
BufferSize.value=ret
|
||||||
ret2=EnumSystemFirmwareTables(FirmwareTableProviderSignature, pFirmwareTableBuffer, BufferSize)
|
ret2=EnumSystemFirmwareTables(FirmwareTableProviderSignature, pFirmwareTableBuffer, BufferSize)
|
||||||
return [pFirmwareTableBuffer.value[i:i+4] for i in range(0, len(pFirmwareTableBuffer.value), 4)]
|
return [pFirmwareTableBuffer.value[i:i+4] for i in range(0, len(pFirmwareTableBuffer.value), 4)]
|
||||||
|
|
||||||
def GetAcpiTable(table):
|
def GetAcpiTable(table):
|
||||||
#returns raw contents of ACPI table
|
#returns raw contents of ACPI table
|
||||||
#http://msdn.microsoft.com/en-us/library/windows/desktop/ms724379x
|
#http://msdn.microsoft.com/en-us/library/windows/desktop/ms724379x
|
||||||
tableID = 0
|
tableID = 0
|
||||||
for b in reversed(table):
|
for b in reversed(table):
|
||||||
tableID = (tableID << 8) + b
|
tableID = (tableID << 8) + b
|
||||||
GetSystemFirmwareTable=ctypes.WinDLL("Kernel32").GetSystemFirmwareTable
|
GetSystemFirmwareTable=ctypes.WinDLL("Kernel32").GetSystemFirmwareTable
|
||||||
FirmwareTableProviderSignature=ctypes.wintypes.DWORD(1094930505)
|
FirmwareTableProviderSignature=ctypes.wintypes.DWORD(1094930505)
|
||||||
FirmwareTableID=ctypes.wintypes.DWORD(int(tableID))
|
FirmwareTableID=ctypes.wintypes.DWORD(int(tableID))
|
||||||
pFirmwareTableBuffer=ctypes.create_string_buffer(0)
|
pFirmwareTableBuffer=ctypes.create_string_buffer(0)
|
||||||
BufferSize=ctypes.wintypes.DWORD(0)
|
BufferSize=ctypes.wintypes.DWORD(0)
|
||||||
ret = GetSystemFirmwareTable(FirmwareTableProviderSignature, FirmwareTableID, pFirmwareTableBuffer, BufferSize)
|
ret = GetSystemFirmwareTable(FirmwareTableProviderSignature, FirmwareTableID, pFirmwareTableBuffer, BufferSize)
|
||||||
pFirmwareTableBuffer=None
|
pFirmwareTableBuffer=None
|
||||||
pFirmwareTableBuffer=ctypes.create_string_buffer(ret)
|
pFirmwareTableBuffer=ctypes.create_string_buffer(ret)
|
||||||
BufferSize.value=ret
|
BufferSize.value=ret
|
||||||
ret2 = GetSystemFirmwareTable(FirmwareTableProviderSignature, FirmwareTableID, pFirmwareTableBuffer, BufferSize)
|
ret2 = GetSystemFirmwareTable(FirmwareTableProviderSignature, FirmwareTableID, pFirmwareTableBuffer, BufferSize)
|
||||||
return pFirmwareTableBuffer.raw
|
return pFirmwareTableBuffer.raw
|
||||||
elif sys.platform.startswith('linux'):
|
elif sys.platform.startswith('linux'):
|
||||||
import os
|
import os
|
||||||
TABLE_ROOT = b'/sys/firmware/acpi/tables'
|
TABLE_ROOT = b'/sys/firmware/acpi/tables'
|
||||||
def EnumAcpiTables():
|
def EnumAcpiTables():
|
||||||
return os.listdir(TABLE_ROOT)
|
return os.listdir(TABLE_ROOT)
|
||||||
def GetAcpiTable(table):
|
def GetAcpiTable(table):
|
||||||
with open(os.path.join(TABLE_ROOT, table), 'rb') as o:
|
with open(os.path.join(TABLE_ROOT, table), 'rb') as o:
|
||||||
return o.read()
|
return o.read()
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError('acpi support only implemented for linux and win32')
|
raise NotImplementedError('acpi support only implemented for linux and win32')
|
||||||
|
|
||||||
def FindAcpiTable(table):
|
def FindAcpiTable(table):
|
||||||
#checks if specific ACPI table exists and returns True/False
|
#checks if specific ACPI table exists and returns True/False
|
||||||
tables = EnumAcpiTables()
|
tables = EnumAcpiTables()
|
||||||
if table in tables:
|
if table in tables:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2014 Michael Kropat
|
Copyright (c) 2014 Michael Kropat
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
in the Software without restriction, including without limitation the rights
|
in the Software without restriction, including without limitation the rights
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
furnished to do so, subject to the following conditions:
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
The above copyright notice and this permission notice shall be included in
|
||||||
all copies or substantial portions of the Software.
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
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
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
|
||||||
|
|
@ -1,164 +1,164 @@
|
||||||
import ctypes, sys
|
import ctypes, sys
|
||||||
from ctypes import windll, wintypes
|
from ctypes import windll, wintypes
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
class GUID(ctypes.Structure): # [1]
|
class GUID(ctypes.Structure): # [1]
|
||||||
_fields_ = [
|
_fields_ = [
|
||||||
("Data1", wintypes.DWORD),
|
("Data1", wintypes.DWORD),
|
||||||
("Data2", wintypes.WORD),
|
("Data2", wintypes.WORD),
|
||||||
("Data3", wintypes.WORD),
|
("Data3", wintypes.WORD),
|
||||||
("Data4", wintypes.BYTE * 8)
|
("Data4", wintypes.BYTE * 8)
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, uuid_):
|
def __init__(self, uuid_):
|
||||||
ctypes.Structure.__init__(self)
|
ctypes.Structure.__init__(self)
|
||||||
self.Data1, self.Data2, self.Data3, self.Data4[0], self.Data4[1], rest = uuid_.fields
|
self.Data1, self.Data2, self.Data3, self.Data4[0], self.Data4[1], rest = uuid_.fields
|
||||||
for i in range(2, 8):
|
for i in range(2, 8):
|
||||||
self.Data4[i] = rest>>(8 - i - 1)*8 & 0xff
|
self.Data4[i] = rest>>(8 - i - 1)*8 & 0xff
|
||||||
|
|
||||||
class FOLDERID: # [2]
|
class FOLDERID: # [2]
|
||||||
AccountPictures = UUID('{008ca0b1-55b4-4c56-b8a8-4de4b299d3be}')
|
AccountPictures = UUID('{008ca0b1-55b4-4c56-b8a8-4de4b299d3be}')
|
||||||
AdminTools = UUID('{724EF170-A42D-4FEF-9F26-B60E846FBA4F}')
|
AdminTools = UUID('{724EF170-A42D-4FEF-9F26-B60E846FBA4F}')
|
||||||
ApplicationShortcuts = UUID('{A3918781-E5F2-4890-B3D9-A7E54332328C}')
|
ApplicationShortcuts = UUID('{A3918781-E5F2-4890-B3D9-A7E54332328C}')
|
||||||
CameraRoll = UUID('{AB5FB87B-7CE2-4F83-915D-550846C9537B}')
|
CameraRoll = UUID('{AB5FB87B-7CE2-4F83-915D-550846C9537B}')
|
||||||
CDBurning = UUID('{9E52AB10-F80D-49DF-ACB8-4330F5687855}')
|
CDBurning = UUID('{9E52AB10-F80D-49DF-ACB8-4330F5687855}')
|
||||||
CommonAdminTools = UUID('{D0384E7D-BAC3-4797-8F14-CBA229B392B5}')
|
CommonAdminTools = UUID('{D0384E7D-BAC3-4797-8F14-CBA229B392B5}')
|
||||||
CommonOEMLinks = UUID('{C1BAE2D0-10DF-4334-BEDD-7AA20B227A9D}')
|
CommonOEMLinks = UUID('{C1BAE2D0-10DF-4334-BEDD-7AA20B227A9D}')
|
||||||
CommonPrograms = UUID('{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}')
|
CommonPrograms = UUID('{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}')
|
||||||
CommonStartMenu = UUID('{A4115719-D62E-491D-AA7C-E74B8BE3B067}')
|
CommonStartMenu = UUID('{A4115719-D62E-491D-AA7C-E74B8BE3B067}')
|
||||||
CommonStartup = UUID('{82A5EA35-D9CD-47C5-9629-E15D2F714E6E}')
|
CommonStartup = UUID('{82A5EA35-D9CD-47C5-9629-E15D2F714E6E}')
|
||||||
CommonTemplates = UUID('{B94237E7-57AC-4347-9151-B08C6C32D1F7}')
|
CommonTemplates = UUID('{B94237E7-57AC-4347-9151-B08C6C32D1F7}')
|
||||||
Contacts = UUID('{56784854-C6CB-462b-8169-88E350ACB882}')
|
Contacts = UUID('{56784854-C6CB-462b-8169-88E350ACB882}')
|
||||||
Cookies = UUID('{2B0F765D-C0E9-4171-908E-08A611B84FF6}')
|
Cookies = UUID('{2B0F765D-C0E9-4171-908E-08A611B84FF6}')
|
||||||
Desktop = UUID('{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}')
|
Desktop = UUID('{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}')
|
||||||
DeviceMetadataStore = UUID('{5CE4A5E9-E4EB-479D-B89F-130C02886155}')
|
DeviceMetadataStore = UUID('{5CE4A5E9-E4EB-479D-B89F-130C02886155}')
|
||||||
Documents = UUID('{FDD39AD0-238F-46AF-ADB4-6C85480369C7}')
|
Documents = UUID('{FDD39AD0-238F-46AF-ADB4-6C85480369C7}')
|
||||||
DocumentsLibrary = UUID('{7B0DB17D-9CD2-4A93-9733-46CC89022E7C}')
|
DocumentsLibrary = UUID('{7B0DB17D-9CD2-4A93-9733-46CC89022E7C}')
|
||||||
Downloads = UUID('{374DE290-123F-4565-9164-39C4925E467B}')
|
Downloads = UUID('{374DE290-123F-4565-9164-39C4925E467B}')
|
||||||
Favorites = UUID('{1777F761-68AD-4D8A-87BD-30B759FA33DD}')
|
Favorites = UUID('{1777F761-68AD-4D8A-87BD-30B759FA33DD}')
|
||||||
Fonts = UUID('{FD228CB7-AE11-4AE3-864C-16F3910AB8FE}')
|
Fonts = UUID('{FD228CB7-AE11-4AE3-864C-16F3910AB8FE}')
|
||||||
GameTasks = UUID('{054FAE61-4DD8-4787-80B6-090220C4B700}')
|
GameTasks = UUID('{054FAE61-4DD8-4787-80B6-090220C4B700}')
|
||||||
History = UUID('{D9DC8A3B-B784-432E-A781-5A1130A75963}')
|
History = UUID('{D9DC8A3B-B784-432E-A781-5A1130A75963}')
|
||||||
ImplicitAppShortcuts = UUID('{BCB5256F-79F6-4CEE-B725-DC34E402FD46}')
|
ImplicitAppShortcuts = UUID('{BCB5256F-79F6-4CEE-B725-DC34E402FD46}')
|
||||||
InternetCache = UUID('{352481E8-33BE-4251-BA85-6007CAEDCF9D}')
|
InternetCache = UUID('{352481E8-33BE-4251-BA85-6007CAEDCF9D}')
|
||||||
Libraries = UUID('{1B3EA5DC-B587-4786-B4EF-BD1DC332AEAE}')
|
Libraries = UUID('{1B3EA5DC-B587-4786-B4EF-BD1DC332AEAE}')
|
||||||
Links = UUID('{bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968}')
|
Links = UUID('{bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968}')
|
||||||
LocalAppData = UUID('{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}')
|
LocalAppData = UUID('{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}')
|
||||||
LocalAppDataLow = UUID('{A520A1A4-1780-4FF6-BD18-167343C5AF16}')
|
LocalAppDataLow = UUID('{A520A1A4-1780-4FF6-BD18-167343C5AF16}')
|
||||||
LocalizedResourcesDir = UUID('{2A00375E-224C-49DE-B8D1-440DF7EF3DDC}')
|
LocalizedResourcesDir = UUID('{2A00375E-224C-49DE-B8D1-440DF7EF3DDC}')
|
||||||
Music = UUID('{4BD8D571-6D19-48D3-BE97-422220080E43}')
|
Music = UUID('{4BD8D571-6D19-48D3-BE97-422220080E43}')
|
||||||
MusicLibrary = UUID('{2112AB0A-C86A-4FFE-A368-0DE96E47012E}')
|
MusicLibrary = UUID('{2112AB0A-C86A-4FFE-A368-0DE96E47012E}')
|
||||||
NetHood = UUID('{C5ABBF53-E17F-4121-8900-86626FC2C973}')
|
NetHood = UUID('{C5ABBF53-E17F-4121-8900-86626FC2C973}')
|
||||||
OriginalImages = UUID('{2C36C0AA-5812-4b87-BFD0-4CD0DFB19B39}')
|
OriginalImages = UUID('{2C36C0AA-5812-4b87-BFD0-4CD0DFB19B39}')
|
||||||
PhotoAlbums = UUID('{69D2CF90-FC33-4FB7-9A0C-EBB0F0FCB43C}')
|
PhotoAlbums = UUID('{69D2CF90-FC33-4FB7-9A0C-EBB0F0FCB43C}')
|
||||||
PicturesLibrary = UUID('{A990AE9F-A03B-4E80-94BC-9912D7504104}')
|
PicturesLibrary = UUID('{A990AE9F-A03B-4E80-94BC-9912D7504104}')
|
||||||
Pictures = UUID('{33E28130-4E1E-4676-835A-98395C3BC3BB}')
|
Pictures = UUID('{33E28130-4E1E-4676-835A-98395C3BC3BB}')
|
||||||
Playlists = UUID('{DE92C1C7-837F-4F69-A3BB-86E631204A23}')
|
Playlists = UUID('{DE92C1C7-837F-4F69-A3BB-86E631204A23}')
|
||||||
PrintHood = UUID('{9274BD8D-CFD1-41C3-B35E-B13F55A758F4}')
|
PrintHood = UUID('{9274BD8D-CFD1-41C3-B35E-B13F55A758F4}')
|
||||||
Profile = UUID('{5E6C858F-0E22-4760-9AFE-EA3317B67173}')
|
Profile = UUID('{5E6C858F-0E22-4760-9AFE-EA3317B67173}')
|
||||||
ProgramData = UUID('{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}')
|
ProgramData = UUID('{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}')
|
||||||
ProgramFiles = UUID('{905e63b6-c1bf-494e-b29c-65b732d3d21a}')
|
ProgramFiles = UUID('{905e63b6-c1bf-494e-b29c-65b732d3d21a}')
|
||||||
ProgramFilesX64 = UUID('{6D809377-6AF0-444b-8957-A3773F02200E}')
|
ProgramFilesX64 = UUID('{6D809377-6AF0-444b-8957-A3773F02200E}')
|
||||||
ProgramFilesX86 = UUID('{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}')
|
ProgramFilesX86 = UUID('{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}')
|
||||||
ProgramFilesCommon = UUID('{F7F1ED05-9F6D-47A2-AAAE-29D317C6F066}')
|
ProgramFilesCommon = UUID('{F7F1ED05-9F6D-47A2-AAAE-29D317C6F066}')
|
||||||
ProgramFilesCommonX64 = UUID('{6365D5A7-0F0D-45E5-87F6-0DA56B6A4F7D}')
|
ProgramFilesCommonX64 = UUID('{6365D5A7-0F0D-45E5-87F6-0DA56B6A4F7D}')
|
||||||
ProgramFilesCommonX86 = UUID('{DE974D24-D9C6-4D3E-BF91-F4455120B917}')
|
ProgramFilesCommonX86 = UUID('{DE974D24-D9C6-4D3E-BF91-F4455120B917}')
|
||||||
Programs = UUID('{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}')
|
Programs = UUID('{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}')
|
||||||
Public = UUID('{DFDF76A2-C82A-4D63-906A-5644AC457385}')
|
Public = UUID('{DFDF76A2-C82A-4D63-906A-5644AC457385}')
|
||||||
PublicDesktop = UUID('{C4AA340D-F20F-4863-AFEF-F87EF2E6BA25}')
|
PublicDesktop = UUID('{C4AA340D-F20F-4863-AFEF-F87EF2E6BA25}')
|
||||||
PublicDocuments = UUID('{ED4824AF-DCE4-45A8-81E2-FC7965083634}')
|
PublicDocuments = UUID('{ED4824AF-DCE4-45A8-81E2-FC7965083634}')
|
||||||
PublicDownloads = UUID('{3D644C9B-1FB8-4f30-9B45-F670235F79C0}')
|
PublicDownloads = UUID('{3D644C9B-1FB8-4f30-9B45-F670235F79C0}')
|
||||||
PublicGameTasks = UUID('{DEBF2536-E1A8-4c59-B6A2-414586476AEA}')
|
PublicGameTasks = UUID('{DEBF2536-E1A8-4c59-B6A2-414586476AEA}')
|
||||||
PublicLibraries = UUID('{48DAF80B-E6CF-4F4E-B800-0E69D84EE384}')
|
PublicLibraries = UUID('{48DAF80B-E6CF-4F4E-B800-0E69D84EE384}')
|
||||||
PublicMusic = UUID('{3214FAB5-9757-4298-BB61-92A9DEAA44FF}')
|
PublicMusic = UUID('{3214FAB5-9757-4298-BB61-92A9DEAA44FF}')
|
||||||
PublicPictures = UUID('{B6EBFB86-6907-413C-9AF7-4FC2ABF07CC5}')
|
PublicPictures = UUID('{B6EBFB86-6907-413C-9AF7-4FC2ABF07CC5}')
|
||||||
PublicRingtones = UUID('{E555AB60-153B-4D17-9F04-A5FE99FC15EC}')
|
PublicRingtones = UUID('{E555AB60-153B-4D17-9F04-A5FE99FC15EC}')
|
||||||
PublicUserTiles = UUID('{0482af6c-08f1-4c34-8c90-e17ec98b1e17}')
|
PublicUserTiles = UUID('{0482af6c-08f1-4c34-8c90-e17ec98b1e17}')
|
||||||
PublicVideos = UUID('{2400183A-6185-49FB-A2D8-4A392A602BA3}')
|
PublicVideos = UUID('{2400183A-6185-49FB-A2D8-4A392A602BA3}')
|
||||||
QuickLaunch = UUID('{52a4f021-7b75-48a9-9f6b-4b87a210bc8f}')
|
QuickLaunch = UUID('{52a4f021-7b75-48a9-9f6b-4b87a210bc8f}')
|
||||||
Recent = UUID('{AE50C081-EBD2-438A-8655-8A092E34987A}')
|
Recent = UUID('{AE50C081-EBD2-438A-8655-8A092E34987A}')
|
||||||
RecordedTVLibrary = UUID('{1A6FDBA2-F42D-4358-A798-B74D745926C5}')
|
RecordedTVLibrary = UUID('{1A6FDBA2-F42D-4358-A798-B74D745926C5}')
|
||||||
ResourceDir = UUID('{8AD10C31-2ADB-4296-A8F7-E4701232C972}')
|
ResourceDir = UUID('{8AD10C31-2ADB-4296-A8F7-E4701232C972}')
|
||||||
Ringtones = UUID('{C870044B-F49E-4126-A9C3-B52A1FF411E8}')
|
Ringtones = UUID('{C870044B-F49E-4126-A9C3-B52A1FF411E8}')
|
||||||
RoamingAppData = UUID('{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}')
|
RoamingAppData = UUID('{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}')
|
||||||
RoamedTileImages = UUID('{AAA8D5A5-F1D6-4259-BAA8-78E7EF60835E}')
|
RoamedTileImages = UUID('{AAA8D5A5-F1D6-4259-BAA8-78E7EF60835E}')
|
||||||
RoamingTiles = UUID('{00BCFC5A-ED94-4e48-96A1-3F6217F21990}')
|
RoamingTiles = UUID('{00BCFC5A-ED94-4e48-96A1-3F6217F21990}')
|
||||||
SampleMusic = UUID('{B250C668-F57D-4EE1-A63C-290EE7D1AA1F}')
|
SampleMusic = UUID('{B250C668-F57D-4EE1-A63C-290EE7D1AA1F}')
|
||||||
SamplePictures = UUID('{C4900540-2379-4C75-844B-64E6FAF8716B}')
|
SamplePictures = UUID('{C4900540-2379-4C75-844B-64E6FAF8716B}')
|
||||||
SamplePlaylists = UUID('{15CA69B3-30EE-49C1-ACE1-6B5EC372AFB5}')
|
SamplePlaylists = UUID('{15CA69B3-30EE-49C1-ACE1-6B5EC372AFB5}')
|
||||||
SampleVideos = UUID('{859EAD94-2E85-48AD-A71A-0969CB56A6CD}')
|
SampleVideos = UUID('{859EAD94-2E85-48AD-A71A-0969CB56A6CD}')
|
||||||
SavedGames = UUID('{4C5C32FF-BB9D-43b0-B5B4-2D72E54EAAA4}')
|
SavedGames = UUID('{4C5C32FF-BB9D-43b0-B5B4-2D72E54EAAA4}')
|
||||||
SavedSearches = UUID('{7d1d3a04-debb-4115-95cf-2f29da2920da}')
|
SavedSearches = UUID('{7d1d3a04-debb-4115-95cf-2f29da2920da}')
|
||||||
Screenshots = UUID('{b7bede81-df94-4682-a7d8-57a52620b86f}')
|
Screenshots = UUID('{b7bede81-df94-4682-a7d8-57a52620b86f}')
|
||||||
SearchHistory = UUID('{0D4C3DB6-03A3-462F-A0E6-08924C41B5D4}')
|
SearchHistory = UUID('{0D4C3DB6-03A3-462F-A0E6-08924C41B5D4}')
|
||||||
SearchTemplates = UUID('{7E636BFE-DFA9-4D5E-B456-D7B39851D8A9}')
|
SearchTemplates = UUID('{7E636BFE-DFA9-4D5E-B456-D7B39851D8A9}')
|
||||||
SendTo = UUID('{8983036C-27C0-404B-8F08-102D10DCFD74}')
|
SendTo = UUID('{8983036C-27C0-404B-8F08-102D10DCFD74}')
|
||||||
SidebarDefaultParts = UUID('{7B396E54-9EC5-4300-BE0A-2482EBAE1A26}')
|
SidebarDefaultParts = UUID('{7B396E54-9EC5-4300-BE0A-2482EBAE1A26}')
|
||||||
SidebarParts = UUID('{A75D362E-50FC-4fb7-AC2C-A8BEAA314493}')
|
SidebarParts = UUID('{A75D362E-50FC-4fb7-AC2C-A8BEAA314493}')
|
||||||
SkyDrive = UUID('{A52BBA46-E9E1-435f-B3D9-28DAA648C0F6}')
|
SkyDrive = UUID('{A52BBA46-E9E1-435f-B3D9-28DAA648C0F6}')
|
||||||
SkyDriveCameraRoll = UUID('{767E6811-49CB-4273-87C2-20F355E1085B}')
|
SkyDriveCameraRoll = UUID('{767E6811-49CB-4273-87C2-20F355E1085B}')
|
||||||
SkyDriveDocuments = UUID('{24D89E24-2F19-4534-9DDE-6A6671FBB8FE}')
|
SkyDriveDocuments = UUID('{24D89E24-2F19-4534-9DDE-6A6671FBB8FE}')
|
||||||
SkyDrivePictures = UUID('{339719B5-8C47-4894-94C2-D8F77ADD44A6}')
|
SkyDrivePictures = UUID('{339719B5-8C47-4894-94C2-D8F77ADD44A6}')
|
||||||
StartMenu = UUID('{625B53C3-AB48-4EC1-BA1F-A1EF4146FC19}')
|
StartMenu = UUID('{625B53C3-AB48-4EC1-BA1F-A1EF4146FC19}')
|
||||||
Startup = UUID('{B97D20BB-F46A-4C97-BA10-5E3608430854}')
|
Startup = UUID('{B97D20BB-F46A-4C97-BA10-5E3608430854}')
|
||||||
System = UUID('{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}')
|
System = UUID('{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}')
|
||||||
SystemX86 = UUID('{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27}')
|
SystemX86 = UUID('{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27}')
|
||||||
Templates = UUID('{A63293E8-664E-48DB-A079-DF759E0509F7}')
|
Templates = UUID('{A63293E8-664E-48DB-A079-DF759E0509F7}')
|
||||||
UserPinned = UUID('{9E3995AB-1F9C-4F13-B827-48B24B6C7174}')
|
UserPinned = UUID('{9E3995AB-1F9C-4F13-B827-48B24B6C7174}')
|
||||||
UserProfiles = UUID('{0762D272-C50A-4BB0-A382-697DCD729B80}')
|
UserProfiles = UUID('{0762D272-C50A-4BB0-A382-697DCD729B80}')
|
||||||
UserProgramFiles = UUID('{5CD7AEE2-2219-4A67-B85D-6C9CE15660CB}')
|
UserProgramFiles = UUID('{5CD7AEE2-2219-4A67-B85D-6C9CE15660CB}')
|
||||||
UserProgramFilesCommon = UUID('{BCBD3057-CA5C-4622-B42D-BC56DB0AE516}')
|
UserProgramFilesCommon = UUID('{BCBD3057-CA5C-4622-B42D-BC56DB0AE516}')
|
||||||
Videos = UUID('{18989B1D-99B5-455B-841C-AB7C74E4DDFC}')
|
Videos = UUID('{18989B1D-99B5-455B-841C-AB7C74E4DDFC}')
|
||||||
VideosLibrary = UUID('{491E922F-5643-4AF4-A7EB-4E7A138D8174}')
|
VideosLibrary = UUID('{491E922F-5643-4AF4-A7EB-4E7A138D8174}')
|
||||||
Windows = UUID('{F38BF404-1D43-42F2-9305-67DE0B28FC23}')
|
Windows = UUID('{F38BF404-1D43-42F2-9305-67DE0B28FC23}')
|
||||||
|
|
||||||
class UserHandle: # [3]
|
class UserHandle: # [3]
|
||||||
current = wintypes.HANDLE(0)
|
current = wintypes.HANDLE(0)
|
||||||
common = wintypes.HANDLE(-1)
|
common = wintypes.HANDLE(-1)
|
||||||
|
|
||||||
_CoTaskMemFree = windll.ole32.CoTaskMemFree # [4]
|
_CoTaskMemFree = windll.ole32.CoTaskMemFree # [4]
|
||||||
_CoTaskMemFree.restype= None
|
_CoTaskMemFree.restype= None
|
||||||
_CoTaskMemFree.argtypes = [ctypes.c_void_p]
|
_CoTaskMemFree.argtypes = [ctypes.c_void_p]
|
||||||
|
|
||||||
_SHGetKnownFolderPath = windll.shell32.SHGetKnownFolderPath # [5] [3]
|
_SHGetKnownFolderPath = windll.shell32.SHGetKnownFolderPath # [5] [3]
|
||||||
_SHGetKnownFolderPath.argtypes = [
|
_SHGetKnownFolderPath.argtypes = [
|
||||||
ctypes.POINTER(GUID), wintypes.DWORD, wintypes.HANDLE, ctypes.POINTER(ctypes.c_wchar_p)
|
ctypes.POINTER(GUID), wintypes.DWORD, wintypes.HANDLE, ctypes.POINTER(ctypes.c_wchar_p)
|
||||||
]
|
]
|
||||||
|
|
||||||
class PathNotFoundException(Exception): pass
|
class PathNotFoundException(Exception): pass
|
||||||
|
|
||||||
def get_path(folderid, user_handle=UserHandle.common):
|
def get_path(folderid, user_handle=UserHandle.common):
|
||||||
fid = GUID(folderid)
|
fid = GUID(folderid)
|
||||||
pPath = ctypes.c_wchar_p()
|
pPath = ctypes.c_wchar_p()
|
||||||
S_OK = 0
|
S_OK = 0
|
||||||
if _SHGetKnownFolderPath(ctypes.byref(fid), 0, user_handle, ctypes.byref(pPath)) != S_OK:
|
if _SHGetKnownFolderPath(ctypes.byref(fid), 0, user_handle, ctypes.byref(pPath)) != S_OK:
|
||||||
raise PathNotFoundException()
|
raise PathNotFoundException()
|
||||||
path = pPath.value
|
path = pPath.value
|
||||||
_CoTaskMemFree(pPath)
|
_CoTaskMemFree(pPath)
|
||||||
return path
|
return path
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) < 2 or sys.argv[1] in ['-?', '/?']:
|
if len(sys.argv) < 2 or sys.argv[1] in ['-?', '/?']:
|
||||||
print('python knownpaths.py FOLDERID {current|common}')
|
print('python knownpaths.py FOLDERID {current|common}')
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
folderid = getattr(FOLDERID, sys.argv[1])
|
folderid = getattr(FOLDERID, sys.argv[1])
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
print('Unknown folder id "%s"' % sys.argv[1], file=sys.stderr)
|
print('Unknown folder id "%s"' % sys.argv[1], file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if len(sys.argv) == 2:
|
if len(sys.argv) == 2:
|
||||||
print(get_path(folderid))
|
print(get_path(folderid))
|
||||||
else:
|
else:
|
||||||
print(get_path(folderid, getattr(UserHandle, sys.argv[2])))
|
print(get_path(folderid, getattr(UserHandle, sys.argv[2])))
|
||||||
except PathNotFoundException:
|
except PathNotFoundException:
|
||||||
print('Folder not found "%s"' % ' '.join(sys.argv[1:]), file=sys.stderr)
|
print('Folder not found "%s"' % ' '.join(sys.argv[1:]), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# [1] http://msdn.microsoft.com/en-us/library/windows/desktop/aa373931.aspx
|
# [1] http://msdn.microsoft.com/en-us/library/windows/desktop/aa373931.aspx
|
||||||
# [2] http://msdn.microsoft.com/en-us/library/windows/desktop/dd378457.aspx
|
# [2] http://msdn.microsoft.com/en-us/library/windows/desktop/dd378457.aspx
|
||||||
# [3] http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188.aspx
|
# [3] http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188.aspx
|
||||||
# [4] http://msdn.microsoft.com/en-us/library/windows/desktop/ms680722.aspx
|
# [4] http://msdn.microsoft.com/en-us/library/windows/desktop/ms680722.aspx
|
||||||
# [5] http://www.themacaque.com/?p=954
|
# [5] http://www.themacaque.com/?p=954
|
||||||
|
|
|
||||||
170
.bin/Scripts/build_kit.ps1
Normal file
170
.bin/Scripts/build_kit.ps1
Normal file
|
|
@ -0,0 +1,170 @@
|
||||||
|
# Wizard Kit: Download kit components
|
||||||
|
|
||||||
|
## Init ##
|
||||||
|
clear
|
||||||
|
$host.UI.RawUI.WindowTitle = "Wizard Kit: Build Tool"
|
||||||
|
$wd = $(Split-Path $MyInvocation.MyCommand.Path)
|
||||||
|
$bin = (Get-Item $wd).Parent.FullName
|
||||||
|
$root = (Get-Item "$bin\..").FullName # Get-Item $bin fails
|
||||||
|
# (I'm assuming that starting with a '.' is the issue)
|
||||||
|
$tmp = "{0}\tmp" -f $bin
|
||||||
|
$errors = 0
|
||||||
|
pushd "$wd"
|
||||||
|
$host.UI.RawUI.BackgroundColor = "black"
|
||||||
|
$host.UI.RawUI.ForegroundColor = "white"
|
||||||
|
$progressPreference = 'silentlyContinue'
|
||||||
|
|
||||||
|
## Functions ##
|
||||||
|
function download-file {
|
||||||
|
param ([String]$path, [String]$name, [String]$url)
|
||||||
|
$outfile = "{0}\{1}" -f $path, $name
|
||||||
|
|
||||||
|
Write-Host ("Downloading: {0}" -f $name)
|
||||||
|
New-Item -Type Directory $path 2>&1 | Out-Null
|
||||||
|
try {
|
||||||
|
invoke-webrequest -uri $url -outfile $outfile
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host (" ERROR: Failed to download file." ) -foregroundcolor "Red"
|
||||||
|
$errors += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function find-dynamic-url {
|
||||||
|
param ([String]$source_page, [String]$regex)
|
||||||
|
$d_url = ""
|
||||||
|
|
||||||
|
# Get source page
|
||||||
|
invoke-webrequest -uri $source_page -outfile "tmp_page"
|
||||||
|
|
||||||
|
# Search for real url
|
||||||
|
$d_url = Get-Content "tmp_page" | Where-Object {$_ -imatch $regex}
|
||||||
|
$d_url = $d_url -ireplace '.*(a |)href="([^"]+)".*', '$2'
|
||||||
|
$d_url = $d_url -ireplace ".*(a |)href='([^']+)'.*", '$2'
|
||||||
|
|
||||||
|
# Remove tmp_page
|
||||||
|
Remove-Item "tmp_page"
|
||||||
|
|
||||||
|
return $d_url
|
||||||
|
}
|
||||||
|
function wk_pause {
|
||||||
|
param([string]$message = "Press Enter to continue... ")
|
||||||
|
Write-Host $message
|
||||||
|
$x = read-host
|
||||||
|
}
|
||||||
|
|
||||||
|
## Download ##
|
||||||
|
$path = $tmp
|
||||||
|
|
||||||
|
# 7-Zip
|
||||||
|
$url = "http://www.7-zip.org/a/7z1701.msi"
|
||||||
|
download-file $path "7z-installer.msi" $url
|
||||||
|
$url = "http://www.7-zip.org/a/7z1701-extra.7z"
|
||||||
|
download-file $path "7z-extra.7z" $url
|
||||||
|
|
||||||
|
# ConEmu
|
||||||
|
$url = "https://github.com/Maximus5/ConEmu/releases/download/v17.11.09/ConEmuPack.171109.7z"
|
||||||
|
download-file $path "ConEmuPack.7z" $url
|
||||||
|
|
||||||
|
# Notepad++
|
||||||
|
$url = "https://notepad-plus-plus.org/repository/7.x/7.5.1/npp.7.5.1.bin.minimalist.7z"
|
||||||
|
download-file $path "npp.7z" $url
|
||||||
|
|
||||||
|
# Python
|
||||||
|
$url = "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-win32.zip"
|
||||||
|
download-file $path "python32.zip" $url
|
||||||
|
$url = "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-amd64.zip"
|
||||||
|
download-file $path "python64.zip" $url
|
||||||
|
|
||||||
|
# Python: psutil
|
||||||
|
$dl_page = "https://pypi.python.org/pypi/psutil"
|
||||||
|
$regex = "href=.*-cp36-cp36m-win32.whl"
|
||||||
|
$url = find-dynamic-url $dl_page $regex
|
||||||
|
download-file $path "psutil32.whl" $url
|
||||||
|
$regex = "href=.*-cp36-cp36m-win_amd64.whl"
|
||||||
|
$url = find-dynamic-url $dl_page $regex
|
||||||
|
download-file $path "psutil64.whl" $url
|
||||||
|
|
||||||
|
# Python: requests & dependancies
|
||||||
|
$regex = "href=.*.py3-none-any.whl"
|
||||||
|
foreach ($mod in @("chardet", "certifi", "idna", "urllib3", "requests")) {
|
||||||
|
$dl_page = "https://pypi.python.org/pypi/{0}" -f $mod
|
||||||
|
$name = "{0}.whl" -f $mod
|
||||||
|
$url = find-dynamic-url $dl_page $regex
|
||||||
|
download-file $path $name $url
|
||||||
|
}
|
||||||
|
|
||||||
|
## Extract ##
|
||||||
|
# 7-Zip
|
||||||
|
Write-Host "Extracting: 7-Zip"
|
||||||
|
try {
|
||||||
|
start "msiexec" -argumentlist @("/a", "$tmp\7z-installer.msi", "TARGETDIR=$tmp\7zi", "/qn") -wait
|
||||||
|
$sz = "$tmp\7zi\Files\7-Zip\7z.exe"
|
||||||
|
start $sz -argumentlist @("x", "$tmp\7z-extra.7z", "-o$bin\7-Zip", "-aoa", "-bso0", "-bse0", "-bsp0", "-x!x64\*.dll", "-x!Far", "-x!*.dll") -nonewwindow -wait
|
||||||
|
Start-Sleep 1
|
||||||
|
Move-Item "$bin\7-Zip\x64\7za.exe" "$bin\7-Zip\7za64.exe"
|
||||||
|
Remove-Item "$bin\7-Zip\x64" -Recurse
|
||||||
|
Remove-Item "$tmp\7z*" -Recurse
|
||||||
|
$sz = "$bin\7-Zip\7za.exe"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host (" ERROR: Failed to extract files." ) -foregroundcolor "Red"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Notepad++
|
||||||
|
Write-Host "Extracting: Notepad++"
|
||||||
|
try {
|
||||||
|
start $sz -argumentlist @("x", "$tmp\npp.7z", "-o$bin\NotepadPlusPlus", "-aoa", "-bso0", "-bse0", "-bsp0") -nonewwindow -wait
|
||||||
|
Remove-Item "$tmp\npp.7z"
|
||||||
|
Move-Item "$bin\NotepadPlusPlus\notepad++.exe" "$bin\NotepadPlusPlus\notepadplusplus.exe"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host (" ERROR: Failed to extract files." ) -foregroundcolor "Red"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ConEmu
|
||||||
|
Write-Host "Extracting: ConEmu"
|
||||||
|
try {
|
||||||
|
start $sz -argumentlist @("x", "$tmp\ConEmuPack.7z", "-o$bin\ConEmu", "-aoa", "-bso0", "-bse0", "-bsp0") -nonewwindow -wait
|
||||||
|
Remove-Item "$tmp\ConEmuPack.7z"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host (" ERROR: Failed to extract files." ) -foregroundcolor "Red"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Python x32
|
||||||
|
Write-Host "Extracting: Python (x32)"
|
||||||
|
try {
|
||||||
|
foreach ($file in @("python32.zip", "certifi.whl", "chardet.whl", "idna.whl", "psutil32.whl", "requests.whl", "urllib3.whl")) {
|
||||||
|
start $sz -argumentlist @("x", "$tmp\$file", "-o$bin\Python\x32", "-aoa", "-bso0", "-bse0", "-bsp0") -nonewwindow -wait
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host (" ERROR: Failed to extract files." ) -foregroundcolor "Red"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Python x64
|
||||||
|
Write-Host "Extracting: Python (x64)"
|
||||||
|
try {
|
||||||
|
foreach ($file in @("python64.zip", "certifi.whl", "chardet.whl", "idna.whl", "psutil64.whl", "requests.whl", "urllib3.whl")) {
|
||||||
|
start $sz -argumentlist @("x", "$tmp\$file", "-o$bin\Python\x64", "-aoa", "-bso0", "-bse0", "-bsp0") -nonewwindow -wait
|
||||||
|
}
|
||||||
|
Remove-Item "$tmp\python*.zip"
|
||||||
|
Remove-Item "$tmp\*.whl"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host (" ERROR: Failed to extract files." ) -foregroundcolor "Red"
|
||||||
|
}
|
||||||
|
|
||||||
|
## Configure ##
|
||||||
|
Write-Host "Configuring kit"
|
||||||
|
wk_pause "Press Enter to open settings..."
|
||||||
|
start "$bin\NotepadPlusPlus\notepadplusplus.exe" -argumentlist @("$bin\Scripts\settings\main.py") -wait
|
||||||
|
Start-Sleep 1
|
||||||
|
|
||||||
|
## Done ##
|
||||||
|
popd
|
||||||
|
if ($errors -gt 0) {
|
||||||
|
wk_pause "Press Enter to exit..."
|
||||||
|
} else {
|
||||||
|
start "$bin\ConEmu\ConEmu.exe" -argumentlist @("-run", "$bin\Python\x32\python.exe", "$bin\Scripts\update_kit.py", "-new_console:n") -verb Runas
|
||||||
|
}
|
||||||
|
|
@ -1,38 +1,42 @@
|
||||||
# Wizard Kit: Copy user data to the system over the network
|
# Wizard Kit: Backup CBS Logs and prep CBS temp data for deletion
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.cleanup import *
|
from functions.cleanup import *
|
||||||
from functions.data import *
|
from functions.data import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: CBS Cleanup'.format(KIT_NAME_FULL))
|
os.system('title {}: CBS Cleanup'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\CBS Cleanup.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\CBS Cleanup.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
# Prep
|
# Prep
|
||||||
stay_awake()
|
stay_awake()
|
||||||
get_ticket_number()
|
os.system('cls')
|
||||||
os.system('cls')
|
folder_path = r'{}\Backups'.format(KIT_NAME_SHORT)
|
||||||
folder_path = r'{}\Backups'.format(KIT_NAME_SHORT)
|
dest = select_destination(folder_path=folder_path,
|
||||||
dest = select_destination(folder_path=folder_path,
|
prompt='Which disk are we using for temp data and backup?')
|
||||||
prompt='Which disk are we using for temp data and backup?')
|
|
||||||
if (not ask('Proceed with CBS cleanup?')):
|
# Show details
|
||||||
abort()
|
print_info('{}: CBS Cleanup Tool\n'.format(KIT_NAME_FULL))
|
||||||
|
show_info('Backup / Temp path:', dest)
|
||||||
# Run Cleanup
|
print_standard('\n')
|
||||||
try_and_print(message='Running cleanup...', function=cleanup_cbs,
|
if (not ask('Proceed with CBS cleanup?')):
|
||||||
cs='Done', dest_folder=dest)
|
abort()
|
||||||
|
|
||||||
# Done
|
# Run Cleanup
|
||||||
print_standard('\nDone.')
|
try_and_print(message='Running cleanup...', function=cleanup_cbs,
|
||||||
pause("Press Enter to exit...")
|
cs='Done', dest_folder=dest)
|
||||||
exit_script()
|
|
||||||
except SystemExit:
|
# Done
|
||||||
pass
|
print_standard('\nDone.')
|
||||||
except:
|
pause("Press Enter to exit...")
|
||||||
major_exception()
|
exit_script()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,54 +1,56 @@
|
||||||
# Wizard Kit: Check or repair the %SYSTEMDRIVE% filesystem via CHKDSK
|
# Wizard Kit: Check or repair the %SYSTEMDRIVE% filesystem via CHKDSK
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.repairs import *
|
from functions.repairs import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: Check Disk Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: Check Disk Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\Check Disk.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\Check Disk.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
stay_awake()
|
stay_awake()
|
||||||
other_results = {
|
os.system('cls')
|
||||||
'Error': {
|
other_results = {
|
||||||
'CalledProcessError': 'Unknown Error',
|
'Error': {
|
||||||
},
|
'CalledProcessError': 'Unknown Error',
|
||||||
'Warning': {
|
},
|
||||||
'GenericRepair': 'Repaired',
|
'Warning': {
|
||||||
'UnsupportedOSError': 'Unsupported OS',
|
'GenericRepair': 'Repaired',
|
||||||
}}
|
'UnsupportedOSError': 'Unsupported OS',
|
||||||
options = [
|
}}
|
||||||
{'Name': 'Run CHKDSK scan (read-only)', 'Repair': False},
|
options = [
|
||||||
{'Name': 'Schedule CHKDSK scan (offline repair)', 'Repair': True}]
|
{'Name': 'Run CHKDSK scan (read-only)', 'Repair': False},
|
||||||
actions = [{'Name': 'Quit', 'Letter': 'Q'}]
|
{'Name': 'Schedule CHKDSK scan (offline repair)', 'Repair': True}]
|
||||||
selection = menu_select(
|
actions = [{'Name': 'Quit', 'Letter': 'Q'}]
|
||||||
'Please select action to perform', options, actions)
|
selection = menu_select(
|
||||||
os.system('cls')
|
'{}: Check Disk Menu\n'.format(KIT_NAME_FULL),
|
||||||
print_info('Check Disk Tool')
|
main_entries=options,
|
||||||
if selection == 'Q':
|
action_entries=actions)
|
||||||
abort()
|
print_info('{}: Check Disk Menu\n'.format(KIT_NAME_FULL))
|
||||||
elif selection.isnumeric():
|
if selection == 'Q':
|
||||||
repair = options[int(selection)-1]['Repair']
|
abort()
|
||||||
if repair:
|
elif selection.isnumeric():
|
||||||
cs = 'Scheduled'
|
repair = options[int(selection)-1]['Repair']
|
||||||
else:
|
if repair:
|
||||||
cs = 'CS'
|
cs = 'Scheduled'
|
||||||
message = 'CHKDSK ({SYSTEMDRIVE})...'.format(**global_vars['Env'])
|
else:
|
||||||
try_and_print(message=message, function=run_chkdsk,
|
cs = 'CS'
|
||||||
cs=cs, other_results=other_results, repair=repair)
|
message = 'CHKDSK ({SYSTEMDRIVE})...'.format(**global_vars['Env'])
|
||||||
else:
|
try_and_print(message=message, function=run_chkdsk,
|
||||||
abort()
|
cs=cs, other_results=other_results, repair=repair)
|
||||||
|
else:
|
||||||
# Done
|
abort()
|
||||||
print_success('Done.')
|
|
||||||
pause("Press Enter to exit...")
|
# Done
|
||||||
exit_script()
|
print_success('Done.')
|
||||||
except SystemExit:
|
pause("Press Enter to exit...")
|
||||||
pass
|
exit_script()
|
||||||
except:
|
except SystemExit:
|
||||||
major_exception()
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,28 @@
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
pushd "%~dp0"
|
pushd "%~dp0"
|
||||||
|
|
||||||
rem Prep
|
rem Prep
|
||||||
mkdir _out\_Drivers
|
mkdir _out\_Drivers
|
||||||
set "out=%cd%\_out"
|
set "out=%cd%\_out"
|
||||||
|
|
||||||
rem _Drivers
|
rem _Drivers
|
||||||
pushd _Drivers
|
pushd _Drivers
|
||||||
for %%f in (*) do (
|
for %%f in (*) do (
|
||||||
set "file=%%f"
|
set "file=%%f"
|
||||||
"%programfiles%\7-Zip\7z.exe" a -t7z -mx=9 -myx=9 -ms=on -mhe -pAbracadabra "%out%\_Drivers\!file:~0,-4!.7z" "%%f"
|
"%programfiles%\7-Zip\7z.exe" a -t7z -mx=9 -myx=9 -ms=on -mhe -pAbracadabra "%out%\_Drivers\!file:~0,-4!.7z" "%%f"
|
||||||
)
|
)
|
||||||
popd
|
popd
|
||||||
|
|
||||||
rem Rest
|
rem Rest
|
||||||
for /d %%d in (*) do (
|
for /d %%d in (*) do (
|
||||||
if not "%%d" == "_out" (
|
if not "%%d" == "_out" (
|
||||||
pushd "%%d"
|
pushd "%%d"
|
||||||
"%programfiles%\7-Zip\7z.exe" a -t7z -mx=9 -myx=9 -ms=on -mhe -pAbracadabra "%out%\%%d.7z" *
|
"%programfiles%\7-Zip\7z.exe" a -t7z -mx=9 -myx=9 -ms=on -mhe -pAbracadabra "%out%\%%d.7z" *
|
||||||
popd
|
popd
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
popd
|
popd
|
||||||
endlocal
|
endlocal
|
||||||
|
|
@ -1,54 +1,57 @@
|
||||||
# Wizard Kit: Check or repair component store health via DISM
|
# Wizard Kit: Check or repair component store health via DISM
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.repairs import *
|
from functions.repairs import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: DISM helper Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: DISM helper Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\DISM helper tool.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\DISM helper tool.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
stay_awake()
|
stay_awake()
|
||||||
other_results = {
|
os.system('cls')
|
||||||
'Error': {
|
other_results = {
|
||||||
'CalledProcessError': 'Unknown Error',
|
'Error': {
|
||||||
},
|
'CalledProcessError': 'Unknown Error',
|
||||||
'Warning': {
|
},
|
||||||
'GenericRepair': 'Repaired',
|
'Warning': {
|
||||||
'UnsupportedOSError': 'Unsupported OS',
|
'GenericRepair': 'Repaired',
|
||||||
}}
|
'UnsupportedOSError': 'Unsupported OS',
|
||||||
options = [
|
}}
|
||||||
{'Name': 'Check Health', 'Repair': False},
|
disabled = bool(global_vars['OS']['Version'] not in ['8', '10'])
|
||||||
{'Name': 'Restore Health', 'Repair': True}]
|
options = [
|
||||||
actions = [{'Name': 'Quit', 'Letter': 'Q'}]
|
{'Name': 'Check Health', 'Repair': False, 'Disabled': disabled},
|
||||||
selection = menu_select(
|
{'Name': 'Restore Health', 'Repair': True, 'Disabled': disabled}]
|
||||||
'Please select action to perform', options, actions)
|
actions = [{'Name': 'Quit', 'Letter': 'Q'}]
|
||||||
os.system('cls')
|
selection = menu_select(
|
||||||
print_info('DISM helper tool')
|
'{}: DISM Menu\n'.format(KIT_NAME_FULL),
|
||||||
if selection == 'Q':
|
main_entries=options,
|
||||||
abort()
|
action_entries=actions)
|
||||||
elif selection.isnumeric():
|
print_info('{}: DISM Menu\n'.format(KIT_NAME_FULL))
|
||||||
repair = options[int(selection)-1]['Repair']
|
if selection == 'Q':
|
||||||
if repair:
|
abort()
|
||||||
message='DISM RestoreHealth...'
|
elif selection.isnumeric():
|
||||||
else:
|
repair = options[int(selection)-1]['Repair']
|
||||||
message='DISM ScanHealth...'
|
if repair:
|
||||||
try_and_print(message=message, function=run_dism,
|
message='DISM RestoreHealth...'
|
||||||
cs='No corruption', ns='Corruption detected',
|
else:
|
||||||
other_results=other_results, repair=repair)
|
message='DISM ScanHealth...'
|
||||||
else:
|
try_and_print(message=message, function=run_dism,
|
||||||
abort()
|
cs='No corruption', ns='Corruption detected',
|
||||||
|
other_results=other_results, repair=repair)
|
||||||
# Done
|
else:
|
||||||
print_success('Done.')
|
abort()
|
||||||
pause("Press Enter to exit...")
|
|
||||||
exit_script()
|
# Done
|
||||||
except SystemExit:
|
print_success('Done.')
|
||||||
pass
|
pause("Press Enter to exit...")
|
||||||
except:
|
exit_script()
|
||||||
major_exception()
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,71 +1,66 @@
|
||||||
# Wizard Kit: Functions - Activation
|
# Wizard Kit: Functions - Activation
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from borrowed import acpi
|
from borrowed import acpi
|
||||||
from os import environ
|
from functions.common import *
|
||||||
|
from os import environ
|
||||||
# Variables
|
|
||||||
SLMGR = r'{}\System32\slmgr.vbs'.format(environ.get('SYSTEMROOT'))
|
# Variables
|
||||||
|
SLMGR = r'{}\System32\slmgr.vbs'.format(environ.get('SYSTEMROOT'))
|
||||||
# Error Classes
|
|
||||||
class BIOSKeyNotFoundError(Exception):
|
def activate_with_bios():
|
||||||
pass
|
"""Attempt to activate Windows with a key stored in the BIOS."""
|
||||||
|
# Code borrowed from https://github.com/aeruder/get_win8key
|
||||||
def activate_windows_with_bios():
|
#####################################################
|
||||||
"""Attempt to activate Windows with a key stored in the BIOS."""
|
#script to query windows 8.x OEM key from PC firmware
|
||||||
# Code borrowed from https://github.com/aeruder/get_win8key
|
#ACPI -> table MSDM -> raw content -> byte offset 56 to end
|
||||||
#####################################################
|
#ck, 03-Jan-2014 (christian@korneck.de)
|
||||||
#script to query windows 8.x OEM key from PC firmware
|
#####################################################
|
||||||
#ACPI -> table MSDM -> raw content -> byte offset 56 to end
|
bios_key = None
|
||||||
#ck, 03-Jan-2014 (christian@korneck.de)
|
table = b"MSDM"
|
||||||
#####################################################
|
if acpi.FindAcpiTable(table) is True:
|
||||||
bios_key = None
|
rawtable = acpi.GetAcpiTable(table)
|
||||||
table = b"MSDM"
|
#http://msdn.microsoft.com/library/windows/hardware/hh673514
|
||||||
if acpi.FindAcpiTable(table) is True:
|
#byte offset 36 from beginning \
|
||||||
rawtable = acpi.GetAcpiTable(table)
|
# = Microsoft 'software licensing data structure' \
|
||||||
#http://msdn.microsoft.com/library/windows/hardware/hh673514
|
# / 36 + 20 bytes offset from beginning = Win Key
|
||||||
#byte offset 36 from beginning \
|
bios_key = rawtable[56:len(rawtable)].decode("utf-8")
|
||||||
# = Microsoft 'software licensing data structure' \
|
if bios_key is None:
|
||||||
# / 36 + 20 bytes offset from beginning = Win Key
|
raise BIOSKeyNotFoundError
|
||||||
bios_key = rawtable[56:len(rawtable)].decode("utf-8")
|
|
||||||
else:
|
# Install Key
|
||||||
raise Exception('ACPI table {} not found.'.format(str(table)))
|
cmd = ['cscript', '//nologo', SLMGR, '/ipk', bios_key]
|
||||||
if bios_key is None:
|
subprocess.run(cmd, check=False)
|
||||||
raise BIOSKeyNotFoundError
|
sleep(5)
|
||||||
|
|
||||||
# Install Key
|
# Attempt activation
|
||||||
cmd = ['cscript', '//nologo', SLMGR, '/ipk', bios_key]
|
cmd = ['cscript', '//nologo', SLMGR, '/ato']
|
||||||
subprocess.run(cmd, check=False)
|
subprocess.run(cmd, check=False)
|
||||||
sleep(5)
|
sleep(5)
|
||||||
|
|
||||||
# Attempt activation
|
# Check status
|
||||||
cmd = ['cscript', '//nologo', SLMGR, '/ato']
|
if not windows_is_activated():
|
||||||
subprocess.run(cmd, check=False)
|
raise Exception('Activation Failed')
|
||||||
sleep(5)
|
|
||||||
|
def get_activation_string():
|
||||||
# Check status
|
"""Get activation status, returns str."""
|
||||||
if not windows_is_activated():
|
act_str = subprocess.run(
|
||||||
raise Exception('Activation Failed')
|
['cscript', '//nologo', SLMGR, '/xpr'], check=False,
|
||||||
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
def get_activation_string():
|
act_str = act_str.stdout.decode()
|
||||||
"""Get activation status, returns str."""
|
act_str = act_str.splitlines()
|
||||||
act_str = subprocess.run(
|
act_str = act_str[1].strip()
|
||||||
['cscript', '//nologo', SLMGR, '/xpr'], check=False,
|
return act_str
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
||||||
act_str = act_str.stdout.decode()
|
def windows_is_activated():
|
||||||
act_str = act_str.splitlines()
|
"""Check if Windows is activated via slmgr.vbs and return bool."""
|
||||||
act_str = act_str[1].strip()
|
activation_string = subprocess.run(
|
||||||
return act_str
|
['cscript', '//nologo', SLMGR, '/xpr'], check=False,
|
||||||
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
def windows_is_activated():
|
activation_string = activation_string.stdout.decode()
|
||||||
"""Check if Windows is activated via slmgr.vbs and return bool."""
|
|
||||||
activation_string = subprocess.run(
|
return bool(activation_string and 'permanent' in activation_string)
|
||||||
['cscript', '//nologo', SLMGR, '/xpr'], check=False,
|
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
if __name__ == '__main__':
|
||||||
activation_string = activation_string.stdout.decode()
|
print("This file is not meant to be called directly.")
|
||||||
|
|
||||||
return bool(activation_string and 'permanent' in activation_string)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print("This file is not meant to be called directly.")
|
|
||||||
|
|
|
||||||
|
|
@ -1,447 +1,447 @@
|
||||||
# Wizard Kit: Functions - Browsers
|
# Wizard Kit: Functions - Browsers
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
|
|
||||||
# Define other_results for later try_and_print
|
# Define other_results for later try_and_print
|
||||||
browser_data = {}
|
browser_data = {}
|
||||||
other_results = {
|
other_results = {
|
||||||
'Error': {
|
'Error': {
|
||||||
'MultipleInstallationsError': 'Multiple installations detected',
|
'MultipleInstallationsError': 'Multiple installations detected',
|
||||||
},
|
},
|
||||||
'Warning': {
|
'Warning': {
|
||||||
'NotInstalledError': 'Not installed',
|
'NotInstalledError': 'Not installed',
|
||||||
'NoProfilesError': 'No profiles found',
|
'NoProfilesError': 'No profiles found',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Regex
|
# Regex
|
||||||
REGEX_BACKUP = re.compile(
|
REGEX_BACKUP = re.compile(
|
||||||
r'\.\w+bak.*',
|
r'\.\w+bak.*',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
REGEX_CHROMIUM_PROFILE = re.compile(
|
REGEX_CHROMIUM_PROFILE = re.compile(
|
||||||
r'^(Default|Profile)',
|
r'^(Default|Profile)',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
REGEX_CHROMIUM_ITEMS = re.compile(
|
REGEX_CHROMIUM_ITEMS = re.compile(
|
||||||
r'^(Bookmarks|Cookies|Favicons|Google Profile'
|
r'^(Bookmarks|Cookies|Favicons|Google Profile'
|
||||||
r'|History|Login Data|Top Sites|TransportSecurity'
|
r'|History|Login Data|Top Sites|TransportSecurity'
|
||||||
r'|Visited Links|Web Data)',
|
r'|Visited Links|Web Data)',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
REGEX_MOZILLA = re.compile(
|
REGEX_MOZILLA = re.compile(
|
||||||
r'^(bookmarkbackups|(cookies|formhistory|places).sqlite'
|
r'^(bookmarkbackups|(cookies|formhistory|places).sqlite'
|
||||||
r'|key3.db|logins.json|persdict.dat)$',
|
r'|key3.db|logins.json|persdict.dat)$',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
DEFAULT_HOMEPAGE = 'https://www.google.com/'
|
DEFAULT_HOMEPAGE = 'https://www.google.com/'
|
||||||
IE_GALLERY = 'https://www.microsoft.com/en-us/iegallery'
|
IE_GALLERY = 'https://www.microsoft.com/en-us/iegallery'
|
||||||
MOZILLA_PREFS = {
|
MOZILLA_PREFS = {
|
||||||
'browser.search.defaultenginename': '"Google"',
|
'browser.search.defaultenginename': '"Google"',
|
||||||
'browser.search.defaultenginename.US': '"Google"',
|
'browser.search.defaultenginename.US': '"Google"',
|
||||||
'browser.search.geoSpecificDefaults': 'false',
|
'browser.search.geoSpecificDefaults': 'false',
|
||||||
'browser.startup.homepage': '"{}"'.format(DEFAULT_HOMEPAGE),
|
'browser.startup.homepage': '"{}"'.format(DEFAULT_HOMEPAGE),
|
||||||
'extensions.ui.lastCategory': '"addons://list/extension"',
|
'extensions.ui.lastCategory': '"addons://list/extension"',
|
||||||
}
|
}
|
||||||
UBO_CHROME = 'https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=en'
|
UBO_CHROME = 'https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=en'
|
||||||
UBO_CHROME_REG = r'Software\Wow6432Node\Google\Chrome\Extensions\cjpalhdlnbpafiamejdnhcphjbkeiagm'
|
UBO_CHROME_REG = r'Software\Wow6432Node\Google\Chrome\Extensions\cjpalhdlnbpafiamejdnhcphjbkeiagm'
|
||||||
UBO_EXTRA_CHROME = 'https://chrome.google.com/webstore/detail/ublock-origin-extra/pgdnlhfefecpicbbihgmbmffkjpaplco?hl=en'
|
UBO_EXTRA_CHROME = 'https://chrome.google.com/webstore/detail/ublock-origin-extra/pgdnlhfefecpicbbihgmbmffkjpaplco?hl=en'
|
||||||
UBO_EXTRA_CHROME_REG = r'Software\Wow6432Node\Google\Chrome\Extensions\pgdnlhfefecpicbbihgmbmffkjpaplco'
|
UBO_EXTRA_CHROME_REG = r'Software\Wow6432Node\Google\Chrome\Extensions\pgdnlhfefecpicbbihgmbmffkjpaplco'
|
||||||
UBO_MOZILLA = 'https://addons.mozilla.org/en-us/firefox/addon/ublock-origin/'
|
UBO_MOZILLA = 'https://addons.mozilla.org/en-us/firefox/addon/ublock-origin/'
|
||||||
UBO_OPERA = 'https://addons.opera.com/en/extensions/details/ublock/?display=en'
|
UBO_OPERA = 'https://addons.opera.com/en/extensions/details/ublock/?display=en'
|
||||||
SUPPORTED_BROWSERS = {
|
SUPPORTED_BROWSERS = {
|
||||||
'Internet Explorer': {
|
'Internet Explorer': {
|
||||||
'base': 'ie',
|
'base': 'ie',
|
||||||
'exe_name': 'iexplore.exe',
|
'exe_name': 'iexplore.exe',
|
||||||
'rel_install_path': 'Internet Explorer',
|
'rel_install_path': 'Internet Explorer',
|
||||||
'user_data_path': r'{USERPROFILE}\Favorites',
|
'user_data_path': r'{USERPROFILE}\Favorites',
|
||||||
},
|
},
|
||||||
'Google Chrome': {
|
'Google Chrome': {
|
||||||
'base': 'chromium',
|
'base': 'chromium',
|
||||||
'exe_name': 'chrome.exe',
|
'exe_name': 'chrome.exe',
|
||||||
'rel_install_path': r'Google\Chrome\Application',
|
'rel_install_path': r'Google\Chrome\Application',
|
||||||
'user_data_path': r'{LOCALAPPDATA}\Google\Chrome\User Data',
|
'user_data_path': r'{LOCALAPPDATA}\Google\Chrome\User Data',
|
||||||
},
|
},
|
||||||
'Google Chrome Canary': {
|
'Google Chrome Canary': {
|
||||||
'base': 'chromium',
|
'base': 'chromium',
|
||||||
'exe_name': 'chrome.exe',
|
'exe_name': 'chrome.exe',
|
||||||
'rel_install_path': r'Google\Chrome SxS\Application',
|
'rel_install_path': r'Google\Chrome SxS\Application',
|
||||||
'user_data_path': r'{LOCALAPPDATA}\Google\Chrome SxS\User Data',
|
'user_data_path': r'{LOCALAPPDATA}\Google\Chrome SxS\User Data',
|
||||||
},
|
},
|
||||||
'Mozilla Firefox': {
|
'Mozilla Firefox': {
|
||||||
'base': 'mozilla',
|
'base': 'mozilla',
|
||||||
'exe_name': 'firefox.exe',
|
'exe_name': 'firefox.exe',
|
||||||
'rel_install_path': 'Mozilla Firefox',
|
'rel_install_path': 'Mozilla Firefox',
|
||||||
'user_data_path': r'{APPDATA}\Mozilla\Firefox\Profiles',
|
'user_data_path': r'{APPDATA}\Mozilla\Firefox\Profiles',
|
||||||
},
|
},
|
||||||
'Mozilla Firefox Dev': {
|
'Mozilla Firefox Dev': {
|
||||||
'base': 'mozilla',
|
'base': 'mozilla',
|
||||||
'exe_name': 'firefox.exe',
|
'exe_name': 'firefox.exe',
|
||||||
'rel_install_path': 'Firefox Developer Edition',
|
'rel_install_path': 'Firefox Developer Edition',
|
||||||
'user_data_path': r'{APPDATA}\Mozilla\Firefox\Profiles',
|
'user_data_path': r'{APPDATA}\Mozilla\Firefox\Profiles',
|
||||||
},
|
},
|
||||||
'Opera': {
|
'Opera': {
|
||||||
'base': 'chromium',
|
'base': 'chromium',
|
||||||
'exe_name': 'launcher.exe',
|
'exe_name': 'launcher.exe',
|
||||||
'rel_install_path': 'Opera',
|
'rel_install_path': 'Opera',
|
||||||
'user_data_path': r'{APPDATA}\Opera Software\Opera Stable',
|
'user_data_path': r'{APPDATA}\Opera Software\Opera Stable',
|
||||||
},
|
},
|
||||||
'Opera Beta': {
|
'Opera Beta': {
|
||||||
'base': 'chromium',
|
'base': 'chromium',
|
||||||
'exe_name': 'launcher.exe',
|
'exe_name': 'launcher.exe',
|
||||||
'rel_install_path': 'Opera beta',
|
'rel_install_path': 'Opera beta',
|
||||||
'user_data_path': r'{APPDATA}\Opera Software\Opera Next',
|
'user_data_path': r'{APPDATA}\Opera Software\Opera Next',
|
||||||
},
|
},
|
||||||
'Opera Dev': {
|
'Opera Dev': {
|
||||||
'base': 'chromium',
|
'base': 'chromium',
|
||||||
'exe_name': 'launcher.exe',
|
'exe_name': 'launcher.exe',
|
||||||
'rel_install_path': 'Opera developer',
|
'rel_install_path': 'Opera developer',
|
||||||
'user_data_path': r'{APPDATA}\Opera Software\Opera Developer',
|
'user_data_path': r'{APPDATA}\Opera Software\Opera Developer',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
def archive_browser(name):
|
def archive_browser(name):
|
||||||
"""Create backup of Browser saved in the BackupDir."""
|
"""Create backup of Browser saved in the BackupDir."""
|
||||||
source = '{}*'.format(browser_data[name]['user_data_path'])
|
source = '{}*'.format(browser_data[name]['user_data_path'])
|
||||||
dest = r'{BackupDir}\Browsers ({USERNAME})'.format(
|
dest = r'{BackupDir}\Browsers ({USERNAME})'.format(
|
||||||
**global_vars, **global_vars['Env'])
|
**global_vars, **global_vars['Env'])
|
||||||
archive = r'{}\{}.7z'.format(dest, name)
|
archive = r'{}\{}.7z'.format(dest, name)
|
||||||
os.makedirs(dest, exist_ok=True)
|
os.makedirs(dest, exist_ok=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['SevenZip'],
|
global_vars['Tools']['SevenZip'],
|
||||||
'a', '-aoa', '-bso0', '-bse0', '-mx=1',
|
'a', '-aoa', '-bso0', '-bse0', '-mx=1',
|
||||||
archive, source]
|
archive, source]
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def backup_browsers():
|
def backup_browsers():
|
||||||
"""Create backup of all detected browsers."""
|
"""Create backup of all detected browsers."""
|
||||||
for name in sorted(browser_data):
|
for name in sorted(browser_data):
|
||||||
try_and_print(message='{}...'.format(name),
|
try_and_print(message='{}...'.format(name),
|
||||||
function=archive_browser, name=name)
|
function=archive_browser, name=name)
|
||||||
|
|
||||||
def clean_chromium_profile(profile):
|
def clean_chromium_profile(profile):
|
||||||
"""Renames profile, creates a new folder, and copies the user data to it."""
|
"""Renames profile, creates a new folder, and copies the user data to it."""
|
||||||
if profile is None:
|
if profile is None:
|
||||||
raise Exception
|
raise Exception
|
||||||
backup_path = '{path}_{Date}.bak'.format(
|
backup_path = '{path}_{Date}.bak'.format(
|
||||||
path=profile['path'], **global_vars)
|
path=profile['path'], **global_vars)
|
||||||
backup_path = non_clobber_rename(backup_path)
|
backup_path = non_clobber_rename(backup_path)
|
||||||
shutil.move(profile['path'], backup_path)
|
shutil.move(profile['path'], backup_path)
|
||||||
os.makedirs(profile['path'], exist_ok=True)
|
os.makedirs(profile['path'], exist_ok=True)
|
||||||
|
|
||||||
# Restore essential files from backup_path
|
# Restore essential files from backup_path
|
||||||
for entry in os.scandir(backup_path):
|
for entry in os.scandir(backup_path):
|
||||||
if REGEX_CHROMIUM_ITEMS.search(entry.name):
|
if REGEX_CHROMIUM_ITEMS.search(entry.name):
|
||||||
shutil.copy(entry.path, r'{}\{}'.format(
|
shutil.copy(entry.path, r'{}\{}'.format(
|
||||||
profile['path'], entry.name))
|
profile['path'], entry.name))
|
||||||
|
|
||||||
def clean_internet_explorer(**kwargs):
|
def clean_internet_explorer(**kwargs):
|
||||||
"""Uses the built-in function to reset IE and sets the homepage.
|
"""Uses the built-in function to reset IE and sets the homepage.
|
||||||
|
|
||||||
NOTE: kwargs set but unused as a workaround."""
|
NOTE: kwargs set but unused as a workaround."""
|
||||||
kill_process('iexplore.exe')
|
kill_process('iexplore.exe')
|
||||||
run_program(['rundll32.exe', 'inetcpl.cpl,ResetIEtoDefaults'], check=False)
|
run_program(['rundll32.exe', 'inetcpl.cpl,ResetIEtoDefaults'], check=False)
|
||||||
key = r'Software\Microsoft\Internet Explorer\Main'
|
key = r'Software\Microsoft\Internet Explorer\Main'
|
||||||
|
|
||||||
# Set homepage
|
# Set homepage
|
||||||
with winreg.OpenKey(HKCU, key, access=winreg.KEY_WRITE) as _key:
|
with winreg.OpenKey(HKCU, key, access=winreg.KEY_WRITE) as _key:
|
||||||
winreg.SetValueEx(_key, 'Start Page', 0,
|
winreg.SetValueEx(_key, 'Start Page', 0,
|
||||||
winreg.REG_SZ, DEFAULT_HOMEPAGE)
|
winreg.REG_SZ, DEFAULT_HOMEPAGE)
|
||||||
try:
|
try:
|
||||||
winreg.DeleteValue(_key, 'Secondary Start Pages')
|
winreg.DeleteValue(_key, 'Secondary Start Pages')
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def clean_mozilla_profile(profile):
|
def clean_mozilla_profile(profile):
|
||||||
"""Renames profile, creates a new folder, and copies the user data to it."""
|
"""Renames profile, creates a new folder, and copies the user data to it."""
|
||||||
if profile is None:
|
if profile is None:
|
||||||
raise Exception
|
raise Exception
|
||||||
backup_path = '{path}_{Date}.bak'.format(
|
backup_path = '{path}_{Date}.bak'.format(
|
||||||
path=profile['path'], **global_vars)
|
path=profile['path'], **global_vars)
|
||||||
backup_path = non_clobber_rename(backup_path)
|
backup_path = non_clobber_rename(backup_path)
|
||||||
shutil.move(profile['path'], backup_path)
|
shutil.move(profile['path'], backup_path)
|
||||||
homepages = []
|
homepages = []
|
||||||
os.makedirs(profile['path'], exist_ok=True)
|
os.makedirs(profile['path'], exist_ok=True)
|
||||||
|
|
||||||
# Restore essential files from backup_path
|
# Restore essential files from backup_path
|
||||||
for entry in os.scandir(backup_path):
|
for entry in os.scandir(backup_path):
|
||||||
if REGEX_MOZILLA.search(entry.name):
|
if REGEX_MOZILLA.search(entry.name):
|
||||||
if entry.is_dir():
|
if entry.is_dir():
|
||||||
shutil.copytree(entry.path, r'{}\{}'.format(
|
shutil.copytree(entry.path, r'{}\{}'.format(
|
||||||
profile['path'], entry.name))
|
profile['path'], entry.name))
|
||||||
else:
|
else:
|
||||||
shutil.copy(entry.path, r'{}\{}'.format(
|
shutil.copy(entry.path, r'{}\{}'.format(
|
||||||
profile['path'], entry.name))
|
profile['path'], entry.name))
|
||||||
|
|
||||||
# Set profile defaults
|
# Set profile defaults
|
||||||
with open(r'{path}\prefs.js'.format(**profile), 'a', encoding='ascii') as f:
|
with open(r'{path}\prefs.js'.format(**profile), 'a', encoding='ascii') as f:
|
||||||
for k, v in MOZILLA_PREFS.items():
|
for k, v in MOZILLA_PREFS.items():
|
||||||
f.write('user_pref("{}", {});\n'.format(k, v))
|
f.write('user_pref("{}", {});\n'.format(k, v))
|
||||||
|
|
||||||
def get_browser_details(name):
|
def get_browser_details(name):
|
||||||
"""Get installation status and profile details for all supported browsers."""
|
"""Get installation status and profile details for all supported browsers."""
|
||||||
browser = SUPPORTED_BROWSERS[name].copy()
|
browser = SUPPORTED_BROWSERS[name].copy()
|
||||||
|
|
||||||
# Update user_data_path
|
# Update user_data_path
|
||||||
browser['user_data_path'] = browser['user_data_path'].format(
|
browser['user_data_path'] = browser['user_data_path'].format(
|
||||||
**global_vars['Env'])
|
**global_vars['Env'])
|
||||||
|
|
||||||
# Find executable (if multiple files are found, the last one is used)
|
# Find executable (if multiple files are found, the last one is used)
|
||||||
exe_path = None
|
exe_path = None
|
||||||
num_installs = 0
|
num_installs = 0
|
||||||
for install_path in ['LOCALAPPDATA', 'PROGRAMFILES(X86)', 'PROGRAMFILES']:
|
for install_path in ['LOCALAPPDATA', 'PROGRAMFILES(X86)', 'PROGRAMFILES']:
|
||||||
test_path = r'{install_path}\{rel_install_path}\{exe_name}'.format(
|
test_path = r'{install_path}\{rel_install_path}\{exe_name}'.format(
|
||||||
install_path = global_vars['Env'].get(install_path, ''),
|
install_path = global_vars['Env'].get(install_path, ''),
|
||||||
**browser)
|
**browser)
|
||||||
if os.path.exists(test_path):
|
if os.path.exists(test_path):
|
||||||
num_installs += 1
|
num_installs += 1
|
||||||
exe_path = test_path
|
exe_path = test_path
|
||||||
|
|
||||||
# Find profile(s)
|
# Find profile(s)
|
||||||
profiles = []
|
profiles = []
|
||||||
if browser['base'] == 'ie':
|
if browser['base'] == 'ie':
|
||||||
profiles.append({'name': 'Default', 'path': None})
|
profiles.append({'name': 'Default', 'path': None})
|
||||||
elif 'Google Chrome' in name:
|
elif 'Google Chrome' in name:
|
||||||
profiles.extend(
|
profiles.extend(
|
||||||
get_chromium_profiles(
|
get_chromium_profiles(
|
||||||
search_path=browser['user_data_path']))
|
search_path=browser['user_data_path']))
|
||||||
elif browser['base'] == 'mozilla':
|
elif browser['base'] == 'mozilla':
|
||||||
dev = 'Dev' in name
|
dev = 'Dev' in name
|
||||||
profiles.extend(
|
profiles.extend(
|
||||||
get_mozilla_profiles(
|
get_mozilla_profiles(
|
||||||
search_path=browser['user_data_path'], dev=dev))
|
search_path=browser['user_data_path'], dev=dev))
|
||||||
if exe_path and not dev and len(profiles) == 0:
|
if exe_path and not dev and len(profiles) == 0:
|
||||||
# e.g. If Firefox is installed but no profiles were found.
|
# e.g. If Firefox is installed but no profiles were found.
|
||||||
## Rename profiles.ini and create a new default profile
|
## Rename profiles.ini and create a new default profile
|
||||||
profiles_ini_path = browser['user_data_path'].replace(
|
profiles_ini_path = browser['user_data_path'].replace(
|
||||||
'Profiles', 'profiles.ini')
|
'Profiles', 'profiles.ini')
|
||||||
if os.path.exists(profiles_ini_path):
|
if os.path.exists(profiles_ini_path):
|
||||||
backup_path = '{path}_{Date}.bak'.format(
|
backup_path = '{path}_{Date}.bak'.format(
|
||||||
path=profiles_ini_path, **global_vars)
|
path=profiles_ini_path, **global_vars)
|
||||||
backup_path = non_clobber_rename(backup_path)
|
backup_path = non_clobber_rename(backup_path)
|
||||||
shutil.move(profiles_ini_path, backup_path)
|
shutil.move(profiles_ini_path, backup_path)
|
||||||
run_program([exe_path, '-createprofile', 'default'], check=False)
|
run_program([exe_path, '-createprofile', 'default'], check=False)
|
||||||
profiles.extend(
|
profiles.extend(
|
||||||
get_mozilla_profiles(
|
get_mozilla_profiles(
|
||||||
search_path=browser['user_data_path'], dev=dev))
|
search_path=browser['user_data_path'], dev=dev))
|
||||||
|
|
||||||
elif 'Opera' in name:
|
elif 'Opera' in name:
|
||||||
if os.path.exists(browser['user_data_path']):
|
if os.path.exists(browser['user_data_path']):
|
||||||
profiles.append(
|
profiles.append(
|
||||||
{'name': 'Default', 'path': browser['user_data_path']})
|
{'name': 'Default', 'path': browser['user_data_path']})
|
||||||
|
|
||||||
# Skip browser if there's no profiles
|
# Skip browser if there's no profiles
|
||||||
if len(profiles) == 0:
|
if len(profiles) == 0:
|
||||||
raise NoProfilesError
|
raise NoProfilesError
|
||||||
|
|
||||||
# Get homepages
|
# Get homepages
|
||||||
if browser['base'] == 'ie':
|
if browser['base'] == 'ie':
|
||||||
# IE is set to only have one profile above
|
# IE is set to only have one profile above
|
||||||
profiles[0]['homepages'] = get_ie_homepages()
|
profiles[0]['homepages'] = get_ie_homepages()
|
||||||
elif browser['base'] == 'mozilla':
|
elif browser['base'] == 'mozilla':
|
||||||
for profile in profiles:
|
for profile in profiles:
|
||||||
prefs_path = r'{path}\prefs.js'.format(**profile)
|
prefs_path = r'{path}\prefs.js'.format(**profile)
|
||||||
profile['homepages'] = get_mozilla_homepages(prefs_path=prefs_path)
|
profile['homepages'] = get_mozilla_homepages(prefs_path=prefs_path)
|
||||||
|
|
||||||
# Add to browser_data
|
# Add to browser_data
|
||||||
browser_data[name] = browser
|
browser_data[name] = browser
|
||||||
browser_data[name].update({
|
browser_data[name].update({
|
||||||
'exe_path': exe_path,
|
'exe_path': exe_path,
|
||||||
'profiles': profiles,
|
'profiles': profiles,
|
||||||
})
|
})
|
||||||
|
|
||||||
# Raise installation warnings (if any)
|
# Raise installation warnings (if any)
|
||||||
if num_installs == 0:
|
if num_installs == 0:
|
||||||
raise NotInstalledError
|
raise NotInstalledError
|
||||||
elif num_installs > 1 and browser['base'] != 'ie':
|
elif num_installs > 1 and browser['base'] != 'ie':
|
||||||
raise MultipleInstallationsError
|
raise MultipleInstallationsError
|
||||||
|
|
||||||
def get_chromium_profiles(search_path):
|
def get_chromium_profiles(search_path):
|
||||||
"""Find any chromium-style profiles and return as a list of dicts."""
|
"""Find any chromium-style profiles and return as a list of dicts."""
|
||||||
profiles = []
|
profiles = []
|
||||||
try:
|
try:
|
||||||
for entry in os.scandir(search_path):
|
for entry in os.scandir(search_path):
|
||||||
if entry.is_dir() and REGEX_CHROMIUM_PROFILE.search(entry.name):
|
if entry.is_dir() and REGEX_CHROMIUM_PROFILE.search(entry.name):
|
||||||
profiles.append(entry)
|
profiles.append(entry)
|
||||||
REGEX_PROFILE_BACKUP = r'\.\w+bak.*'
|
REGEX_PROFILE_BACKUP = r'\.\w+bak.*'
|
||||||
profiles = [p for p in profiles if not REGEX_BACKUP.search(p.name)]
|
profiles = [p for p in profiles if not REGEX_BACKUP.search(p.name)]
|
||||||
# Convert os.DirEntries to dicts
|
# Convert os.DirEntries to dicts
|
||||||
profiles = [{'name': p.name, 'path': p.path} for p in profiles]
|
profiles = [{'name': p.name, 'path': p.path} for p in profiles]
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return profiles
|
return profiles
|
||||||
|
|
||||||
def get_ie_homepages():
|
def get_ie_homepages():
|
||||||
"""Read homepages from the registry and return as a list."""
|
"""Read homepages from the registry and return as a list."""
|
||||||
homepages = []
|
homepages = []
|
||||||
main_page = ''
|
main_page = ''
|
||||||
extra_pages = []
|
extra_pages = []
|
||||||
key = r'Software\Microsoft\Internet Explorer\Main'
|
key = r'Software\Microsoft\Internet Explorer\Main'
|
||||||
with winreg.OpenKey(HKCU, key) as _key:
|
with winreg.OpenKey(HKCU, key) as _key:
|
||||||
try:
|
try:
|
||||||
main_page = winreg.QueryValueEx(_key, 'Start Page')[0]
|
main_page = winreg.QueryValueEx(_key, 'Start Page')[0]
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
extra_pages = winreg.QueryValueEx(_key, 'Secondary Start Pages')[0]
|
extra_pages = winreg.QueryValueEx(_key, 'Secondary Start Pages')[0]
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
if main_page != '':
|
if main_page != '':
|
||||||
homepages.append(main_page)
|
homepages.append(main_page)
|
||||||
if len(extra_pages) > 0:
|
if len(extra_pages) > 0:
|
||||||
homepages.extend(extra_pages)
|
homepages.extend(extra_pages)
|
||||||
return homepages
|
return homepages
|
||||||
|
|
||||||
def get_mozilla_homepages(prefs_path):
|
def get_mozilla_homepages(prefs_path):
|
||||||
"""Read homepages from prefs.js and return as a list."""
|
"""Read homepages from prefs.js and return as a list."""
|
||||||
homepages = []
|
homepages = []
|
||||||
try:
|
try:
|
||||||
with open(prefs_path, 'r') as f:
|
with open(prefs_path, 'r') as f:
|
||||||
search = re.search(
|
search = re.search(
|
||||||
r'browser\.startup\.homepage", "([^"]*)"',
|
r'browser\.startup\.homepage", "([^"]*)"',
|
||||||
f.read(), re.IGNORECASE)
|
f.read(), re.IGNORECASE)
|
||||||
if search:
|
if search:
|
||||||
homepages = search.group(1).split('|')
|
homepages = search.group(1).split('|')
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return homepages
|
return homepages
|
||||||
|
|
||||||
def get_mozilla_profiles(search_path, dev=False):
|
def get_mozilla_profiles(search_path, dev=False):
|
||||||
"""Find any mozilla-style profiles and return as a list of dicts."""
|
"""Find any mozilla-style profiles and return as a list of dicts."""
|
||||||
profiles = []
|
profiles = []
|
||||||
try:
|
try:
|
||||||
for entry in os.scandir(search_path):
|
for entry in os.scandir(search_path):
|
||||||
if entry.is_dir():
|
if entry.is_dir():
|
||||||
if 'dev-edition' in entry.name:
|
if 'dev-edition' in entry.name:
|
||||||
# NOTE: Not always present which can lead
|
# NOTE: Not always present which can lead
|
||||||
# to Dev profiles being marked as non-Dev
|
# to Dev profiles being marked as non-Dev
|
||||||
## NOTE 2: It is possible that a non-Dev profile
|
## NOTE 2: It is possible that a non-Dev profile
|
||||||
## to be created with 'dev-edition' in the name.
|
## to be created with 'dev-edition' in the name.
|
||||||
## (It wouldn't make sense, but possible)
|
## (It wouldn't make sense, but possible)
|
||||||
if dev:
|
if dev:
|
||||||
profiles.append(entry)
|
profiles.append(entry)
|
||||||
elif not dev:
|
elif not dev:
|
||||||
profiles.append(entry)
|
profiles.append(entry)
|
||||||
profiles = [p for p in profiles if not REGEX_BACKUP.search(p.name)]
|
profiles = [p for p in profiles if not REGEX_BACKUP.search(p.name)]
|
||||||
# Convert os.DirEntries to dicts
|
# Convert os.DirEntries to dicts
|
||||||
profiles = [{'name': p.name, 'path': p.path} for p in profiles]
|
profiles = [{'name': p.name, 'path': p.path} for p in profiles]
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return profiles
|
return profiles
|
||||||
|
|
||||||
def install_adblock(indent=8, width=32):
|
def install_adblock(indent=8, width=32):
|
||||||
"""Install adblock for all supported browsers."""
|
"""Install adblock for all supported browsers."""
|
||||||
for browser in sorted(browser_data):
|
for browser in sorted(browser_data):
|
||||||
exe_path = browser_data[browser].get('exe_path', None)
|
exe_path = browser_data[browser].get('exe_path', None)
|
||||||
function=run_program
|
function=run_program
|
||||||
if exe_path is None:
|
if exe_path is None:
|
||||||
print_standard(
|
print_standard(
|
||||||
'{indent}{browser:<{width}}'.format(
|
'{indent}{browser:<{width}}'.format(
|
||||||
indent=' '*indent, width=width, browser=browser+'...'),
|
indent=' '*indent, width=width, browser=browser+'...'),
|
||||||
end='', flush=True)
|
end='', flush=True)
|
||||||
print_warning('Not installed', timestamp=False)
|
print_warning('Not installed', timestamp=False)
|
||||||
else:
|
else:
|
||||||
# Set urls to open
|
# Set urls to open
|
||||||
urls = []
|
urls = []
|
||||||
if browser_data[browser]['base'] == 'chromium':
|
if browser_data[browser]['base'] == 'chromium':
|
||||||
if browser == 'Google Chrome':
|
if browser == 'Google Chrome':
|
||||||
# Check for system exensions
|
# Check for system exensions
|
||||||
try:
|
try:
|
||||||
winreg.QueryValue(HKLM, UBO_CHROME_REG)
|
winreg.QueryValue(HKLM, UBO_CHROME_REG)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
urls.append(UBO_CHROME)
|
urls.append(UBO_CHROME)
|
||||||
try:
|
try:
|
||||||
winreg.QueryValue(HKLM, UBO_EXTRA_CHROME_REG)
|
winreg.QueryValue(HKLM, UBO_EXTRA_CHROME_REG)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
urls.append(UBO_EXTRA_CHROME)
|
urls.append(UBO_EXTRA_CHROME)
|
||||||
|
|
||||||
if len(urls) == 0:
|
if len(urls) == 0:
|
||||||
urls = ['chrome://extensions']
|
urls = ['chrome://extensions']
|
||||||
elif 'Opera' in browser:
|
elif 'Opera' in browser:
|
||||||
urls.append(UBO_OPERA)
|
urls.append(UBO_OPERA)
|
||||||
else:
|
else:
|
||||||
urls.append(UBO_CHROME)
|
urls.append(UBO_CHROME)
|
||||||
urls.append(UBO_EXTRA_CHROME)
|
urls.append(UBO_EXTRA_CHROME)
|
||||||
|
|
||||||
elif browser_data[browser]['base'] == 'mozilla':
|
elif browser_data[browser]['base'] == 'mozilla':
|
||||||
# Assume UBO is not installed first and change if it is
|
# Assume UBO is not installed first and change if it is
|
||||||
urls.append(UBO_MOZILLA)
|
urls.append(UBO_MOZILLA)
|
||||||
if browser == 'Mozilla Firefox':
|
if browser == 'Mozilla Firefox':
|
||||||
ubo = browser_data[browser]['exe_path'].replace(
|
ubo = browser_data[browser]['exe_path'].replace(
|
||||||
'firefox.exe',
|
'firefox.exe',
|
||||||
r'distribution\extensions\uBlock0@raymondhill.net')
|
r'distribution\extensions\uBlock0@raymondhill.net')
|
||||||
if os.path.exists(ubo):
|
if os.path.exists(ubo):
|
||||||
urls = ['about:addons']
|
urls = ['about:addons']
|
||||||
|
|
||||||
elif browser_data[browser]['base'] == 'ie':
|
elif browser_data[browser]['base'] == 'ie':
|
||||||
urls.append(IE_GALLERY)
|
urls.append(IE_GALLERY)
|
||||||
function=popen_program
|
function=popen_program
|
||||||
|
|
||||||
# By using check=False we're skipping any return codes so
|
# By using check=False we're skipping any return codes so
|
||||||
# it should only fail if the program can't be run
|
# it should only fail if the program can't be run
|
||||||
# (or can't be found).
|
# (or can't be found).
|
||||||
# In other words, this isn't tracking the addon/extension's
|
# In other words, this isn't tracking the addon/extension's
|
||||||
# installation status.
|
# installation status.
|
||||||
try_and_print(message='{}...'.format(browser),
|
try_and_print(message='{}...'.format(browser),
|
||||||
indent=indent, width=width,
|
indent=indent, width=width,
|
||||||
cs='Done', function=function,
|
cs='Done', function=function,
|
||||||
cmd=[exe_path, *urls], check=False)
|
cmd=[exe_path, *urls], check=False)
|
||||||
|
|
||||||
def list_homepages(indent=8, width=32):
|
def list_homepages(indent=8, width=32):
|
||||||
"""List current homepages for reference."""
|
"""List current homepages for reference."""
|
||||||
|
|
||||||
for browser in sorted(browser_data):
|
for browser in sorted(browser_data):
|
||||||
# Skip Chromium-based browsers
|
# Skip Chromium-based browsers
|
||||||
if browser_data[browser]['base'] == 'chromium':
|
if browser_data[browser]['base'] == 'chromium':
|
||||||
print_info(
|
print_info(
|
||||||
'{indent}{browser:<{width}}'.format(
|
'{indent}{browser:<{width}}'.format(
|
||||||
indent=' '*indent, width=width, browser=browser+'...'),
|
indent=' '*indent, width=width, browser=browser+'...'),
|
||||||
end='', flush=True)
|
end='', flush=True)
|
||||||
print_warning('Not implemented', timestamp=False)
|
print_warning('Not implemented', timestamp=False)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# All other browsers
|
# All other browsers
|
||||||
profiles = browser_data[browser].get('profiles', [])
|
profiles = browser_data[browser].get('profiles', [])
|
||||||
if profiles:
|
if profiles:
|
||||||
print_info('{indent}{browser:<{width}}'.format(
|
print_info('{indent}{browser:<{width}}'.format(
|
||||||
indent=' '*indent, width=width, browser=browser+'...'))
|
indent=' '*indent, width=width, browser=browser+'...'))
|
||||||
for profile in profiles:
|
for profile in profiles:
|
||||||
_name = profile.get('name', '?')
|
_name = profile.get('name', '?')
|
||||||
_homepages = profile.get('homepages', [])
|
_homepages = profile.get('homepages', [])
|
||||||
if len(_homepages) == 0:
|
if len(_homepages) == 0:
|
||||||
print_standard(
|
print_standard(
|
||||||
'{indent}{name:<{width}}'.format(
|
'{indent}{name:<{width}}'.format(
|
||||||
indent=' '*indent, width=width, name=_name),
|
indent=' '*indent, width=width, name=_name),
|
||||||
end='', flush=True)
|
end='', flush=True)
|
||||||
print_warning('None found', timestamp=False)
|
print_warning('None found', timestamp=False)
|
||||||
else:
|
else:
|
||||||
for page in _homepages:
|
for page in _homepages:
|
||||||
print_standard('{indent}{name:<{width}}{page}'.format(
|
print_standard('{indent}{name:<{width}}{page}'.format(
|
||||||
indent=' '*indent, width=width, name=_name, page=page))
|
indent=' '*indent, width=width, name=_name, page=page))
|
||||||
|
|
||||||
def reset_browsers(indent=8, width=32):
|
def reset_browsers(indent=8, width=32):
|
||||||
"""Reset all detected browsers to safe defaults."""
|
"""Reset all detected browsers to safe defaults."""
|
||||||
for browser in sorted(browser_data):
|
for browser in sorted(browser_data):
|
||||||
print_info('{indent}{name}'.format(indent=' '*indent, name=browser))
|
print_info('{indent}{name}'.format(indent=' '*indent, name=browser))
|
||||||
for profile in browser_data[browser]['profiles']:
|
for profile in browser_data[browser]['profiles']:
|
||||||
if browser_data[browser]['base'] == 'chromium':
|
if browser_data[browser]['base'] == 'chromium':
|
||||||
function = clean_chromium_profile
|
function = clean_chromium_profile
|
||||||
elif browser_data[browser]['base'] == 'ie':
|
elif browser_data[browser]['base'] == 'ie':
|
||||||
function = clean_internet_explorer
|
function = clean_internet_explorer
|
||||||
elif browser_data[browser]['base'] == 'mozilla':
|
elif browser_data[browser]['base'] == 'mozilla':
|
||||||
function = clean_mozilla_profile
|
function = clean_mozilla_profile
|
||||||
try_and_print(
|
try_and_print(
|
||||||
message='{}...'.format(profile['name']),
|
message='{}...'.format(profile['name']),
|
||||||
indent=indent, width=width, function=function,
|
indent=indent, width=width, function=function,
|
||||||
other_results=other_results, profile=profile)
|
other_results=other_results, profile=profile)
|
||||||
|
|
||||||
def scan_for_browsers():
|
def scan_for_browsers():
|
||||||
"""Scan system for any supported browsers."""
|
"""Scan system for any supported browsers."""
|
||||||
for name in sorted(SUPPORTED_BROWSERS):
|
for name in sorted(SUPPORTED_BROWSERS):
|
||||||
try_and_print(message='{}...'.format(name),
|
try_and_print(message='{}...'.format(name),
|
||||||
function=get_browser_details, cs='Detected',
|
function=get_browser_details, cs='Detected',
|
||||||
other_results=other_results, name=name)
|
other_results=other_results, name=name)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
|
|
@ -1,157 +0,0 @@
|
||||||
# Wizard Kit: Functions - Build / Update
|
|
||||||
|
|
||||||
from functions.common import *
|
|
||||||
|
|
||||||
def download_file(out_dir, out_name, source_url):
|
|
||||||
"""Downloads a file using curl."""
|
|
||||||
extract_item('curl', silent=True)
|
|
||||||
_cmd = [
|
|
||||||
global_vars['Tools']['curl'],
|
|
||||||
# '-#LSfo', # ProgressBar
|
|
||||||
'-Lfso',
|
|
||||||
'{}/{}'.format(out_dir, out_name),
|
|
||||||
source_url]
|
|
||||||
os.makedirs(out_dir, exist_ok=True)
|
|
||||||
run_program(_cmd, pipe=False)
|
|
||||||
|
|
||||||
def resolve_dynamic_url(source_url, regex):
|
|
||||||
"""Scan source_url for a url using the regex provided; returns str."""
|
|
||||||
# Download the "download page"
|
|
||||||
extract_item('curl', silent=True)
|
|
||||||
_tmp_file = r'{TmpDir}\webpage.tmp'.format(**global_vars)
|
|
||||||
_cmd = [
|
|
||||||
global_vars['Tools']['curl'],
|
|
||||||
'-#LSfo',
|
|
||||||
_tmp_file,
|
|
||||||
source_url]
|
|
||||||
try:
|
|
||||||
run_program(_cmd)
|
|
||||||
except Exception:
|
|
||||||
# "Fail silently as the download_file() function will catch it
|
|
||||||
return None
|
|
||||||
|
|
||||||
# Scan the file for the regex
|
|
||||||
with open(_tmp_file, 'r') as file:
|
|
||||||
for line in file:
|
|
||||||
if re.search(regex, line):
|
|
||||||
_url = line.strip()
|
|
||||||
_url = re.sub(r'.*(a |)href="([^"]+)".*', r'\2', _url)
|
|
||||||
_url = re.sub(r".*(a |)href='([^']+)'.*", r'\2', _url)
|
|
||||||
break
|
|
||||||
|
|
||||||
# Cleanup and return
|
|
||||||
os.remove(_tmp_file)
|
|
||||||
return _url
|
|
||||||
|
|
||||||
def update_adwcleaner():
|
|
||||||
_path = global_vars['BinDir']
|
|
||||||
_name = 'AdwCleaner.exe'
|
|
||||||
_dl_page = 'http://www.bleepingcomputer.com/download/adwcleaner/dl/125/'
|
|
||||||
_regex = r'href=.*http(s|)://download\.bleepingcomputer\.com/dl/[a-zA-Z0-9]+/[a-zA-Z0-9]+/windows/security/security-utilities/a/adwcleaner/AdwCleaner\.exe'
|
|
||||||
_url = resolve_dynamic_url(_dl_page, _regex)
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_eset():
|
|
||||||
_path = global_vars['BinDir']
|
|
||||||
_name = 'ESET.exe'
|
|
||||||
_url = 'http://download.eset.com/special/eos/esetsmartinstaller_enu.exe'
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_jrt():
|
|
||||||
_path = global_vars['BinDir']
|
|
||||||
_name = 'JRT.exe'
|
|
||||||
_url = 'http://downloads.malwarebytes.org/file/jrt'
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_kvrt():
|
|
||||||
_path = global_vars['BinDir']
|
|
||||||
_name = 'KVRT.exe'
|
|
||||||
_url = 'http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe'
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_hitmanpro():
|
|
||||||
_path = '{BinDir}/HitmanPro'.format(**global_vars)
|
|
||||||
_name = 'HitmanPro.exe'
|
|
||||||
_url = 'http://dl.surfright.nl/HitmanPro.exe'
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
_name = 'HitmanPro64.exe'
|
|
||||||
_url = 'http://dl.surfright.nl/HitmanPro_x64.exe'
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_intel_driver_utility():
|
|
||||||
_path = '{BinDir}/_Drivers'.format(**global_vars)
|
|
||||||
_name = 'Intel Driver Update Utility.exe'
|
|
||||||
_dl_page = 'http://www.intel.com/content/www/us/en/support/detect.html'
|
|
||||||
_regex = r'a href.*http(s|)://downloadmirror\.intel\.com/[a-zA-Z0-9]+/[a-zA-Z0-9]+/Intel%20Driver%20Update%20Utility%20Installer.exe'
|
|
||||||
_url = resolve_dynamic_url(_dl_page, _regex)
|
|
||||||
_url = resolve_dynamic_url(_dl_page, _regex)
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_intel_ssd_toolbox():
|
|
||||||
_path = '{BinDir}/_Drivers'.format(**global_vars)
|
|
||||||
_name = 'Intel SSD Toolbox.exe'
|
|
||||||
_dl_page = 'https://downloadcenter.intel.com/download/26085/Intel-Solid-State-Drive-Toolbox'
|
|
||||||
_regex = r'href=./downloads/eula/[0-9]+/Intel-Solid-State-Drive-Toolbox.httpDown=https\%3A\%2F\%2Fdownloadmirror\.intel\.com\%2F[0-9]+\%2Feng\%2FIntel\%20SSD\%20Toolbox\%20-\%20v[0-9\.]+.exe'
|
|
||||||
_url = resolve_dynamic_url(_dl_page, _regex)
|
|
||||||
_url = re.sub(r'.*httpDown=(.*)', r'\1', _url, re.IGNORECASE)
|
|
||||||
_url = _url.replace('%3A', ':')
|
|
||||||
_url = _url.replace('%2F', '/')
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_rkill():
|
|
||||||
_path = '{BinDir}/RKill'.format(**global_vars)
|
|
||||||
_name = 'RKill.exe'
|
|
||||||
_dl_page = 'http://www.bleepingcomputer.com/download/rkill/dl/10/'
|
|
||||||
_regex = r'href=.*http(s|)://download\.bleepingcomputer\.com/dl/[a-zA-Z0-9]+/[a-zA-Z0-9]+/windows/security/security-utilities/r/rkill/rkill\.exe'
|
|
||||||
_url = resolve_dynamic_url(_dl_page, _regex)
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
def update_samsung_magician():
|
|
||||||
print_warning('Disabled.')
|
|
||||||
#~Broken~# _path = '{BinDir}/_Drivers'.format(**global_vars)
|
|
||||||
#~Broken~# _name = 'Samsung Magician.zip'
|
|
||||||
#~Broken~# _dl_page = 'http://www.samsung.com/semiconductor/minisite/ssd/download/tools.html'
|
|
||||||
#~Broken~# _regex = r'href=./semiconductor/minisite/ssd/downloads/software/Samsung_Magician_Setup_v[0-9]+.zip'
|
|
||||||
#~Broken~# _url = resolve_dynamic_url(_dl_page, _regex)
|
|
||||||
#~Broken~# # Convert relative url to absolute
|
|
||||||
#~Broken~# _url = 'http://www.samsung.com' + _url
|
|
||||||
#~Broken~# download_file(_path, _name, _url)
|
|
||||||
#~Broken~# # Extract and replace old copy
|
|
||||||
#~Broken~# _args = [
|
|
||||||
#~Broken~# 'e', '"{BinDir}/_Drivers/Samsung Magician.zip"'.format(**global_vars),
|
|
||||||
#~Broken~# '-aoa', '-bso0', '-bsp0',
|
|
||||||
#~Broken~# '-o"{BinDir}/_Drivers"'.format(**global_vars)
|
|
||||||
#~Broken~# ]
|
|
||||||
#~Broken~# run_program(seven_zip, _args)
|
|
||||||
#~Broken~# try:
|
|
||||||
#~Broken~# os.remove('{BinDir}/_Drivers/Samsung Magician.zip'.format(**global_vars))
|
|
||||||
#~Broken~# #~PoSH~# Move-Item "$bin\_Drivers\Samsung*exe" "$bin\_Drivers\Samsung Magician.exe" $path 2>&1 | Out-Null
|
|
||||||
#~Broken~# except Exception:
|
|
||||||
#~Broken~# pass
|
|
||||||
pass
|
|
||||||
|
|
||||||
def update_sysinternalssuite():
|
|
||||||
_path = '{BinDir}/tmp'.format(**global_vars)
|
|
||||||
_name = 'SysinternalsSuite.zip'
|
|
||||||
_url = 'https://download.sysinternals.com/files/SysinternalsSuite.zip'
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
# Extract
|
|
||||||
_args = [
|
|
||||||
'e', '"{BinDir}/tmp/SysinternalsSuite.zip"'.format(**global_vars),
|
|
||||||
'-aoa', '-bso0', '-bsp0',
|
|
||||||
'-o"{BinDir}/SysinternalsSuite"'.format(**global_vars)]
|
|
||||||
run_program(seven_zip, _args)
|
|
||||||
try:
|
|
||||||
os.remove('{BinDir}/tmp/SysinternalsSuite.zip'.format(**global_vars))
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def update_tdsskiller():
|
|
||||||
_path = global_vars['BinDir']
|
|
||||||
_name = 'TDSSKiller.exe'
|
|
||||||
_url = 'http://media.kaspersky.com/utilities/VirusUtilities/EN/tdsskiller.exe'
|
|
||||||
download_file(_path, _name, _url)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print("This file is not meant to be called directly.")
|
|
||||||
|
|
@ -1,91 +1,91 @@
|
||||||
# Wizard Kit: Functions - Cleanup
|
# Wizard Kit: Functions - Cleanup
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
|
|
||||||
def cleanup_adwcleaner():
|
def cleanup_adwcleaner():
|
||||||
"""Move AdwCleaner folders into the ClientDir."""
|
"""Move AdwCleaner folders into the ClientDir."""
|
||||||
source_path = r'{SYSTEMDRIVE}\AdwCleaner'.format(**global_vars['Env'])
|
source_path = r'{SYSTEMDRIVE}\AdwCleaner'.format(**global_vars['Env'])
|
||||||
source_quarantine = r'{}\Quarantine'.format(source_path)
|
source_quarantine = r'{}\Quarantine'.format(source_path)
|
||||||
|
|
||||||
# Quarantine
|
# Quarantine
|
||||||
if os.path.exists(source_quarantine):
|
if os.path.exists(source_quarantine):
|
||||||
os.makedirs(global_vars['QuarantineDir'], exist_ok=True)
|
os.makedirs(global_vars['QuarantineDir'], exist_ok=True)
|
||||||
dest_name = r'{QuarantineDir}\AdwCleaner_{Date-Time}'.format(
|
dest_name = r'{QuarantineDir}\AdwCleaner_{Date-Time}'.format(
|
||||||
**global_vars)
|
**global_vars)
|
||||||
dest_name = non_clobber_rename(dest_name)
|
dest_name = non_clobber_rename(dest_name)
|
||||||
shutil.move(source_quarantine, dest_name)
|
shutil.move(source_quarantine, dest_name)
|
||||||
|
|
||||||
# Delete source folder if empty
|
# Delete source folder if empty
|
||||||
try:
|
try:
|
||||||
os.rmdir(source_path)
|
os.rmdir(source_path)
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Main folder
|
# Main folder
|
||||||
if os.path.exists(source_path):
|
if os.path.exists(source_path):
|
||||||
os.makedirs(global_vars['ProgBackupDir'], exist_ok=True)
|
os.makedirs(global_vars['ProgBackupDir'], exist_ok=True)
|
||||||
dest_name = r'{ProgBackupDir}\AdwCleaner_{Date-Time}'.format(
|
dest_name = r'{ProgBackupDir}\AdwCleaner_{Date-Time}'.format(
|
||||||
**global_vars)
|
**global_vars)
|
||||||
dest_name = non_clobber_rename(dest_name)
|
dest_name = non_clobber_rename(dest_name)
|
||||||
shutil.move(source_path, dest_name)
|
shutil.move(source_path, dest_name)
|
||||||
|
|
||||||
def cleanup_cbs(dest_folder):
|
def cleanup_cbs(dest_folder):
|
||||||
"""Safely cleanup a known CBS archive bug under Windows 7.
|
"""Safely cleanup a known CBS archive bug under Windows 7.
|
||||||
|
|
||||||
If a CbsPersist file is larger than 2 Gb then the auto archive feature
|
If a CbsPersist file is larger than 2 Gb then the auto archive feature
|
||||||
continually fails and will fill up the system drive with temp files.
|
continually fails and will fill up the system drive with temp files.
|
||||||
|
|
||||||
This function moves the temp files and CbsPersist file to a temp folder,
|
This function moves the temp files and CbsPersist file to a temp folder,
|
||||||
compresses the CbsPersist files with 7-Zip, and then opens the temp folder
|
compresses the CbsPersist files with 7-Zip, and then opens the temp folder
|
||||||
for the user to manually save the backup files and delete the temp files.
|
for the user to manually save the backup files and delete the temp files.
|
||||||
"""
|
"""
|
||||||
backup_folder = r'{dest_folder}\CbsFix'.format(dest_folder=dest_folder)
|
backup_folder = r'{dest_folder}\CbsFix'.format(dest_folder=dest_folder)
|
||||||
temp_folder = r'{backup_folder}\Temp'.format(backup_folder=backup_folder)
|
temp_folder = r'{backup_folder}\Temp'.format(backup_folder=backup_folder)
|
||||||
os.makedirs(backup_folder, exist_ok=True)
|
os.makedirs(backup_folder, exist_ok=True)
|
||||||
os.makedirs(temp_folder, exist_ok=True)
|
os.makedirs(temp_folder, exist_ok=True)
|
||||||
|
|
||||||
# Move files into temp folder
|
# Move files into temp folder
|
||||||
cbs_path = r'{SYSTEMROOT}\Logs\CBS'.format(**global_vars['Env'])
|
cbs_path = r'{SYSTEMROOT}\Logs\CBS'.format(**global_vars['Env'])
|
||||||
for entry in os.scandir(cbs_path):
|
for entry in os.scandir(cbs_path):
|
||||||
# CbsPersist files
|
# CbsPersist files
|
||||||
if entry.name.lower().startswith('cbspersist'):
|
if entry.name.lower().startswith('cbspersist'):
|
||||||
dest_name = r'{}\{}'.format(temp_folder, entry.name)
|
dest_name = r'{}\{}'.format(temp_folder, entry.name)
|
||||||
dest_name = non_clobber_rename(dest_name)
|
dest_name = non_clobber_rename(dest_name)
|
||||||
shutil.move(entry.path, dest_name)
|
shutil.move(entry.path, dest_name)
|
||||||
temp_path = r'{SYSTEMROOT}\Temp'.format(**global_vars['Env'])
|
temp_path = r'{SYSTEMROOT}\Temp'.format(**global_vars['Env'])
|
||||||
for entry in os.scandir(temp_path):
|
for entry in os.scandir(temp_path):
|
||||||
# cab_ files
|
# cab_ files
|
||||||
if entry.name.lower().startswith('cab_'):
|
if entry.name.lower().startswith('cab_'):
|
||||||
dest_name = r'{}\{}'.format(temp_folder, entry.name)
|
dest_name = r'{}\{}'.format(temp_folder, entry.name)
|
||||||
dest_name = non_clobber_rename(dest_name)
|
dest_name = non_clobber_rename(dest_name)
|
||||||
shutil.move(entry.path, dest_name)
|
shutil.move(entry.path, dest_name)
|
||||||
|
|
||||||
# Compress CbsPersist files with 7-Zip
|
# Compress CbsPersist files with 7-Zip
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['SevenZip'],
|
global_vars['Tools']['SevenZip'],
|
||||||
'a', '-t7z', '-mx=3', '-bso0', '-bse0',
|
'a', '-t7z', '-mx=3', '-bso0', '-bse0',
|
||||||
r'{}\CbsPersists.7z'.format(backup_folder),
|
r'{}\CbsPersists.7z'.format(backup_folder),
|
||||||
r'{}\CbsPersist*'.format(temp_folder)]
|
r'{}\CbsPersist*'.format(temp_folder)]
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def cleanup_desktop():
|
def cleanup_desktop():
|
||||||
"""Move known backup files and reports into the ClientDir."""
|
"""Move known backup files and reports into the ClientDir."""
|
||||||
dest_folder = r'{ProgBackupDir}\Desktop_{Date-Time}'.format(**global_vars)
|
dest_folder = r'{ProgBackupDir}\Desktop_{Date-Time}'.format(**global_vars)
|
||||||
os.makedirs(dest_folder, exist_ok=True)
|
os.makedirs(dest_folder, exist_ok=True)
|
||||||
|
|
||||||
desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env'])
|
desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env'])
|
||||||
for entry in os.scandir(desktop_path):
|
for entry in os.scandir(desktop_path):
|
||||||
# JRT, RKill, Shortcut cleaner
|
# JRT, RKill, Shortcut cleaner
|
||||||
if re.search(r'^(JRT|RKill|sc-cleaner)', entry.name, re.IGNORECASE):
|
if re.search(r'^(JRT|RKill|sc-cleaner)', entry.name, re.IGNORECASE):
|
||||||
dest_name = r'{}\{}'.format(dest_folder, entry.name)
|
dest_name = r'{}\{}'.format(dest_folder, entry.name)
|
||||||
dest_name = non_clobber_rename(dest_name)
|
dest_name = non_clobber_rename(dest_name)
|
||||||
shutil.move(entry.path, dest_name)
|
shutil.move(entry.path, dest_name)
|
||||||
|
|
||||||
# Remove dir if empty
|
# Remove dir if empty
|
||||||
try:
|
try:
|
||||||
os.rmdir(dest_folder)
|
os.rmdir(dest_folder)
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,114 +1,114 @@
|
||||||
# Wizard Kit: Functions - Diagnostics
|
# Wizard Kit: Functions - Diagnostics
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
AUTORUNS_SETTINGS = {
|
AUTORUNS_SETTINGS = {
|
||||||
r'Software\Sysinternals\AutoRuns': {
|
r'Software\Sysinternals\AutoRuns': {
|
||||||
'checkvirustotal': 1,
|
'checkvirustotal': 1,
|
||||||
'EulaAccepted': 1,
|
'EulaAccepted': 1,
|
||||||
'shownomicrosoft': 1,
|
'shownomicrosoft': 1,
|
||||||
'shownowindows': 1,
|
'shownowindows': 1,
|
||||||
'showonlyvirustotal': 1,
|
'showonlyvirustotal': 1,
|
||||||
'submitvirustotal': 0,
|
'submitvirustotal': 0,
|
||||||
'verifysignatures': 1,
|
'verifysignatures': 1,
|
||||||
},
|
},
|
||||||
r'Software\Sysinternals\AutoRuns\SigCheck': {
|
r'Software\Sysinternals\AutoRuns\SigCheck': {
|
||||||
'EulaAccepted': 1,
|
'EulaAccepted': 1,
|
||||||
},
|
},
|
||||||
r'Software\Sysinternals\AutoRuns\Streams': {
|
r'Software\Sysinternals\AutoRuns\Streams': {
|
||||||
'EulaAccepted': 1,
|
'EulaAccepted': 1,
|
||||||
},
|
},
|
||||||
r'Software\Sysinternals\AutoRuns\VirusTotal': {
|
r'Software\Sysinternals\AutoRuns\VirusTotal': {
|
||||||
'VirusTotalTermsAccepted': 1,
|
'VirusTotalTermsAccepted': 1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
def check_connection():
|
def check_connection():
|
||||||
"""Check if the system is online and optionally abort the script."""
|
"""Check if the system is online and optionally abort the script."""
|
||||||
while True:
|
while True:
|
||||||
result = try_and_print(message='Ping test...', function=ping, cs='OK')
|
result = try_and_print(message='Ping test...', function=ping, cs='OK')
|
||||||
if result['CS']:
|
if result['CS']:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
if not ask('ERROR: System appears offline, try again?'):
|
if not ask('ERROR: System appears offline, try again?'):
|
||||||
if ask('Continue anyway?'):
|
if ask('Continue anyway?'):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
abort()
|
abort()
|
||||||
|
|
||||||
def run_autoruns():
|
def run_autoruns():
|
||||||
"""Run AutoRuns in the background with VirusTotal checks enabled."""
|
"""Run AutoRuns in the background with VirusTotal checks enabled."""
|
||||||
extract_item('Autoruns', filter='autoruns*', silent=True)
|
extract_item('Autoruns', filter='autoruns*', silent=True)
|
||||||
# Update AutoRuns settings before running
|
# Update AutoRuns settings before running
|
||||||
for path, settings in AUTORUNS_SETTINGS.items():
|
for path, settings in AUTORUNS_SETTINGS.items():
|
||||||
winreg.CreateKey(HKCU, path)
|
winreg.CreateKey(HKCU, path)
|
||||||
with winreg.OpenKey(HKCU, path, access=winreg.KEY_WRITE) as key:
|
with winreg.OpenKey(HKCU, path, access=winreg.KEY_WRITE) as key:
|
||||||
for name, value in settings.items():
|
for name, value in settings.items():
|
||||||
winreg.SetValueEx(key, name, 0, winreg.REG_DWORD, value)
|
winreg.SetValueEx(key, name, 0, winreg.REG_DWORD, value)
|
||||||
popen_program(global_vars['Tools']['AutoRuns'], minimized=True)
|
popen_program(global_vars['Tools']['AutoRuns'], minimized=True)
|
||||||
|
|
||||||
def run_hwinfo_sensors():
|
def run_hwinfo_sensors():
|
||||||
"""Run HWiNFO sensors."""
|
"""Run HWiNFO sensors."""
|
||||||
path = r'{BinDir}\HWiNFO'.format(**global_vars)
|
path = r'{BinDir}\HWiNFO'.format(**global_vars)
|
||||||
for bit in [32, 64]:
|
for bit in [32, 64]:
|
||||||
# Configure
|
# Configure
|
||||||
source = r'{}\general.ini'.format(path)
|
source = r'{}\general.ini'.format(path)
|
||||||
dest = r'{}\HWiNFO{}.ini'.format(path, bit)
|
dest = r'{}\HWiNFO{}.ini'.format(path, bit)
|
||||||
shutil.copy(source, dest)
|
shutil.copy(source, dest)
|
||||||
with open(dest, 'a') as f:
|
with open(dest, 'a') as f:
|
||||||
f.write('SensorsOnly=1\n')
|
f.write('SensorsOnly=1\n')
|
||||||
f.write('SummaryOnly=0\n')
|
f.write('SummaryOnly=0\n')
|
||||||
popen_program(global_vars['Tools']['HWiNFO'])
|
popen_program(global_vars['Tools']['HWiNFO'])
|
||||||
|
|
||||||
def run_xmplay():
|
def run_xmplay():
|
||||||
"""Run XMPlay to test audio."""
|
"""Run XMPlay to test audio."""
|
||||||
extract_item('XMPlay', silent=True)
|
extract_item('XMPlay', silent=True)
|
||||||
cmd = [global_vars['Tools']['XMPlay'],
|
cmd = [global_vars['Tools']['XMPlay'],
|
||||||
r'{BinDir}\XMPlay\music.7z'.format(**global_vars)]
|
r'{BinDir}\XMPlay\music.7z'.format(**global_vars)]
|
||||||
popen_program(cmd)
|
popen_program(cmd)
|
||||||
|
|
||||||
def run_hitmanpro():
|
def run_hitmanpro():
|
||||||
"""Run HitmanPro in the background."""
|
"""Run HitmanPro in the background."""
|
||||||
extract_item('HitmanPro', silent=True)
|
extract_item('HitmanPro', silent=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['HitmanPro'],
|
global_vars['Tools']['HitmanPro'],
|
||||||
'/quiet', '/noinstall', '/noupload',
|
'/quiet', '/noinstall', '/noupload',
|
||||||
r'/log={LogDir}\hitman.xml'.format(**global_vars)]
|
r'/log={LogDir}\hitman.xml'.format(**global_vars)]
|
||||||
popen_program(cmd)
|
popen_program(cmd)
|
||||||
|
|
||||||
def run_process_killer():
|
def run_process_killer():
|
||||||
"""Kill most running processes skipping those in the whitelist.txt."""
|
"""Kill most running processes skipping those in the whitelist.txt."""
|
||||||
# borrowed from TronScript (reddit.com/r/TronScript)
|
# borrowed from TronScript (reddit.com/r/TronScript)
|
||||||
# credit to /u/cuddlychops06
|
# credit to /u/cuddlychops06
|
||||||
prev_dir = os.getcwd()
|
prev_dir = os.getcwd()
|
||||||
extract_item('ProcessKiller', silent=True)
|
extract_item('ProcessKiller', silent=True)
|
||||||
os.chdir(r'{BinDir}\ProcessKiller'.format(**global_vars))
|
os.chdir(r'{BinDir}\ProcessKiller'.format(**global_vars))
|
||||||
run_program(['ProcessKiller.exe', '/silent'], check=False)
|
run_program(['ProcessKiller.exe', '/silent'], check=False)
|
||||||
os.chdir(prev_dir)
|
os.chdir(prev_dir)
|
||||||
|
|
||||||
def run_rkill():
|
def run_rkill():
|
||||||
"""Run RKill and cleanup afterwards."""
|
"""Run RKill and cleanup afterwards."""
|
||||||
extract_item('RKill', silent=True)
|
extract_item('RKill', silent=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['RKill'],
|
global_vars['Tools']['RKill'],
|
||||||
'-l', r'{LogDir}\RKill.log'.format(**global_vars),
|
'-l', r'{LogDir}\RKill.log'.format(**global_vars),
|
||||||
'-new_console:n', '-new_console:s33V']
|
'-new_console:n', '-new_console:s33V']
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
wait_for_process('RKill')
|
wait_for_process('RKill')
|
||||||
kill_process('notepad.exe')
|
kill_process('notepad.exe')
|
||||||
|
|
||||||
# RKill cleanup
|
# RKill cleanup
|
||||||
desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env'])
|
desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env'])
|
||||||
if os.path.exists(desktop_path):
|
if os.path.exists(desktop_path):
|
||||||
for item in os.scandir(desktop_path):
|
for item in os.scandir(desktop_path):
|
||||||
if re.search(r'^RKill', item.name, re.IGNORECASE):
|
if re.search(r'^RKill', item.name, re.IGNORECASE):
|
||||||
dest = re.sub(r'^(.*)\.', '\1_{Date-Time}.'.format(
|
dest = re.sub(r'^(.*)\.', '\1_{Date-Time}.'.format(
|
||||||
**global_vars), item.name)
|
**global_vars), item.name)
|
||||||
dest = r'{ClientDir}\Info\{name}'.format(
|
dest = r'{ClientDir}\Info\{name}'.format(
|
||||||
name=dest, **global_vars)
|
name=dest, **global_vars)
|
||||||
dest = non_clobber_rename(dest)
|
dest = non_clobber_rename(dest)
|
||||||
shutil.move(item.path, dest)
|
shutil.move(item.path, dest)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
|
|
@ -1,465 +1,465 @@
|
||||||
# Wizard Kit: Functions - Information
|
# Wizard Kit: Functions - Information
|
||||||
|
|
||||||
from borrowed import knownpaths
|
from borrowed import knownpaths
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
from functions.activation import *
|
from functions.activation import *
|
||||||
|
|
||||||
# Regex
|
# Regex
|
||||||
REGEX_OFFICE = re.compile(
|
REGEX_OFFICE = re.compile(
|
||||||
r'(Microsoft (Office\s+'
|
r'(Microsoft (Office\s+'
|
||||||
r'(365|Enterprise|Home|Pro(\s|fessional)'
|
r'(365|Enterprise|Home|Pro(\s|fessional)'
|
||||||
r'|Single|Small|Standard|Starter|Ultimate|system)'
|
r'|Single|Small|Standard|Starter|Ultimate|system)'
|
||||||
r'|Works[-\s\d]+\d)'
|
r'|Works[-\s\d]+\d)'
|
||||||
r'|(Libre|Open|Star)\s*Office'
|
r'|(Libre|Open|Star)\s*Office'
|
||||||
r'|WordPerfect|Gnumeric|Abiword)',
|
r'|WordPerfect|Gnumeric|Abiword)',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
REG_PROFILE_LIST = r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
|
REG_PROFILE_LIST = r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
|
||||||
REG_SHELL_FOLDERS = r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders'
|
REG_SHELL_FOLDERS = r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders'
|
||||||
TMP_HIVE_PATH = 'TEMP_HIVE_MOUNT'
|
TMP_HIVE_PATH = 'TEMP_HIVE_MOUNT'
|
||||||
EXTRA_FOLDERS = [
|
EXTRA_FOLDERS = [
|
||||||
'Dropbox',
|
'Dropbox',
|
||||||
'Google Drive',
|
'Google Drive',
|
||||||
'OneDrive',
|
'OneDrive',
|
||||||
'SkyDrive',
|
'SkyDrive',
|
||||||
]
|
]
|
||||||
SHELL_FOLDERS = {
|
SHELL_FOLDERS = {
|
||||||
#GUIDs from: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v=vs.85).aspx
|
#GUIDs from: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v=vs.85).aspx
|
||||||
'Desktop': (
|
'Desktop': (
|
||||||
'{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}',
|
'{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}',
|
||||||
),
|
),
|
||||||
'Documents': (
|
'Documents': (
|
||||||
'Personal',
|
'Personal',
|
||||||
'{FDD39AD0-238F-46AF-ADB4-6C85480369C7}',
|
'{FDD39AD0-238F-46AF-ADB4-6C85480369C7}',
|
||||||
),
|
),
|
||||||
'Downloads': (
|
'Downloads': (
|
||||||
'{374DE290-123F-4565-9164-39C4925E467B}',
|
'{374DE290-123F-4565-9164-39C4925E467B}',
|
||||||
),
|
),
|
||||||
'Favorites': (
|
'Favorites': (
|
||||||
'{1777F761-68AD-4D8A-87BD-30B759FA33DD}',
|
'{1777F761-68AD-4D8A-87BD-30B759FA33DD}',
|
||||||
),
|
),
|
||||||
'Music': (
|
'Music': (
|
||||||
'My Music',
|
'My Music',
|
||||||
'{4BD8D571-6D19-48D3-BE97-422220080E43}',
|
'{4BD8D571-6D19-48D3-BE97-422220080E43}',
|
||||||
),
|
),
|
||||||
'Pictures': (
|
'Pictures': (
|
||||||
'My Pictures',
|
'My Pictures',
|
||||||
'{33E28130-4E1E-4676-835A-98395C3BC3BB}',
|
'{33E28130-4E1E-4676-835A-98395C3BC3BB}',
|
||||||
),
|
),
|
||||||
'Videos': (
|
'Videos': (
|
||||||
'My Video',
|
'My Video',
|
||||||
'{18989B1D-99B5-455B-841C-AB7C74E4DDFC}',
|
'{18989B1D-99B5-455B-841C-AB7C74E4DDFC}',
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
def backup_file_list():
|
def backup_file_list():
|
||||||
"""Export current file listing for the system."""
|
"""Export current file listing for the system."""
|
||||||
extract_item('Everything', silent=True)
|
extract_item('Everything', silent=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['Everything'],
|
global_vars['Tools']['Everything'],
|
||||||
'-nodb',
|
'-nodb',
|
||||||
'-create-filelist',
|
'-create-filelist',
|
||||||
r'{LogDir}\File List.txt'.format(**global_vars),
|
r'{LogDir}\File List.txt'.format(**global_vars),
|
||||||
global_vars['Env']['SYSTEMDRIVE']]
|
global_vars['Env']['SYSTEMDRIVE']]
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def backup_power_plans():
|
def backup_power_plans():
|
||||||
"""Export current power plans."""
|
"""Export current power plans."""
|
||||||
os.makedirs(r'{BackupDir}\Power Plans'.format(**global_vars), exist_ok=True)
|
os.makedirs(r'{BackupDir}\Power Plans'.format(**global_vars), exist_ok=True)
|
||||||
plans = run_program(['powercfg', '/L'])
|
plans = run_program(['powercfg', '/L'])
|
||||||
plans = plans.stdout.decode().splitlines()
|
plans = plans.stdout.decode().splitlines()
|
||||||
plans = [p for p in plans if re.search(r'^Power Scheme', p)]
|
plans = [p for p in plans if re.search(r'^Power Scheme', p)]
|
||||||
for p in plans:
|
for p in plans:
|
||||||
guid = re.sub(r'Power Scheme GUID:\s+([0-9a-f\-]+).*', r'\1', p)
|
guid = re.sub(r'Power Scheme GUID:\s+([0-9a-f\-]+).*', r'\1', p)
|
||||||
name = re.sub(
|
name = re.sub(
|
||||||
r'Power Scheme GUID:\s+[0-9a-f\-]+\s+\(([^\)]+)\).*', r'\1', p)
|
r'Power Scheme GUID:\s+[0-9a-f\-]+\s+\(([^\)]+)\).*', r'\1', p)
|
||||||
out = r'{BackupDir}\Power Plans\{name}.pow'.format(
|
out = r'{BackupDir}\Power Plans\{name}.pow'.format(
|
||||||
name=name, **global_vars)
|
name=name, **global_vars)
|
||||||
if not os.path.exists(out):
|
if not os.path.exists(out):
|
||||||
cmd = ['powercfg', '-export', out, guid]
|
cmd = ['powercfg', '-export', out, guid]
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
def backup_registry():
|
def backup_registry():
|
||||||
"""Backup registry including user hives."""
|
"""Backup registry including user hives."""
|
||||||
extract_item('erunt', silent=True)
|
extract_item('erunt', silent=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['ERUNT'],
|
global_vars['Tools']['ERUNT'],
|
||||||
r'{LogDir}\Registry'.format(**global_vars),
|
r'{LogDir}\Registry'.format(**global_vars),
|
||||||
'sysreg',
|
'sysreg',
|
||||||
'curuser',
|
'curuser',
|
||||||
'otherusers',
|
'otherusers',
|
||||||
'/noprogresswindow']
|
'/noprogresswindow']
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def get_folder_size(path):
|
def get_folder_size(path):
|
||||||
"""Get (human-readable) size of folder passed, returns str."""
|
"""Get (human-readable) size of folder passed, returns str."""
|
||||||
size = 'Unknown'
|
size = 'Unknown'
|
||||||
cmd = [global_vars['Tools']['Du'], '-nobanner', '-q', path]
|
cmd = [global_vars['Tools']['Du'], '-nobanner', '-q', path]
|
||||||
try:
|
try:
|
||||||
out = run_program(cmd)
|
out = run_program(cmd)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
# Failed to find folder
|
# Failed to find folder
|
||||||
pass
|
pass
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
# Failed to get folder size
|
# Failed to get folder size
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
size = out.stdout.decode().splitlines()[4]
|
size = out.stdout.decode().splitlines()[4]
|
||||||
size = re.sub(r'Size:\s+([\d,]+)\sbytes$', r'\1', size)
|
size = re.sub(r'Size:\s+([\d,]+)\sbytes$', r'\1', size)
|
||||||
size = size.replace(',', '')
|
size = size.replace(',', '')
|
||||||
size = human_readable_size(size)
|
size = human_readable_size(size)
|
||||||
return size
|
return size
|
||||||
|
|
||||||
def get_installed_office():
|
def get_installed_office():
|
||||||
"""Get list of installed Office programs."""
|
"""Get list of installed Office programs."""
|
||||||
programs = []
|
programs = []
|
||||||
log_file = r'{LogDir}\Installed Program List (AIDA64).txt'.format(
|
log_file = r'{LogDir}\Installed Program List (AIDA64).txt'.format(
|
||||||
**global_vars)
|
**global_vars)
|
||||||
with open (log_file, 'r') as f:
|
with open (log_file, 'r') as f:
|
||||||
for line in sorted(f.readlines()):
|
for line in sorted(f.readlines()):
|
||||||
if REGEX_OFFICE.search(line):
|
if REGEX_OFFICE.search(line):
|
||||||
programs.append(line[4:82].strip())
|
programs.append(line[4:82].strip())
|
||||||
|
|
||||||
if len(programs) == 0:
|
if len(programs) == 0:
|
||||||
programs = ['No programs found']
|
programs = ['No programs found']
|
||||||
return programs
|
return programs
|
||||||
|
|
||||||
def get_shell_path(folder, user='current'):
|
def get_shell_path(folder, user='current'):
|
||||||
"""Get shell path using SHGetKnownFolderPath via knownpaths, returns str.
|
"""Get shell path using SHGetKnownFolderPath via knownpaths, returns str.
|
||||||
|
|
||||||
NOTE: Only works for the current user.
|
NOTE: Only works for the current user.
|
||||||
Code based on https://gist.github.com/mkropat/7550097
|
Code based on https://gist.github.com/mkropat/7550097
|
||||||
"""
|
"""
|
||||||
path = None
|
path = None
|
||||||
folderid = None
|
folderid = None
|
||||||
if user.lower() == 'public':
|
if user.lower() == 'public':
|
||||||
user = 'common'
|
user = 'common'
|
||||||
try:
|
try:
|
||||||
folderid = getattr(knownpaths.FOLDERID, folder)
|
folderid = getattr(knownpaths.FOLDERID, folder)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# Unknown folder ID, ignore and return None
|
# Unknown folder ID, ignore and return None
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if folderid:
|
if folderid:
|
||||||
try:
|
try:
|
||||||
path = knownpaths.get_path(folderid, getattr(knownpaths.UserHandle, user))
|
path = knownpaths.get_path(folderid, getattr(knownpaths.UserHandle, user))
|
||||||
except PathNotFoundException:
|
except PathNotFoundException:
|
||||||
# Folder not found, ignore and return None
|
# Folder not found, ignore and return None
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def get_user_data_paths(user):
|
def get_user_data_paths(user):
|
||||||
"""Get user data paths for provided user, returns dict."""
|
"""Get user data paths for provided user, returns dict."""
|
||||||
hive_path = user['SID']
|
hive_path = user['SID']
|
||||||
paths = {
|
paths = {
|
||||||
'Profile': {
|
'Profile': {
|
||||||
'Path': None,
|
'Path': None,
|
||||||
},
|
},
|
||||||
'Shell Folders': {},
|
'Shell Folders': {},
|
||||||
'Extra Folders': {},
|
'Extra Folders': {},
|
||||||
}
|
}
|
||||||
unload_hive = False
|
unload_hive = False
|
||||||
|
|
||||||
if user['Name'] == global_vars['Env']['USERNAME']:
|
if user['Name'] == global_vars['Env']['USERNAME']:
|
||||||
# We can use SHGetKnownFolderPath for the current user
|
# We can use SHGetKnownFolderPath for the current user
|
||||||
paths['Profile']['Path'] = get_shell_path('Profile')
|
paths['Profile']['Path'] = get_shell_path('Profile')
|
||||||
paths['Shell Folders'] = {f: {'Path': get_shell_path(f)}
|
paths['Shell Folders'] = {f: {'Path': get_shell_path(f)}
|
||||||
for f in SHELL_FOLDERS.keys()}
|
for f in SHELL_FOLDERS.keys()}
|
||||||
else:
|
else:
|
||||||
# We have to use the NTUSER.dat hives which isn't recommended by MS
|
# We have to use the NTUSER.dat hives which isn't recommended by MS
|
||||||
try:
|
try:
|
||||||
key_path = r'{}\{}'.format(REG_PROFILE_LIST, user['SID'])
|
key_path = r'{}\{}'.format(REG_PROFILE_LIST, user['SID'])
|
||||||
with winreg.OpenKey(HKLM, key_path) as key:
|
with winreg.OpenKey(HKLM, key_path) as key:
|
||||||
paths['Profile']['Path'] = winreg.QueryValueEx(
|
paths['Profile']['Path'] = winreg.QueryValueEx(
|
||||||
key, 'ProfileImagePath')[0]
|
key, 'ProfileImagePath')[0]
|
||||||
except Exception:
|
except Exception:
|
||||||
# Profile path not found, leaving as None.
|
# Profile path not found, leaving as None.
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Shell folders (Prep)
|
# Shell folders (Prep)
|
||||||
if not reg_path_exists(HKU, hive_path) and paths['Profile']['Path']:
|
if not reg_path_exists(HKU, hive_path) and paths['Profile']['Path']:
|
||||||
# User not logged-in, loading hive
|
# User not logged-in, loading hive
|
||||||
# Also setting unload_hive so it will be unloaded later.
|
# Also setting unload_hive so it will be unloaded later.
|
||||||
hive_path = TMP_HIVE_PATH
|
hive_path = TMP_HIVE_PATH
|
||||||
cmd = ['reg', 'load', r'HKU\{}'.format(TMP_HIVE_PATH),
|
cmd = ['reg', 'load', r'HKU\{}'.format(TMP_HIVE_PATH),
|
||||||
r'{}\NTUSER.DAT'.format(paths['Profile']['Path'])]
|
r'{}\NTUSER.DAT'.format(paths['Profile']['Path'])]
|
||||||
unload_hive = True
|
unload_hive = True
|
||||||
try:
|
try:
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
# Failed to load user hive
|
# Failed to load user hive
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Shell folders
|
# Shell folders
|
||||||
shell_folders = r'{}\{}'.format(hive_path, REG_SHELL_FOLDERS)
|
shell_folders = r'{}\{}'.format(hive_path, REG_SHELL_FOLDERS)
|
||||||
if (reg_path_exists(HKU, hive_path)
|
if (reg_path_exists(HKU, hive_path)
|
||||||
and reg_path_exists(HKU, shell_folders)):
|
and reg_path_exists(HKU, shell_folders)):
|
||||||
with winreg.OpenKey(HKU, shell_folders) as key:
|
with winreg.OpenKey(HKU, shell_folders) as key:
|
||||||
for folder, values in SHELL_FOLDERS.items():
|
for folder, values in SHELL_FOLDERS.items():
|
||||||
for value in values:
|
for value in values:
|
||||||
try:
|
try:
|
||||||
path = winreg.QueryValueEx(key, value)[0]
|
path = winreg.QueryValueEx(key, value)[0]
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
# Skip missing values
|
# Skip missing values
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
paths['Shell Folders'][folder] = {'Path': path}
|
paths['Shell Folders'][folder] = {'Path': path}
|
||||||
# Stop checking values for this folder
|
# Stop checking values for this folder
|
||||||
break
|
break
|
||||||
|
|
||||||
# Shell folder (extra check)
|
# Shell folder (extra check)
|
||||||
if paths['Profile']['Path']:
|
if paths['Profile']['Path']:
|
||||||
for folder in SHELL_FOLDERS.keys():
|
for folder in SHELL_FOLDERS.keys():
|
||||||
folder_path = r'{Path}\{folder}'.format(
|
folder_path = r'{Path}\{folder}'.format(
|
||||||
folder=folder, **paths['Profile'])
|
folder=folder, **paths['Profile'])
|
||||||
if (folder not in paths['Shell Folders']
|
if (folder not in paths['Shell Folders']
|
||||||
and os.path.exists(folder_path)):
|
and os.path.exists(folder_path)):
|
||||||
paths['Shell Folders'][folder] = {'Path': folder_path}
|
paths['Shell Folders'][folder] = {'Path': folder_path}
|
||||||
|
|
||||||
# Extra folders
|
# Extra folders
|
||||||
if paths['Profile']['Path']:
|
if paths['Profile']['Path']:
|
||||||
for folder in EXTRA_FOLDERS:
|
for folder in EXTRA_FOLDERS:
|
||||||
folder_path = r'{Path}\{folder}'.format(
|
folder_path = r'{Path}\{folder}'.format(
|
||||||
folder=folder, **paths['Profile'])
|
folder=folder, **paths['Profile'])
|
||||||
if os.path.exists(folder_path):
|
if os.path.exists(folder_path):
|
||||||
paths['Extra Folders'][folder] = {'Path': folder_path}
|
paths['Extra Folders'][folder] = {'Path': folder_path}
|
||||||
|
|
||||||
# Shell folders (cleanup)
|
# Shell folders (cleanup)
|
||||||
if unload_hive:
|
if unload_hive:
|
||||||
cmd = ['reg', 'unload', r'HKU\{}'.format(TMP_HIVE_PATH)]
|
cmd = ['reg', 'unload', r'HKU\{}'.format(TMP_HIVE_PATH)]
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
return paths
|
return paths
|
||||||
|
|
||||||
def get_user_folder_sizes(users):
|
def get_user_folder_sizes(users):
|
||||||
"""Update list(users) to include folder paths and sizes."""
|
"""Update list(users) to include folder paths and sizes."""
|
||||||
extract_item('du', filter='du*', silent=True)
|
extract_item('du', filter='du*', silent=True)
|
||||||
# Configure Du
|
# Configure Du
|
||||||
winreg.CreateKey(HKCU, r'Software\Sysinternals\Du')
|
winreg.CreateKey(HKCU, r'Software\Sysinternals\Du')
|
||||||
with winreg.OpenKey(HKCU,
|
with winreg.OpenKey(HKCU,
|
||||||
r'Software\Sysinternals\Du', access=winreg.KEY_WRITE) as key:
|
r'Software\Sysinternals\Du', access=winreg.KEY_WRITE) as key:
|
||||||
winreg.SetValueEx(key, 'EulaAccepted', 0, winreg.REG_DWORD, 1)
|
winreg.SetValueEx(key, 'EulaAccepted', 0, winreg.REG_DWORD, 1)
|
||||||
|
|
||||||
for u in users:
|
for u in users:
|
||||||
u.update(get_user_data_paths(u))
|
u.update(get_user_data_paths(u))
|
||||||
if u['Profile']['Path']:
|
if u['Profile']['Path']:
|
||||||
u['Profile']['Size'] = get_folder_size(u['Profile']['Path'])
|
u['Profile']['Size'] = get_folder_size(u['Profile']['Path'])
|
||||||
for folder in u['Shell Folders'].keys():
|
for folder in u['Shell Folders'].keys():
|
||||||
u['Shell Folders'][folder]['Size'] = get_folder_size(
|
u['Shell Folders'][folder]['Size'] = get_folder_size(
|
||||||
u['Shell Folders'][folder]['Path'])
|
u['Shell Folders'][folder]['Path'])
|
||||||
for folder in u['Extra Folders'].keys():
|
for folder in u['Extra Folders'].keys():
|
||||||
u['Extra Folders'][folder]['Size'] = get_folder_size(
|
u['Extra Folders'][folder]['Size'] = get_folder_size(
|
||||||
u['Extra Folders'][folder]['Path'])
|
u['Extra Folders'][folder]['Path'])
|
||||||
|
|
||||||
def get_user_list():
|
def get_user_list():
|
||||||
"""Get user list via WMIC, returns list of dicts."""
|
"""Get user list via WMIC, returns list of dicts."""
|
||||||
users = []
|
users = []
|
||||||
|
|
||||||
# Get user info from WMI
|
# Get user info from WMI
|
||||||
cmd = ['wmic', 'useraccount', 'get', '/format:csv']
|
cmd = ['wmic', 'useraccount', 'get', '/format:csv']
|
||||||
try:
|
try:
|
||||||
out = run_program(cmd)
|
out = run_program(cmd)
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
# Meh, return empty list to avoid a full crash
|
# Meh, return empty list to avoid a full crash
|
||||||
return users
|
return users
|
||||||
|
|
||||||
entries = out.stdout.decode().splitlines()
|
entries = out.stdout.decode().splitlines()
|
||||||
entries = [e.strip().split(',') for e in entries if e.strip()]
|
entries = [e.strip().split(',') for e in entries if e.strip()]
|
||||||
|
|
||||||
# Add user(s) to dict
|
# Add user(s) to dict
|
||||||
keys = entries[0]
|
keys = entries[0]
|
||||||
for e in entries[1:]:
|
for e in entries[1:]:
|
||||||
# Create dict using 1st line (keys)
|
# Create dict using 1st line (keys)
|
||||||
e = dict(zip(keys, e))
|
e = dict(zip(keys, e))
|
||||||
# Set Active status via 'Disabled' TRUE/FALSE str
|
# Set Active status via 'Disabled' TRUE/FALSE str
|
||||||
e['Active'] = bool(e['Disabled'].upper() == 'FALSE')
|
e['Active'] = bool(e['Disabled'].upper() == 'FALSE')
|
||||||
# Assume SIDs ending with 1000+ are "Standard" and others are "System"
|
# Assume SIDs ending with 1000+ are "Standard" and others are "System"
|
||||||
e['Type'] = 'Standard' if re.search(r'-1\d+$', e['SID']) else 'System'
|
e['Type'] = 'Standard' if re.search(r'-1\d+$', e['SID']) else 'System'
|
||||||
users.append(e)
|
users.append(e)
|
||||||
|
|
||||||
# Sort list
|
# Sort list
|
||||||
users.sort(key=itemgetter('Name'))
|
users.sort(key=itemgetter('Name'))
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
return users
|
return users
|
||||||
|
|
||||||
def reg_path_exists(hive, path):
|
def reg_path_exists(hive, path):
|
||||||
"""Test if specified path exists, returns bool."""
|
"""Test if specified path exists, returns bool."""
|
||||||
try:
|
try:
|
||||||
winreg.QueryValue(hive, path)
|
winreg.QueryValue(hive, path)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def run_aida64():
|
def run_aida64():
|
||||||
"""Run AIDA64 to save system reports."""
|
"""Run AIDA64 to save system reports."""
|
||||||
extract_item('AIDA64', silent=True)
|
extract_item('AIDA64', silent=True)
|
||||||
# All system info
|
# All system info
|
||||||
config = r'{BinDir}\AIDA64\full.rpf'.format(**global_vars)
|
config = r'{BinDir}\AIDA64\full.rpf'.format(**global_vars)
|
||||||
report_file = r'{LogDir}\System Information (AIDA64).html'.format(
|
report_file = r'{LogDir}\System Information (AIDA64).html'.format(
|
||||||
**global_vars)
|
**global_vars)
|
||||||
if not os.path.exists(report_file):
|
if not os.path.exists(report_file):
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['AIDA64'],
|
global_vars['Tools']['AIDA64'],
|
||||||
'/R', report_file,
|
'/R', report_file,
|
||||||
'/CUSTOM', config,
|
'/CUSTOM', config,
|
||||||
'/HTML', '/SILENT', '/SAFEST']
|
'/HTML', '/SILENT', '/SAFEST']
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
# Installed Programs
|
# Installed Programs
|
||||||
config = r'{BinDir}\AIDA64\installed_programs.rpf'.format(**global_vars)
|
config = r'{BinDir}\AIDA64\installed_programs.rpf'.format(**global_vars)
|
||||||
report_file = r'{LogDir}\Installed Program List (AIDA64).txt'.format(
|
report_file = r'{LogDir}\Installed Program List (AIDA64).txt'.format(
|
||||||
**global_vars)
|
**global_vars)
|
||||||
if not os.path.exists(report_file):
|
if not os.path.exists(report_file):
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['AIDA64'],
|
global_vars['Tools']['AIDA64'],
|
||||||
'/R', report_file,
|
'/R', report_file,
|
||||||
'/CUSTOM', config,
|
'/CUSTOM', config,
|
||||||
'/TEXT', '/SILENT', '/SAFEST']
|
'/TEXT', '/SILENT', '/SAFEST']
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
# Product Keys
|
# Product Keys
|
||||||
config = r'{BinDir}\AIDA64\licenses.rpf'.format(**global_vars)
|
config = r'{BinDir}\AIDA64\licenses.rpf'.format(**global_vars)
|
||||||
report_file = r'{LogDir}\Product Keys (AIDA64).txt'.format(**global_vars)
|
report_file = r'{LogDir}\Product Keys (AIDA64).txt'.format(**global_vars)
|
||||||
if not os.path.exists(report_file):
|
if not os.path.exists(report_file):
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['AIDA64'],
|
global_vars['Tools']['AIDA64'],
|
||||||
'/R', report_file,
|
'/R', report_file,
|
||||||
'/CUSTOM', config,
|
'/CUSTOM', config,
|
||||||
'/TEXT', '/SILENT', '/SAFEST']
|
'/TEXT', '/SILENT', '/SAFEST']
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
def run_bleachbit():
|
def run_bleachbit():
|
||||||
"""Run BleachBit preview and save log.
|
"""Run BleachBit preview and save log.
|
||||||
|
|
||||||
This is a preview so no files should be deleted."""
|
This is a preview so no files should be deleted."""
|
||||||
if not os.path.exists(global_vars['LogDir']+r'\BleachBit.log'):
|
if not os.path.exists(global_vars['LogDir']+r'\BleachBit.log'):
|
||||||
extract_item('BleachBit', silent=True)
|
extract_item('BleachBit', silent=True)
|
||||||
cmd = [global_vars['Tools']['BleachBit'], '--preview', '--preset']
|
cmd = [global_vars['Tools']['BleachBit'], '--preview', '--preset']
|
||||||
out = run_program(cmd, check=False)
|
out = run_program(cmd, check=False)
|
||||||
# Save stderr
|
# Save stderr
|
||||||
if out.stderr.decode().splitlines():
|
if out.stderr.decode().splitlines():
|
||||||
with open(global_vars['LogDir']+r'\BleachBit.err', 'a') as f:
|
with open(global_vars['LogDir']+r'\BleachBit.err', 'a') as f:
|
||||||
for line in out.stderr.decode().splitlines():
|
for line in out.stderr.decode().splitlines():
|
||||||
f.write(line.strip() + '\n')
|
f.write(line.strip() + '\n')
|
||||||
# Save stdout
|
# Save stdout
|
||||||
with open(global_vars['LogDir']+r'\BleachBit.log', 'a') as f:
|
with open(global_vars['LogDir']+r'\BleachBit.log', 'a') as f:
|
||||||
for line in out.stdout.decode().splitlines():
|
for line in out.stdout.decode().splitlines():
|
||||||
f.write(line.strip() + '\n')
|
f.write(line.strip() + '\n')
|
||||||
|
|
||||||
def show_disk_usage(disk):
|
def show_disk_usage(disk):
|
||||||
"""Show free and used space for a specified disk."""
|
"""Show free and used space for a specified disk."""
|
||||||
print_standard(disk.device.replace('/', ' '),
|
print_standard('{:5}'.format(disk.device.replace('/', ' ')),
|
||||||
end='', flush=True, timestamp=False)
|
end='', flush=True, timestamp=False)
|
||||||
try:
|
try:
|
||||||
usage = psutil.disk_usage(disk.device)
|
usage = psutil.disk_usage(disk.device)
|
||||||
display_string = '{percent:>5.2f}% Free ({free} / {total})'.format(
|
display_string = '{percent:>5.2f}% Free ({free} / {total})'.format(
|
||||||
percent = 100 - usage.percent,
|
percent = 100 - usage.percent,
|
||||||
free = human_readable_size(usage.free, 2),
|
free = human_readable_size(usage.free, 2),
|
||||||
total = human_readable_size(usage.total, 2))
|
total = human_readable_size(usage.total, 2))
|
||||||
if usage.percent > 85:
|
if usage.percent > 85:
|
||||||
print_error(display_string, timestamp=False)
|
print_error(display_string, timestamp=False)
|
||||||
elif usage.percent > 75:
|
elif usage.percent > 75:
|
||||||
print_warning(display_string, timestamp=False)
|
print_warning(display_string, timestamp=False)
|
||||||
else:
|
else:
|
||||||
print_standard(display_string, timestamp=False)
|
print_standard(display_string, timestamp=False)
|
||||||
except Exception:
|
except Exception:
|
||||||
print_warning('Unknown', timestamp=False)
|
print_warning('Unknown', timestamp=False)
|
||||||
|
|
||||||
def show_free_space(indent=8, width=32):
|
def show_free_space(indent=8, width=32):
|
||||||
"""Show free space info for all fixed disks."""
|
"""Show free space info for all fixed disks."""
|
||||||
message = 'Free Space:'
|
message = 'Free Space:'
|
||||||
for disk in psutil.disk_partitions():
|
for disk in psutil.disk_partitions():
|
||||||
try:
|
try:
|
||||||
if 'fixed' in disk.opts:
|
if 'fixed' in disk.opts:
|
||||||
try_and_print(message=message, function=show_disk_usage,
|
try_and_print(message=message, function=show_disk_usage,
|
||||||
ns='Unknown', silent_function=False,
|
ns='Unknown', silent_function=False,
|
||||||
indent=indent, width=width, disk=disk)
|
indent=indent, width=width, disk=disk)
|
||||||
message = ''
|
message = ''
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def show_installed_ram():
|
def show_installed_ram():
|
||||||
"""Show installed RAM."""
|
"""Show installed RAM."""
|
||||||
mem = psutil.virtual_memory()
|
mem = psutil.virtual_memory()
|
||||||
if mem.total > 5905580032:
|
if mem.total > 5905580032:
|
||||||
# > 5.5 Gb so 6Gb or greater
|
# > 5.5 Gb so 6Gb or greater
|
||||||
print_standard(human_readable_size(mem.total).strip())
|
print_standard(human_readable_size(mem.total).strip())
|
||||||
elif mem.total > 3758096384:
|
elif mem.total > 3758096384:
|
||||||
# > 3.5 Gb so 4Gb or greater
|
# > 3.5 Gb so 4Gb or greater
|
||||||
print_warning(human_readable_size(mem.total).strip())
|
print_warning(human_readable_size(mem.total).strip())
|
||||||
else:
|
else:
|
||||||
print_error(human_readable_size(mem.total).strip())
|
print_error(human_readable_size(mem.total).strip())
|
||||||
|
|
||||||
def show_os_activation():
|
def show_os_activation():
|
||||||
"""Show OS activation info."""
|
"""Show OS activation info."""
|
||||||
act_str = get_activation_string()
|
act_str = get_activation_string()
|
||||||
if windows_is_activated():
|
if windows_is_activated():
|
||||||
print_standard(act_str, timestamp=False)
|
print_standard(act_str, timestamp=False)
|
||||||
elif re.search(r'unavailable', act_str, re.IGNORECASE):
|
elif re.search(r'unavailable', act_str, re.IGNORECASE):
|
||||||
print_warning(act_str, timestamp=False)
|
print_warning(act_str, timestamp=False)
|
||||||
else:
|
else:
|
||||||
print_error(act_str, timestamp=False)
|
print_error(act_str, timestamp=False)
|
||||||
|
|
||||||
def show_os_name():
|
def show_os_name():
|
||||||
"""Show extended OS name (including warnings)."""
|
"""Show extended OS name (including warnings)."""
|
||||||
os_name = global_vars['OS']['DisplayName']
|
os_name = global_vars['OS']['DisplayName']
|
||||||
if global_vars['OS']['Arch'] == 32:
|
if global_vars['OS']['Arch'] == 32:
|
||||||
# Show all 32-bit installs as an error message
|
# Show all 32-bit installs as an error message
|
||||||
print_error(os_name, timestamp=False)
|
print_error(os_name, timestamp=False)
|
||||||
else:
|
else:
|
||||||
if re.search(r'(unrecognized|very outdated)', os_name, re.IGNORECASE):
|
if re.search(r'(unrecognized|very outdated)', os_name, re.IGNORECASE):
|
||||||
print_error(os_name, timestamp=False)
|
print_error(os_name, timestamp=False)
|
||||||
elif re.search(r'outdated', os_name, re.IGNORECASE):
|
elif re.search(r'outdated', os_name, re.IGNORECASE):
|
||||||
print_warning(os_name, timestamp=False)
|
print_warning(os_name, timestamp=False)
|
||||||
else:
|
else:
|
||||||
print_standard(os_name, timestamp=False)
|
print_standard(os_name, timestamp=False)
|
||||||
|
|
||||||
def show_temp_files_size():
|
def show_temp_files_size():
|
||||||
"""Show total size of temp files identified by BleachBit."""
|
"""Show total size of temp files identified by BleachBit."""
|
||||||
size = None
|
size = None
|
||||||
with open(r'{LogDir}\BleachBit.log'.format(**global_vars), 'r') as f:
|
with open(r'{LogDir}\BleachBit.log'.format(**global_vars), 'r') as f:
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
if re.search(r'^disk space to be recovered:', line, re.IGNORECASE):
|
if re.search(r'^disk space to be recovered:', line, re.IGNORECASE):
|
||||||
size = re.sub(r'.*: ', '', line.strip())
|
size = re.sub(r'.*: ', '', line.strip())
|
||||||
size = re.sub(r'(\w)iB$', r' \1b', size)
|
size = re.sub(r'(\w)iB$', r' \1b', size)
|
||||||
if size is None:
|
if size is None:
|
||||||
print_warning(size, timestamp=False)
|
print_warning(size, timestamp=False)
|
||||||
else:
|
else:
|
||||||
print_standard(size, timestamp=False)
|
print_standard(size, timestamp=False)
|
||||||
|
|
||||||
def show_user_data_summary(indent=8, width=32):
|
def show_user_data_summary(indent=8, width=32):
|
||||||
"""Print user data folder sizes for all users."""
|
"""Print user data folder sizes for all users."""
|
||||||
users = get_user_list()
|
users = get_user_list()
|
||||||
users = [u for u in users if u['Active']]
|
users = [u for u in users if u['Active']]
|
||||||
get_user_folder_sizes(users)
|
get_user_folder_sizes(users)
|
||||||
for user in users:
|
for user in users:
|
||||||
print_success('{indent}User: {user}'.format(
|
print_success('{indent}User: {user}'.format(
|
||||||
indent = ' '*int(indent/2),
|
indent = ' '*int(indent/2),
|
||||||
user = user['Name']))
|
user = user['Name']))
|
||||||
for section in ['Profile', None, 'Shell Folders', 'Extra Folders']:
|
for section in ['Profile', None, 'Shell Folders', 'Extra Folders']:
|
||||||
folders = []
|
folders = []
|
||||||
if section is None:
|
if section is None:
|
||||||
# Divider
|
# Divider
|
||||||
print_standard('{}{}'.format(' '*indent, '-'*(width+6)))
|
print_standard('{}{}'.format(' '*indent, '-'*(width+6)))
|
||||||
elif section == 'Profile':
|
elif section == 'Profile':
|
||||||
folders = {'Profile': user['Profile']}
|
folders = {'Profile': user['Profile']}
|
||||||
else:
|
else:
|
||||||
folders = user[section]
|
folders = user[section]
|
||||||
for folder in folders:
|
for folder in folders:
|
||||||
print_standard(
|
print_standard(
|
||||||
'{indent}{folder:<{width}}{size:>6} ({path})'.format(
|
'{indent}{folder:<{width}}{size:>6} ({path})'.format(
|
||||||
indent = ' ' * indent,
|
indent = ' ' * indent,
|
||||||
width = width,
|
width = width,
|
||||||
folder = folder,
|
folder = folder,
|
||||||
size = folders[folder]['Size'],
|
size = folders[folder]['Size'],
|
||||||
path = folders[folder]['Path']))
|
path = folders[folder]['Path']))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
|
|
@ -1,325 +1,325 @@
|
||||||
# Wizard Kit: Functions - PARTITION UIDs
|
# Wizard Kit: Functions - PARTITION UIDs
|
||||||
# sources: https://en.wikipedia.org/wiki/GUID_Partition_Table
|
# sources: https://en.wikipedia.org/wiki/GUID_Partition_Table
|
||||||
# https://en.wikipedia.org/wiki/Partition_type
|
# https://en.wikipedia.org/wiki/Partition_type
|
||||||
|
|
||||||
PARTITION_UIDS = {
|
PARTITION_UIDS = {
|
||||||
'00': {'OS': 'All', 'Description': 'Empty partition entry'},
|
'00': {'OS': 'All', 'Description': 'Empty partition entry'},
|
||||||
'01': {'OS': 'DOS 2.0+', 'Description': 'FAT12 as primary partition in first physical 32 MB of disk or as logical drive anywhere on disk (else use 06hinstead)'},
|
'01': {'OS': 'DOS 2.0+', 'Description': 'FAT12 as primary partition in first physical 32 MB of disk or as logical drive anywhere on disk (else use 06hinstead)'},
|
||||||
'02': {'OS': 'XENIX', 'Description': 'XENIX root'},
|
'02': {'OS': 'XENIX', 'Description': 'XENIX root'},
|
||||||
'03': {'OS': 'XENIX', 'Description': 'XENIX usr'},
|
'03': {'OS': 'XENIX', 'Description': 'XENIX usr'},
|
||||||
'04': {'OS': 'DOS 3.0+', 'Description': 'FAT16 with less than 65536 sectors (32 MB). As primary partition it must reside in first physical 32 MB of disk, or as logical drive anywhere on disk (else use 06h instead).'},
|
'04': {'OS': 'DOS 3.0+', 'Description': 'FAT16 with less than 65536 sectors (32 MB). As primary partition it must reside in first physical 32 MB of disk, or as logical drive anywhere on disk (else use 06h instead).'},
|
||||||
'05': {'OS': 'DOS (3.2) 3.3+ / SpeedStor', 'Description': 'Extended partition with CHS addressing. It must reside in first physical 8 GB of disk, else use 0Fh instead / can occur in SpeedStor MBRs'},
|
'05': {'OS': 'DOS (3.2) 3.3+ / SpeedStor', 'Description': 'Extended partition with CHS addressing. It must reside in first physical 8 GB of disk, else use 0Fh instead / can occur in SpeedStor MBRs'},
|
||||||
'06': {'OS': 'DOS 3.31+', 'Description': 'FAT16B with 65536 or more sectors. It must reside in first physical 8 GB of disk, unless used for logical drives in an 0Fh extended partition (else use 0Eh instead). Also used for FAT12 and FAT16 volumes in primary partitions if they are not residing in first physical 32 MB of disk.'},
|
'06': {'OS': 'DOS 3.31+', 'Description': 'FAT16B with 65536 or more sectors. It must reside in first physical 8 GB of disk, unless used for logical drives in an 0Fh extended partition (else use 0Eh instead). Also used for FAT12 and FAT16 volumes in primary partitions if they are not residing in first physical 32 MB of disk.'},
|
||||||
'07': {'OS': 'OS/2 1.2+ / OS/2 1.2+, Windows NT / Windows NT / Windows Embedded CE / QNX 2', 'Description': 'IFS / HPFS / NTFS / exFAT / QNX "qnx" (7) (pre-1988 only)'},
|
'07': {'OS': 'OS/2 1.2+ / OS/2 1.2+, Windows NT / Windows NT / Windows Embedded CE / QNX 2', 'Description': 'IFS / HPFS / NTFS / exFAT / QNX "qnx" (7) (pre-1988 only)'},
|
||||||
'08': {'OS': 'Commodore MS-DOS 3.x / OS/2 1.0-1.3 / AIX / QNX 1.x/2.x', 'Description': 'Logical sectored FAT12 or FAT16 / OS/2 (FAT?) / AIX boot/split / SplitDrive / QNX "qny" (8) / partition spanning multiple drives'},
|
'08': {'OS': 'Commodore MS-DOS 3.x / OS/2 1.0-1.3 / AIX / QNX 1.x/2.x', 'Description': 'Logical sectored FAT12 or FAT16 / OS/2 (FAT?) / AIX boot/split / SplitDrive / QNX "qny" (8) / partition spanning multiple drives'},
|
||||||
'09': {'OS': 'AIX / QNX 1.x/2.x / Coherent / OS-9', 'Description': 'AIX data/boot / QNX "qnz" (9) / Coherent file system / OS-9 RBF'},
|
'09': {'OS': 'AIX / QNX 1.x/2.x / Coherent / OS-9', 'Description': 'AIX data/boot / QNX "qnz" (9) / Coherent file system / OS-9 RBF'},
|
||||||
'0A': {'OS': 'OS/2 / Coherent', 'Description': 'OS/2 Boot Manager / Coherent swap partition'},
|
'0A': {'OS': 'OS/2 / Coherent', 'Description': 'OS/2 Boot Manager / Coherent swap partition'},
|
||||||
'0B': {'OS': 'DOS 7.1+', 'Description': 'FAT32 with CHS addressing'},
|
'0B': {'OS': 'DOS 7.1+', 'Description': 'FAT32 with CHS addressing'},
|
||||||
'0C': {'OS': 'DOS 7.1+', 'Description': 'FAT32 with LBA'},
|
'0C': {'OS': 'DOS 7.1+', 'Description': 'FAT32 with LBA'},
|
||||||
'0D': {'OS': 'Silicon Safe', 'Description': 'Reserved'},
|
'0D': {'OS': 'Silicon Safe', 'Description': 'Reserved'},
|
||||||
'0E': {'OS': 'DOS 7.0+', 'Description': 'FAT16B with LBA'},
|
'0E': {'OS': 'DOS 7.0+', 'Description': 'FAT16B with LBA'},
|
||||||
'0F': {'OS': 'DOS 7.0+', 'Description': 'Extended partition with LBA'},
|
'0F': {'OS': 'DOS 7.0+', 'Description': 'Extended partition with LBA'},
|
||||||
'10': {'OS': 'OPUS', 'Description': 'Unknown'},
|
'10': {'OS': 'OPUS', 'Description': 'Unknown'},
|
||||||
'11': {'OS': 'Leading Edge MS-DOS 3.x / OS/2 Boot Manager', 'Description': 'Logical sectored FAT12 or FAT16 / Hidden FAT12 '},
|
'11': {'OS': 'Leading Edge MS-DOS 3.x / OS/2 Boot Manager', 'Description': 'Logical sectored FAT12 or FAT16 / Hidden FAT12 '},
|
||||||
'12': {'OS': 'Compaq Contura', 'Description': 'configuration partition (bootable FAT) / configuration partition / hibernation partition / diagnostics and firmware partition (bootable FAT) / service partition (bootable FAT) / Rescue and Recovery partition'},
|
'12': {'OS': 'Compaq Contura', 'Description': 'configuration partition (bootable FAT) / configuration partition / hibernation partition / diagnostics and firmware partition (bootable FAT) / service partition (bootable FAT) / Rescue and Recovery partition'},
|
||||||
'14': {'OS': 'AST MS-DOS 3.x / OS/2 Boot Manager / Maverick OS', 'Description': 'Logical sectored FAT12 or FAT16 / Hidden FAT16 / Omega file system'},
|
'14': {'OS': 'AST MS-DOS 3.x / OS/2 Boot Manager / Maverick OS', 'Description': 'Logical sectored FAT12 or FAT16 / Hidden FAT16 / Omega file system'},
|
||||||
'15': {'OS': 'OS/2 Boot Manager / Maverick OS', 'Description': 'Hidden extended partition with CHS addressing / swap'},
|
'15': {'OS': 'OS/2 Boot Manager / Maverick OS', 'Description': 'Hidden extended partition with CHS addressing / swap'},
|
||||||
'16': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT16B '},
|
'16': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT16B '},
|
||||||
'17': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden IFS / Hidden HPFS / Hidden NTFS / Hidden exFAT '},
|
'17': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden IFS / Hidden HPFS / Hidden NTFS / Hidden exFAT '},
|
||||||
'18': {'OS': 'AST Windows', 'Description': 'AST Zero Volt Suspend or SmartSleep partition'},
|
'18': {'OS': 'AST Windows', 'Description': 'AST Zero Volt Suspend or SmartSleep partition'},
|
||||||
'19': {'OS': 'Willowtech Photon coS', 'Description': 'Willowtech Photon coS'},
|
'19': {'OS': 'Willowtech Photon coS', 'Description': 'Willowtech Photon coS'},
|
||||||
'1B': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT32 '},
|
'1B': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT32 '},
|
||||||
'1C': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT32 with LBA '},
|
'1C': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT32 with LBA '},
|
||||||
'1E': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT16 with LBA '},
|
'1E': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT16 with LBA '},
|
||||||
'1F': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden extended partition with LBA addressing '},
|
'1F': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden extended partition with LBA addressing '},
|
||||||
'20': {'OS': 'Windows Mobile', 'Description': 'Windows Mobile update XIP / Willowsoft Overture File System (OFS1)'},
|
'20': {'OS': 'Windows Mobile', 'Description': 'Windows Mobile update XIP / Willowsoft Overture File System (OFS1)'},
|
||||||
'21': {'OS': 'Oxygen', 'Description': 'HP Volume Expansion (SpeedStor) / FSo2 (Oxygen File System)'},
|
'21': {'OS': 'Oxygen', 'Description': 'HP Volume Expansion (SpeedStor) / FSo2 (Oxygen File System)'},
|
||||||
'22': {'OS': 'Oxygen', 'Description': 'Oxygen Extended Partition Table'},
|
'22': {'OS': 'Oxygen', 'Description': 'Oxygen Extended Partition Table'},
|
||||||
'23': {'OS': 'Windows Mobile', 'Description': 'Reserved / Windows Mobile boot XIP'},
|
'23': {'OS': 'Windows Mobile', 'Description': 'Reserved / Windows Mobile boot XIP'},
|
||||||
'24': {'OS': 'NEC MS-DOS 3.30', 'Description': 'Logical sectored FAT12 or FAT16 '},
|
'24': {'OS': 'NEC MS-DOS 3.30', 'Description': 'Logical sectored FAT12 or FAT16 '},
|
||||||
'25': {'OS': 'Windows Mobile', 'Description': 'Windows Mobile IMGFS[citation needed]'},
|
'25': {'OS': 'Windows Mobile', 'Description': 'Windows Mobile IMGFS[citation needed]'},
|
||||||
'26': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'26': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'27': {'OS': 'Windows / PQservice / MirOS BSD / RooterBOOT', 'Description': 'Windows Recovery Environment (RE) partition (hidden NTFS partition type 07h) / FAT32 or NTFS rescue partition / MirOS partition / RooterBOOT kernel partition (contains a raw ELF Linux kernel, no file system)'},
|
'27': {'OS': 'Windows / PQservice / MirOS BSD / RooterBOOT', 'Description': 'Windows Recovery Environment (RE) partition (hidden NTFS partition type 07h) / FAT32 or NTFS rescue partition / MirOS partition / RooterBOOT kernel partition (contains a raw ELF Linux kernel, no file system)'},
|
||||||
'2A': {'OS': 'AtheOS', 'Description': 'AtheOS file system (AthFS, AFS) (an extension of BFS, see 2Bh and EBh) / Reserved'},
|
'2A': {'OS': 'AtheOS', 'Description': 'AtheOS file system (AthFS, AFS) (an extension of BFS, see 2Bh and EBh) / Reserved'},
|
||||||
'2B': {'OS': 'SyllableOS', 'Description': 'SyllableSecure (SylStor), a variant of AthFS (an extension of BFS, see 2Ah and EBh)'},
|
'2B': {'OS': 'SyllableOS', 'Description': 'SyllableSecure (SylStor), a variant of AthFS (an extension of BFS, see 2Ah and EBh)'},
|
||||||
'31': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'31': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'32': {'OS': 'NOS', 'Description': 'Unknown'},
|
'32': {'OS': 'NOS', 'Description': 'Unknown'},
|
||||||
'33': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'33': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'34': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'34': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'35': {'OS': 'OS/2 Warp Server /eComStation', 'Description': 'JFS (OS/2 implementation of AIX Journaling File system)'},
|
'35': {'OS': 'OS/2 Warp Server /eComStation', 'Description': 'JFS (OS/2 implementation of AIX Journaling File system)'},
|
||||||
'36': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'36': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'38': {'OS': 'THEOS', 'Description': 'THEOS version 3.2, 2 GB partition'},
|
'38': {'OS': 'THEOS', 'Description': 'THEOS version 3.2, 2 GB partition'},
|
||||||
'39': {'OS': 'Plan 9 / THEOS', 'Description': 'Plan 9 edition 3 partition (sub-partitions described in second sector of partition) / THEOS version 4 spanned partition'},
|
'39': {'OS': 'Plan 9 / THEOS', 'Description': 'Plan 9 edition 3 partition (sub-partitions described in second sector of partition) / THEOS version 4 spanned partition'},
|
||||||
'3A': {'OS': 'THEOS', 'Description': 'THEOS version 4, 4 GB partition'},
|
'3A': {'OS': 'THEOS', 'Description': 'THEOS version 4, 4 GB partition'},
|
||||||
'3B': {'OS': 'THEOS', 'Description': 'THEOS version 4 extended partition'},
|
'3B': {'OS': 'THEOS', 'Description': 'THEOS version 4 extended partition'},
|
||||||
'3C': {'OS': 'PartitionMagic', 'Description': 'PqRP (PartitionMagic or DriveImage in progress)'},
|
'3C': {'OS': 'PartitionMagic', 'Description': 'PqRP (PartitionMagic or DriveImage in progress)'},
|
||||||
'3D': {'OS': 'PartitionMagic', 'Description': 'Hidden NetWare'},
|
'3D': {'OS': 'PartitionMagic', 'Description': 'Hidden NetWare'},
|
||||||
'3F': {'OS': 'OS/32', 'Description': 'Unknown'},
|
'3F': {'OS': 'OS/32', 'Description': 'Unknown'},
|
||||||
'40': {'OS': 'PICK / Venix', 'Description': 'PICK R83 / Venix 80286'},
|
'40': {'OS': 'PICK / Venix', 'Description': 'PICK R83 / Venix 80286'},
|
||||||
'41': {'OS': 'Personal RISC / Linux / PowerPC', 'Description': 'Personal RISC Boot / Old Linux/Minix (disk shared with DR DOS 6.0) / PPC PReP (Power PC Reference Platform) Boot'},
|
'41': {'OS': 'Personal RISC / Linux / PowerPC', 'Description': 'Personal RISC Boot / Old Linux/Minix (disk shared with DR DOS 6.0) / PPC PReP (Power PC Reference Platform) Boot'},
|
||||||
'42': {'OS': 'SFS / Linux / Windows 2000, XP, etc.', 'Description': 'Secure File system (SFS) / Old Linux swap (disk shared with DR DOS 6.0) / Dynamic extended partition marker'},
|
'42': {'OS': 'SFS / Linux / Windows 2000, XP, etc.', 'Description': 'Secure File system (SFS) / Old Linux swap (disk shared with DR DOS 6.0) / Dynamic extended partition marker'},
|
||||||
'43': {'OS': 'Linux', 'Description': 'Old Linux native (disk shared with DR DOS 6.0) '},
|
'43': {'OS': 'Linux', 'Description': 'Old Linux native (disk shared with DR DOS 6.0) '},
|
||||||
'44': {'OS': 'GoBack', 'Description': 'Norton GoBack, WildFile GoBack, Adaptec GoBack, Roxio GoBack'},
|
'44': {'OS': 'GoBack', 'Description': 'Norton GoBack, WildFile GoBack, Adaptec GoBack, Roxio GoBack'},
|
||||||
'45': {'OS': 'Boot-US / EUMEL/ELAN', 'Description': 'Priam / Boot-US boot manager (1 cylinder) / EUMEL/ELAN (L2)'},
|
'45': {'OS': 'Boot-US / EUMEL/ELAN', 'Description': 'Priam / Boot-US boot manager (1 cylinder) / EUMEL/ELAN (L2)'},
|
||||||
'46': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2)'},
|
'46': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2)'},
|
||||||
'47': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2)'},
|
'47': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2)'},
|
||||||
'48': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2), ERGOS L3'},
|
'48': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2), ERGOS L3'},
|
||||||
'4A': {'OS': 'AdaOS / ALFS/THIN', 'Description': 'Aquila / ALFS/THIN advanced lightweight file system for DOS'},
|
'4A': {'OS': 'AdaOS / ALFS/THIN', 'Description': 'Aquila / ALFS/THIN advanced lightweight file system for DOS'},
|
||||||
'4C': {'OS': 'ETH Oberon', 'Description': 'Aos (A2) file system (76)'},
|
'4C': {'OS': 'ETH Oberon', 'Description': 'Aos (A2) file system (76)'},
|
||||||
'4D': {'OS': 'QNX 4.x, Neutrino', 'Description': 'Primary QNX POSIX volume on disk (77)'},
|
'4D': {'OS': 'QNX 4.x, Neutrino', 'Description': 'Primary QNX POSIX volume on disk (77)'},
|
||||||
'4E': {'OS': 'QNX 4.x, Neutrino', 'Description': 'Secondary QNX POSIX volume on disk (78)'},
|
'4E': {'OS': 'QNX 4.x, Neutrino', 'Description': 'Secondary QNX POSIX volume on disk (78)'},
|
||||||
'4F': {'OS': 'QNX 4.x, Neutrino / ETH Oberon', 'Description': 'Tertiary QNX POSIX volume on disk (79) / boot / native file system (79)'},
|
'4F': {'OS': 'QNX 4.x, Neutrino / ETH Oberon', 'Description': 'Tertiary QNX POSIX volume on disk (79) / boot / native file system (79)'},
|
||||||
'50': {'OS': 'ETH Oberon / Disk Manager 4 / LynxOS / Novell', 'Description': 'Alternative native file system (80) / Read-only partition (old) / Lynx RTOS'},
|
'50': {'OS': 'ETH Oberon / Disk Manager 4 / LynxOS / Novell', 'Description': 'Alternative native file system (80) / Read-only partition (old) / Lynx RTOS'},
|
||||||
'51': {'OS': 'Disk Manager 4-6', 'Description': 'Read-write partition (Aux 1)'},
|
'51': {'OS': 'Disk Manager 4-6', 'Description': 'Read-write partition (Aux 1)'},
|
||||||
'52': {'OS': 'CP/M-80 / System V/AT, V/386', 'Description': 'CP/M-80'},
|
'52': {'OS': 'CP/M-80 / System V/AT, V/386', 'Description': 'CP/M-80'},
|
||||||
'53': {'OS': 'Disk Manager 6', 'Description': 'Auxiliary 3 (WO)'},
|
'53': {'OS': 'Disk Manager 6', 'Description': 'Auxiliary 3 (WO)'},
|
||||||
'54': {'OS': 'Disk Manager 6', 'Description': 'Dynamic Drive Overlay (DDO)'},
|
'54': {'OS': 'Disk Manager 6', 'Description': 'Dynamic Drive Overlay (DDO)'},
|
||||||
'55': {'OS': 'EZ-Drive', 'Description': 'EZ-Drive, Maxtor, MaxBlast, or DriveGuide INT 13h redirector volume'},
|
'55': {'OS': 'EZ-Drive', 'Description': 'EZ-Drive, Maxtor, MaxBlast, or DriveGuide INT 13h redirector volume'},
|
||||||
'56': {'OS': 'AT&T MS-DOS 3.x / EZ-Drive / VFeature', 'Description': 'Logical sectored FAT12 or FAT16 / Disk Manager partition converted to EZ-BIOS / VFeature partitionned volume'},
|
'56': {'OS': 'AT&T MS-DOS 3.x / EZ-Drive / VFeature', 'Description': 'Logical sectored FAT12 or FAT16 / Disk Manager partition converted to EZ-BIOS / VFeature partitionned volume'},
|
||||||
'57': {'OS': 'DrivePro', 'Description': 'VNDI partition'},
|
'57': {'OS': 'DrivePro', 'Description': 'VNDI partition'},
|
||||||
'5C': {'OS': 'EDISK', 'Description': 'Priam EDisk Partitioned Volume '},
|
'5C': {'OS': 'EDISK', 'Description': 'Priam EDisk Partitioned Volume '},
|
||||||
'61': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
'61': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||||
'63': {'OS': 'Unix', 'Description': 'SCO Unix, ISC, UnixWare, AT&T System V/386, ix, MtXinu BSD 4.3 on Mach, GNU HURD'},
|
'63': {'OS': 'Unix', 'Description': 'SCO Unix, ISC, UnixWare, AT&T System V/386, ix, MtXinu BSD 4.3 on Mach, GNU HURD'},
|
||||||
'64': {'OS': 'SpeedStor / NetWare', 'Description': 'NetWare File System 286/2 / PC-ARMOUR'},
|
'64': {'OS': 'SpeedStor / NetWare', 'Description': 'NetWare File System 286/2 / PC-ARMOUR'},
|
||||||
'65': {'OS': 'NetWare', 'Description': 'NetWare File System 386'},
|
'65': {'OS': 'NetWare', 'Description': 'NetWare File System 386'},
|
||||||
'66': {'OS': 'NetWare / NetWare', 'Description': 'NetWare File System 386 / Storage Management Services (SMS)'},
|
'66': {'OS': 'NetWare / NetWare', 'Description': 'NetWare File System 386 / Storage Management Services (SMS)'},
|
||||||
'67': {'OS': 'NetWare', 'Description': 'Wolf Mountain'},
|
'67': {'OS': 'NetWare', 'Description': 'Wolf Mountain'},
|
||||||
'68': {'OS': 'NetWare', 'Description': 'Unknown'},
|
'68': {'OS': 'NetWare', 'Description': 'Unknown'},
|
||||||
'69': {'OS': 'NetWare 5 / NetWare', 'Description': 'Novell Storage Services (NSS)'},
|
'69': {'OS': 'NetWare 5 / NetWare', 'Description': 'Novell Storage Services (NSS)'},
|
||||||
'6E': {'Description': 'Unknown'},
|
'6E': {'Description': 'Unknown'},
|
||||||
'70': {'OS': 'DiskSecure', 'Description': 'DiskSecure multiboot'},
|
'70': {'OS': 'DiskSecure', 'Description': 'DiskSecure multiboot'},
|
||||||
'71': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'71': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'72': {'OS': 'APTI conformant systems / Unix V7/x86', 'Description': 'APTI alternative FAT12 (CHS, SFN) / V7/x86'},
|
'72': {'OS': 'APTI conformant systems / Unix V7/x86', 'Description': 'APTI alternative FAT12 (CHS, SFN) / V7/x86'},
|
||||||
'73': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'73': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'74': {'OS': 'Microsoft, IBM', 'Description': 'Reserved / Scramdisk'},
|
'74': {'OS': 'Microsoft, IBM', 'Description': 'Reserved / Scramdisk'},
|
||||||
'75': {'OS': 'PC/IX', 'Description': 'Unknown'},
|
'75': {'OS': 'PC/IX', 'Description': 'Unknown'},
|
||||||
'76': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
'76': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||||
'77': {'OS': 'Novell', 'Description': 'VNDI, M2FS, M2CS'},
|
'77': {'OS': 'Novell', 'Description': 'VNDI, M2FS, M2CS'},
|
||||||
'78': {'OS': 'Geurt Vos', 'Description': 'XOSL bootloader file system'},
|
'78': {'OS': 'Geurt Vos', 'Description': 'XOSL bootloader file system'},
|
||||||
'79': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16 (CHS, SFN) '},
|
'79': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16 (CHS, SFN) '},
|
||||||
'7A': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16 (LBA, SFN) '},
|
'7A': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16 (LBA, SFN) '},
|
||||||
'7B': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16B (CHS, SFN) '},
|
'7B': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16B (CHS, SFN) '},
|
||||||
'7C': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT32 (LBA, SFN) '},
|
'7C': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT32 (LBA, SFN) '},
|
||||||
'7D': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT32 (CHS, SFN) '},
|
'7D': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT32 (CHS, SFN) '},
|
||||||
'7E': {'OS': 'F.I.X. (claim) / PrimoCache', 'Description': 'Level 2 cache'},
|
'7E': {'OS': 'F.I.X. (claim) / PrimoCache', 'Description': 'Level 2 cache'},
|
||||||
'7F': {'OS': 'Varies', 'Description': 'Alternative OS Development Partition Standard - reserved for individual or local use and temporary or experimental projects'},
|
'7F': {'OS': 'Varies', 'Description': 'Alternative OS Development Partition Standard - reserved for individual or local use and temporary or experimental projects'},
|
||||||
'80': {'OS': 'Minix 1.1-1.4a', 'Description': 'Minix file system (old)'},
|
'80': {'OS': 'Minix 1.1-1.4a', 'Description': 'Minix file system (old)'},
|
||||||
'81': {'OS': 'Minix 1.4b+ / Linux', 'Description': 'MINIX file system / Mitac Advanced Disk Manager'},
|
'81': {'OS': 'Minix 1.4b+ / Linux', 'Description': 'MINIX file system / Mitac Advanced Disk Manager'},
|
||||||
'82': {'OS': 'Linux / Sun Microsystems', 'Description': 'Linux swap space / Solaris x86 (for Sun disklabels up to 2005) / Prime'},
|
'82': {'OS': 'Linux / Sun Microsystems', 'Description': 'Linux swap space / Solaris x86 (for Sun disklabels up to 2005) / Prime'},
|
||||||
'83': {'OS': 'GNU/Linux', 'Description': 'Any native Linux file system '},
|
'83': {'OS': 'GNU/Linux', 'Description': 'Any native Linux file system '},
|
||||||
'84': {'OS': 'OS/2 / Windows 7', 'Description': 'APM hibernation (suspend to disk, S2D) / Hidden C: (FAT16) / Rapid Start technology'},
|
'84': {'OS': 'OS/2 / Windows 7', 'Description': 'APM hibernation (suspend to disk, S2D) / Hidden C: (FAT16) / Rapid Start technology'},
|
||||||
'85': {'OS': 'GNU/Linux', 'Description': 'Linux extended '},
|
'85': {'OS': 'GNU/Linux', 'Description': 'Linux extended '},
|
||||||
'86': {'OS': 'Windows NT 4 Server / Linux', 'Description': 'Fault-tolerant FAT16B mirrored volume set / Linux RAID superblock with auto-detect (old)'},
|
'86': {'OS': 'Windows NT 4 Server / Linux', 'Description': 'Fault-tolerant FAT16B mirrored volume set / Linux RAID superblock with auto-detect (old)'},
|
||||||
'87': {'OS': 'Windows NT 4 Server', 'Description': 'Fault-tolerant HPFS/NTFS mirrored volume set '},
|
'87': {'OS': 'Windows NT 4 Server', 'Description': 'Fault-tolerant HPFS/NTFS mirrored volume set '},
|
||||||
'88': {'OS': 'GNU/Linux', 'Description': 'Linux plaintext partition table'},
|
'88': {'OS': 'GNU/Linux', 'Description': 'Linux plaintext partition table'},
|
||||||
'8A': {'OS': 'AiR-BOOT', 'Description': 'Linux kernel image'},
|
'8A': {'OS': 'AiR-BOOT', 'Description': 'Linux kernel image'},
|
||||||
'8B': {'OS': 'Windows NT 4 Server', 'Description': 'Legacy fault-tolerant FAT32 mirrored volume set '},
|
'8B': {'OS': 'Windows NT 4 Server', 'Description': 'Legacy fault-tolerant FAT32 mirrored volume set '},
|
||||||
'8C': {'OS': 'Windows NT 4 Server', 'Description': 'Legacy fault-tolerant FAT32 mirrored volume set '},
|
'8C': {'OS': 'Windows NT 4 Server', 'Description': 'Legacy fault-tolerant FAT32 mirrored volume set '},
|
||||||
'8D': {'OS': 'Free FDISK', 'Description': 'Hidden FAT12 '},
|
'8D': {'OS': 'Free FDISK', 'Description': 'Hidden FAT12 '},
|
||||||
'8E': {'OS': 'Linux', 'Description': 'Linux LVM'},
|
'8E': {'OS': 'Linux', 'Description': 'Linux LVM'},
|
||||||
'90': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16 '},
|
'90': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16 '},
|
||||||
'91': {'OS': 'Free FDISK', 'Description': 'Hidden extended partition with CHS addressing '},
|
'91': {'OS': 'Free FDISK', 'Description': 'Hidden extended partition with CHS addressing '},
|
||||||
'92': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16B '},
|
'92': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16B '},
|
||||||
'93': {'OS': 'Amoeba / Linux', 'Description': 'Amoeba native file system / Hidden Linux file system'},
|
'93': {'OS': 'Amoeba / Linux', 'Description': 'Amoeba native file system / Hidden Linux file system'},
|
||||||
'94': {'OS': 'Amoeba', 'Description': 'Amoeba bad block table'},
|
'94': {'OS': 'Amoeba', 'Description': 'Amoeba bad block table'},
|
||||||
'95': {'OS': 'EXOPC', 'Description': 'EXOPC native'},
|
'95': {'OS': 'EXOPC', 'Description': 'EXOPC native'},
|
||||||
'96': {'OS': 'CHRP', 'Description': 'ISO-9660 file system'},
|
'96': {'OS': 'CHRP', 'Description': 'ISO-9660 file system'},
|
||||||
'97': {'OS': 'Free FDISK', 'Description': 'Hidden FAT32 '},
|
'97': {'OS': 'Free FDISK', 'Description': 'Hidden FAT32 '},
|
||||||
'98': {'OS': 'Free FDISK / ROM-DOS', 'Description': 'Hidden FAT32 / service partition (bootable FAT) ROM-DOS SuperBoot / service partition (bootable FAT)'},
|
'98': {'OS': 'Free FDISK / ROM-DOS', 'Description': 'Hidden FAT32 / service partition (bootable FAT) ROM-DOS SuperBoot / service partition (bootable FAT)'},
|
||||||
'99': {'OS': 'early Unix', 'Description': 'Unknown'},
|
'99': {'OS': 'early Unix', 'Description': 'Unknown'},
|
||||||
'9A': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16 '},
|
'9A': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16 '},
|
||||||
'9B': {'OS': 'Free FDISK', 'Description': 'Hidden extended partition with LBA '},
|
'9B': {'OS': 'Free FDISK', 'Description': 'Hidden extended partition with LBA '},
|
||||||
'9E': {'OS': 'VSTA / ForthOS', 'Description': 'ForthOS (eForth port)'},
|
'9E': {'OS': 'VSTA / ForthOS', 'Description': 'ForthOS (eForth port)'},
|
||||||
'9F': {'OS': 'BSD/OS 3.0+, BSDI', 'Description': 'Unknown'},
|
'9F': {'OS': 'BSD/OS 3.0+, BSDI', 'Description': 'Unknown'},
|
||||||
'A0': {'OS': 'Hewlett Packard / Phoenix, IBM, Toshiba, Sony', 'Description': 'Diagnostic partition for HP laptops / Hibernate partition'},
|
'A0': {'OS': 'Hewlett Packard / Phoenix, IBM, Toshiba, Sony', 'Description': 'Diagnostic partition for HP laptops / Hibernate partition'},
|
||||||
'A1': {'OS': 'Hewlett Packard / Phoenix, NEC', 'Description': 'HP Volume Expansion (SpeedStor) / Hibernate partition'},
|
'A1': {'OS': 'Hewlett Packard / Phoenix, NEC', 'Description': 'HP Volume Expansion (SpeedStor) / Hibernate partition'},
|
||||||
'A2': {'OS': 'Cyclone V', 'Description': 'Hard Processor System (HPS) ARM preloader'},
|
'A2': {'OS': 'Cyclone V', 'Description': 'Hard Processor System (HPS) ARM preloader'},
|
||||||
'A3': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
'A3': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
||||||
'A4': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
'A4': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
||||||
'A5': {'OS': 'BSD', 'Description': 'BSD slice (BSD/386, 386BSD, NetBSD (old), FreeBSD)'},
|
'A5': {'OS': 'BSD', 'Description': 'BSD slice (BSD/386, 386BSD, NetBSD (old), FreeBSD)'},
|
||||||
'A6': {'OS': 'OpenBSD', 'Description': 'HP Volume Expansion (SpeedStor) / OpenBSD slice'},
|
'A6': {'OS': 'OpenBSD', 'Description': 'HP Volume Expansion (SpeedStor) / OpenBSD slice'},
|
||||||
'A7': {'OS': 'NeXT', 'Description': 'NeXTSTEP'},
|
'A7': {'OS': 'NeXT', 'Description': 'NeXTSTEP'},
|
||||||
'A8': {'OS': 'Darwin, Mac OS X', 'Description': 'Apple Darwin, Mac OS X UFS'},
|
'A8': {'OS': 'Darwin, Mac OS X', 'Description': 'Apple Darwin, Mac OS X UFS'},
|
||||||
'A9': {'OS': 'NetBSD', 'Description': 'NetBSD slice'},
|
'A9': {'OS': 'NetBSD', 'Description': 'NetBSD slice'},
|
||||||
'AA': {'OS': 'MS-DOS', 'Description': 'Olivetti MS-DOS FAT12 (1.44 MB) '},
|
'AA': {'OS': 'MS-DOS', 'Description': 'Olivetti MS-DOS FAT12 (1.44 MB) '},
|
||||||
'AB': {'OS': 'Darwin, Mac OS X / GO! OS', 'Description': 'Apple Darwin, Mac OS X boot / GO!'},
|
'AB': {'OS': 'Darwin, Mac OS X / GO! OS', 'Description': 'Apple Darwin, Mac OS X boot / GO!'},
|
||||||
'AD': {'OS': 'RISC OS', 'Description': 'ADFS / FileCore format'},
|
'AD': {'OS': 'RISC OS', 'Description': 'ADFS / FileCore format'},
|
||||||
'AE': {'OS': 'ShagOS', 'Description': 'ShagOS file system'},
|
'AE': {'OS': 'ShagOS', 'Description': 'ShagOS file system'},
|
||||||
'AF': {'OS': 'ShagOS', 'Description': 'Apple Mac OS X HFS and HFS+ / ShagOS swap'},
|
'AF': {'OS': 'ShagOS', 'Description': 'Apple Mac OS X HFS and HFS+ / ShagOS swap'},
|
||||||
'B0': {'OS': 'Boot-Star', 'Description': 'Boot-Star dummy partition'},
|
'B0': {'OS': 'Boot-Star', 'Description': 'Boot-Star dummy partition'},
|
||||||
'B1': {'OS': 'QNX 6.x', 'Description': 'HP Volume Expansion (SpeedStor) / QNX Neutrino power-safe file system'},
|
'B1': {'OS': 'QNX 6.x', 'Description': 'HP Volume Expansion (SpeedStor) / QNX Neutrino power-safe file system'},
|
||||||
'B2': {'OS': 'QNX 6.x', 'Description': 'QNX Neutrino power-safe file system'},
|
'B2': {'OS': 'QNX 6.x', 'Description': 'QNX Neutrino power-safe file system'},
|
||||||
'B3': {'OS': 'QNX 6.x', 'Description': 'HP Volume Expansion (SpeedStor) / QNX Neutrino power-safe file system'},
|
'B3': {'OS': 'QNX 6.x', 'Description': 'HP Volume Expansion (SpeedStor) / QNX Neutrino power-safe file system'},
|
||||||
'B4': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
'B4': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
||||||
'B6': {'OS': 'Windows NT 4 Server', 'Description': 'HP Volume Expansion (SpeedStor) / Corrupted fault-tolerant FAT16B mirrored master volume '},
|
'B6': {'OS': 'Windows NT 4 Server', 'Description': 'HP Volume Expansion (SpeedStor) / Corrupted fault-tolerant FAT16B mirrored master volume '},
|
||||||
'B7': {'OS': 'BSDI (before 3.0) / Windows NT 4 Server', 'Description': 'BSDI native file system / swap / Corrupted fault-tolerant HPFS/NTFS mirrored master volume '},
|
'B7': {'OS': 'BSDI (before 3.0) / Windows NT 4 Server', 'Description': 'BSDI native file system / swap / Corrupted fault-tolerant HPFS/NTFS mirrored master volume '},
|
||||||
'B8': {'OS': 'BSDI (before 3.0)', 'Description': 'BSDI swap / native file system'},
|
'B8': {'OS': 'BSDI (before 3.0)', 'Description': 'BSDI swap / native file system'},
|
||||||
'BB': {'OS': 'BootWizard, OS Selector / Acronis True Image / Windows NT 4 Server', 'Description': 'PTS BootWizard 4 / OS Selector 5 for hidden partitions other than 01h, 04h, 06h, 07h, 0Bh, 0Ch, 0Eh and unformatted partitions / OEM Secure Zone (corresponds to BCh) / Corrupted fault-tolerant FAT32 mirrored master volume '},
|
'BB': {'OS': 'BootWizard, OS Selector / Acronis True Image / Windows NT 4 Server', 'Description': 'PTS BootWizard 4 / OS Selector 5 for hidden partitions other than 01h, 04h, 06h, 07h, 0Bh, 0Ch, 0Eh and unformatted partitions / OEM Secure Zone (corresponds to BCh) / Corrupted fault-tolerant FAT32 mirrored master volume '},
|
||||||
'BC': {'OS': 'Windows NT 4 Server / Acronis True Image / Backup Capsule', 'Description': 'Corrupted fault-tolerant FAT32 mirrored master volume / Acronis Secure Zone / Backup Capsule'},
|
'BC': {'OS': 'Windows NT 4 Server / Acronis True Image / Backup Capsule', 'Description': 'Corrupted fault-tolerant FAT32 mirrored master volume / Acronis Secure Zone / Backup Capsule'},
|
||||||
'BD': {'OS': 'BonnyDOS/286', 'Description': 'Unknown'},
|
'BD': {'OS': 'BonnyDOS/286', 'Description': 'Unknown'},
|
||||||
'BE': {'OS': 'Solaris 8', 'Description': 'Solaris 8 boot'},
|
'BE': {'OS': 'Solaris 8', 'Description': 'Solaris 8 boot'},
|
||||||
'BF': {'OS': 'Solaris', 'Description': 'Solaris x86 (for Sun disklabels, since 2005)'},
|
'BF': {'OS': 'Solaris', 'Description': 'Solaris x86 (for Sun disklabels, since 2005)'},
|
||||||
'C0': {'OS': 'DR-DOS, Multiuser DOS,REAL/32', 'Description': 'Secured FAT partition (smaller than 32 MB)'},
|
'C0': {'OS': 'DR-DOS, Multiuser DOS,REAL/32', 'Description': 'Secured FAT partition (smaller than 32 MB)'},
|
||||||
'C1': {'OS': 'DR DOS 6.0+', 'Description': 'Secured FAT12 '},
|
'C1': {'OS': 'DR DOS 6.0+', 'Description': 'Secured FAT12 '},
|
||||||
'C2': {'OS': 'Power Boot', 'Description': 'Hidden Linux native file system'},
|
'C2': {'OS': 'Power Boot', 'Description': 'Hidden Linux native file system'},
|
||||||
'C3': {'OS': 'Power Boot', 'Description': 'Hidden Linux swap'},
|
'C3': {'OS': 'Power Boot', 'Description': 'Hidden Linux swap'},
|
||||||
'C4': {'OS': 'DR DOS 6.0+', 'Description': 'Secured FAT16 '},
|
'C4': {'OS': 'DR DOS 6.0+', 'Description': 'Secured FAT16 '},
|
||||||
'C5': {'OS': 'DR DOS 6.0+', 'Description': 'Secured extended partition with CHS addressing '},
|
'C5': {'OS': 'DR DOS 6.0+', 'Description': 'Secured extended partition with CHS addressing '},
|
||||||
'C6': {'OS': 'DR DOS 6.0+ / Windows NT 4 Server', 'Description': 'Secured FAT16B / Corrupted fault-tolerant FAT16B mirrored slave volume '},
|
'C6': {'OS': 'DR DOS 6.0+ / Windows NT 4 Server', 'Description': 'Secured FAT16B / Corrupted fault-tolerant FAT16B mirrored slave volume '},
|
||||||
'C7': {'OS': 'Syrinx / Windows NT 4 Server', 'Description': 'Syrinx boot / Corrupted fault-tolerant HPFS/NTFS mirrored slave volume '},
|
'C7': {'OS': 'Syrinx / Windows NT 4 Server', 'Description': 'Syrinx boot / Corrupted fault-tolerant HPFS/NTFS mirrored slave volume '},
|
||||||
'C8': {'Description': 'Reserved for DR-DOS since 1997'},
|
'C8': {'Description': 'Reserved for DR-DOS since 1997'},
|
||||||
'C9': {'Description': 'Reserved for DR-DOS since 1997'},
|
'C9': {'Description': 'Reserved for DR-DOS since 1997'},
|
||||||
'CA': {'Description': 'Reserved for DR-DOS since 1997'},
|
'CA': {'Description': 'Reserved for DR-DOS since 1997'},
|
||||||
'CB': {'OS': 'DR-DOS 7.0x / Windows NT 4 Server', 'Description': 'Secured FAT32 / Corrupted fault-tolerant FAT32 mirrored slave volume '},
|
'CB': {'OS': 'DR-DOS 7.0x / Windows NT 4 Server', 'Description': 'Secured FAT32 / Corrupted fault-tolerant FAT32 mirrored slave volume '},
|
||||||
'CC': {'OS': 'DR-DOS 7.0x / Windows NT 4 Server', 'Description': 'Secured FAT32 / Corrupted fault-tolerant FAT32 mirrored slave volume '},
|
'CC': {'OS': 'DR-DOS 7.0x / Windows NT 4 Server', 'Description': 'Secured FAT32 / Corrupted fault-tolerant FAT32 mirrored slave volume '},
|
||||||
'CD': {'OS': 'CTOS', 'Description': 'Memory dump'},
|
'CD': {'OS': 'CTOS', 'Description': 'Memory dump'},
|
||||||
'CE': {'OS': 'DR-DOS 7.0x', 'Description': 'Secured FAT16B '},
|
'CE': {'OS': 'DR-DOS 7.0x', 'Description': 'Secured FAT16B '},
|
||||||
'CF': {'OS': 'DR-DOS 7.0x', 'Description': 'Secured extended partition with LBA '},
|
'CF': {'OS': 'DR-DOS 7.0x', 'Description': 'Secured extended partition with LBA '},
|
||||||
'D0': {'OS': 'Multiuser DOS, REAL/32', 'Description': 'Secured FAT partition (larger than 32 MB)'},
|
'D0': {'OS': 'Multiuser DOS, REAL/32', 'Description': 'Secured FAT partition (larger than 32 MB)'},
|
||||||
'D1': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT12 '},
|
'D1': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT12 '},
|
||||||
'D4': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT16 '},
|
'D4': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT16 '},
|
||||||
'D5': {'OS': 'Multiuser DOS', 'Description': 'Secured extended partition with CHS addressing '},
|
'D5': {'OS': 'Multiuser DOS', 'Description': 'Secured extended partition with CHS addressing '},
|
||||||
'D6': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT16B '},
|
'D6': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT16B '},
|
||||||
'D8': {'OS': 'Digital Research', 'Description': 'CP/M-86 [citation needed]'},
|
'D8': {'OS': 'Digital Research', 'Description': 'CP/M-86 [citation needed]'},
|
||||||
'DA': {'OS': 'Powercopy Backup', 'Description': 'Non-file system data / Shielded disk'},
|
'DA': {'OS': 'Powercopy Backup', 'Description': 'Non-file system data / Shielded disk'},
|
||||||
'DB': {'OS': 'CP/M-86,Concurrent CP/M-86,Concurrent DOS / CTOS / D800 / DRMK', 'Description': 'CP/M-86, Concurrent CP/M-86, Concurrent DOS / boot image for x86 supervisor CPU (SCPU) module / FAT32 system restore partition (DSR)'},
|
'DB': {'OS': 'CP/M-86,Concurrent CP/M-86,Concurrent DOS / CTOS / D800 / DRMK', 'Description': 'CP/M-86, Concurrent CP/M-86, Concurrent DOS / boot image for x86 supervisor CPU (SCPU) module / FAT32 system restore partition (DSR)'},
|
||||||
'DD': {'OS': 'CTOS', 'Description': 'Hidden memory dump'},
|
'DD': {'OS': 'CTOS', 'Description': 'Hidden memory dump'},
|
||||||
'DE': {'OS': 'Dell', 'Description': 'FAT16 utility/diagnostic partition'},
|
'DE': {'OS': 'Dell', 'Description': 'FAT16 utility/diagnostic partition'},
|
||||||
'DF': {'OS': 'DG/UX / BootIt / Aviion', 'Description': 'DG/UX virtual disk manager / EMBRM'},
|
'DF': {'OS': 'DG/UX / BootIt / Aviion', 'Description': 'DG/UX virtual disk manager / EMBRM'},
|
||||||
'E0': {'OS': 'STMicroelectronics', 'Description': 'ST AVFS'},
|
'E0': {'OS': 'STMicroelectronics', 'Description': 'ST AVFS'},
|
||||||
'E1': {'OS': 'SpeedStor', 'Description': 'Extended FAT12 (> 1023 cylinder)'},
|
'E1': {'OS': 'SpeedStor', 'Description': 'Extended FAT12 (> 1023 cylinder)'},
|
||||||
'E2': {'Description': 'DOS read-only (XFDISK)'},
|
'E2': {'Description': 'DOS read-only (XFDISK)'},
|
||||||
'E3': {'OS': 'SpeedStor', 'Description': 'DOS read-only'},
|
'E3': {'OS': 'SpeedStor', 'Description': 'DOS read-only'},
|
||||||
'E4': {'OS': 'SpeedStor', 'Description': 'Extended FAT16 (< 1024 cylinder)'},
|
'E4': {'OS': 'SpeedStor', 'Description': 'Extended FAT16 (< 1024 cylinder)'},
|
||||||
'E5': {'OS': 'Tandy MS-DOS', 'Description': 'Logical sectored FAT12 or FAT16'},
|
'E5': {'OS': 'Tandy MS-DOS', 'Description': 'Logical sectored FAT12 or FAT16'},
|
||||||
'E6': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
'E6': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||||
'E8': {'OS': 'LUKS', 'Description': 'Linux Unified Key Setup'},
|
'E8': {'OS': 'LUKS', 'Description': 'Linux Unified Key Setup'},
|
||||||
'EB': {'OS': 'BeOS, Haiku', 'Description': 'BFS'},
|
'EB': {'OS': 'BeOS, Haiku', 'Description': 'BFS'},
|
||||||
'EC': {'OS': 'SkyOS', 'Description': 'SkyFS'},
|
'EC': {'OS': 'SkyOS', 'Description': 'SkyFS'},
|
||||||
'ED': {'OS': 'Sprytix / EDD 4', 'Description': 'EDC loader / GPT hybrid MBR'},
|
'ED': {'OS': 'Sprytix / EDD 4', 'Description': 'EDC loader / GPT hybrid MBR'},
|
||||||
'EE': {'OS': 'EFI', 'Description': 'GPT protective MBR'},
|
'EE': {'OS': 'EFI', 'Description': 'GPT protective MBR'},
|
||||||
'EF': {'OS': 'EFI', 'Description': 'EFI system partition can be a FAT12, FAT16, FAT32 (or other) file system'},
|
'EF': {'OS': 'EFI', 'Description': 'EFI system partition can be a FAT12, FAT16, FAT32 (or other) file system'},
|
||||||
'F0': {'OS': 'Linux / OS/32', 'Description': 'PA-RISC Linux boot loader. It must reside in first physical 2 GB. / floppy'},
|
'F0': {'OS': 'Linux / OS/32', 'Description': 'PA-RISC Linux boot loader. It must reside in first physical 2 GB. / floppy'},
|
||||||
'F1': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
'F1': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||||
'F2': {'OS': 'Sperry IT MS-DOS 3.x, Unisys MS-DOS 3.3, Digital ResearchDOS Plus 2.1', 'Description': 'Logical sectored FAT12 or FAT16 secondary partition'},
|
'F2': {'OS': 'Sperry IT MS-DOS 3.x, Unisys MS-DOS 3.3, Digital ResearchDOS Plus 2.1', 'Description': 'Logical sectored FAT12 or FAT16 secondary partition'},
|
||||||
'F3': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
'F3': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||||
'F4': {'OS': 'SpeedStor / Prologue', 'Description': '"large" DOS partition / single volume partition for NGF or TwinFS'},
|
'F4': {'OS': 'SpeedStor / Prologue', 'Description': '"large" DOS partition / single volume partition for NGF or TwinFS'},
|
||||||
'F5': {'OS': 'Prologue', 'Description': 'MD0-MD9 multi volume partition for NGF or TwinFS'},
|
'F5': {'OS': 'Prologue', 'Description': 'MD0-MD9 multi volume partition for NGF or TwinFS'},
|
||||||
'F6': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
'F6': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||||
'F7': {'OS': 'O.S.G. / X1', 'Description': 'EFAT / Solid State file system'},
|
'F7': {'OS': 'O.S.G. / X1', 'Description': 'EFAT / Solid State file system'},
|
||||||
'F9': {'OS': 'Linux', 'Description': 'pCache ext2/ext3 persistent cache'},
|
'F9': {'OS': 'Linux', 'Description': 'pCache ext2/ext3 persistent cache'},
|
||||||
'FA': {'OS': 'Bochs', 'Description': 'x86 emulator'},
|
'FA': {'OS': 'Bochs', 'Description': 'x86 emulator'},
|
||||||
'FB': {'OS': 'VMware', 'Description': 'VMware VMFS file system partition'},
|
'FB': {'OS': 'VMware', 'Description': 'VMware VMFS file system partition'},
|
||||||
'FC': {'OS': 'VMware', 'Description': 'VMware swap / VMKCORE kernel dump partition'},
|
'FC': {'OS': 'VMware', 'Description': 'VMware swap / VMKCORE kernel dump partition'},
|
||||||
'FD': {'OS': 'Linux / FreeDOS', 'Description': 'Linux RAID superblock with auto-detect / Reserved for FreeDOS'},
|
'FD': {'OS': 'Linux / FreeDOS', 'Description': 'Linux RAID superblock with auto-detect / Reserved for FreeDOS'},
|
||||||
'FE': {'OS': 'SpeedStor / LANstep / Windows NT / Linux', 'Description': 'partition > 1024 cylinder / PS/2 IML partition / PS/2 recovery partition (FAT12 reference disk floppy image), / Disk Administration hidden partition / old Linux LVM'},
|
'FE': {'OS': 'SpeedStor / LANstep / Windows NT / Linux', 'Description': 'partition > 1024 cylinder / PS/2 IML partition / PS/2 recovery partition (FAT12 reference disk floppy image), / Disk Administration hidden partition / old Linux LVM'},
|
||||||
'FF': {'OS': 'XENIX', 'Description': 'XENIX bad block table'},
|
'FF': {'OS': 'XENIX', 'Description': 'XENIX bad block table'},
|
||||||
'00000000-0000-0000-0000-000000000000': {'Description': 'Unused entry'},
|
'00000000-0000-0000-0000-000000000000': {'Description': 'Unused entry'},
|
||||||
'024DEE41-33E7-11D3-9D69-0008C781F39F': {'Description': 'MBR partition scheme'},
|
'024DEE41-33E7-11D3-9D69-0008C781F39F': {'Description': 'MBR partition scheme'},
|
||||||
'C12A7328-F81F-11D2-BA4B-00A0C93EC93B': {'Description': 'EFI System partition'},
|
'C12A7328-F81F-11D2-BA4B-00A0C93EC93B': {'Description': 'EFI System partition'},
|
||||||
'21686148-6449-6E6F-744E-656564454649': {'Description': 'BIOS Boot partition'},
|
'21686148-6449-6E6F-744E-656564454649': {'Description': 'BIOS Boot partition'},
|
||||||
'D3BFE2DE-3DAF-11DF-BA40-E3A556D89593': {'Description': 'Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology)'},
|
'D3BFE2DE-3DAF-11DF-BA40-E3A556D89593': {'Description': 'Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology)'},
|
||||||
'F4019732-066E-4E12-8273-346C5641494F': {'Description': 'Sony boot partition'},
|
'F4019732-066E-4E12-8273-346C5641494F': {'Description': 'Sony boot partition'},
|
||||||
'BFBFAFE7-A34F-448A-9A5B-6213EB736C22': {'Description': 'Lenovo boot partition'},
|
'BFBFAFE7-A34F-448A-9A5B-6213EB736C22': {'Description': 'Lenovo boot partition'},
|
||||||
'E3C9E316-0B5C-4DB8-817D-F92DF00215AE': {'OS': 'Windows', 'Description': 'Microsoft Reserved Partition (MSR)'},
|
'E3C9E316-0B5C-4DB8-817D-F92DF00215AE': {'OS': 'Windows', 'Description': 'Microsoft Reserved Partition (MSR)'},
|
||||||
'EBD0A0A2-B9E5-4433-87C0-68B6B72699C7': {'OS': 'Windows', 'Description': 'Basic data partition'},
|
'EBD0A0A2-B9E5-4433-87C0-68B6B72699C7': {'OS': 'Windows', 'Description': 'Basic data partition'},
|
||||||
'5808C8AA-7E8F-42E0-85D2-E1E90434CFB3': {'OS': 'Windows', 'Description': 'Logical Disk Manager (LDM) metadata partition'},
|
'5808C8AA-7E8F-42E0-85D2-E1E90434CFB3': {'OS': 'Windows', 'Description': 'Logical Disk Manager (LDM) metadata partition'},
|
||||||
'AF9B60A0-1431-4F62-BC68-3311714A69AD': {'OS': 'Windows', 'Description': 'Logical Disk Manager data partition'},
|
'AF9B60A0-1431-4F62-BC68-3311714A69AD': {'OS': 'Windows', 'Description': 'Logical Disk Manager data partition'},
|
||||||
'DE94BBA4-06D1-4D40-A16A-BFD50179D6AC': {'OS': 'Windows', 'Description': 'Windows Recovery Environment'},
|
'DE94BBA4-06D1-4D40-A16A-BFD50179D6AC': {'OS': 'Windows', 'Description': 'Windows Recovery Environment'},
|
||||||
'37AFFC90-EF7D-4E96-91C3-2D7AE055B174': {'OS': 'Windows', 'Description': 'IBM General Parallel File System (GPFS) partition'},
|
'37AFFC90-EF7D-4E96-91C3-2D7AE055B174': {'OS': 'Windows', 'Description': 'IBM General Parallel File System (GPFS) partition'},
|
||||||
'E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D': {'OS': 'Windows', 'Description': 'Storage Spaces partition'},
|
'E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D': {'OS': 'Windows', 'Description': 'Storage Spaces partition'},
|
||||||
'75894C1E-3AEB-11D3-B7C1-7B03A0000000': {'OS': 'HP-UX', 'Description': 'Data partition'},
|
'75894C1E-3AEB-11D3-B7C1-7B03A0000000': {'OS': 'HP-UX', 'Description': 'Data partition'},
|
||||||
'E2A1E728-32E3-11D6-A682-7B03A0000000': {'OS': 'HP-UX', 'Description': 'Service Partition'},
|
'E2A1E728-32E3-11D6-A682-7B03A0000000': {'OS': 'HP-UX', 'Description': 'Service Partition'},
|
||||||
'0FC63DAF-8483-4772-8E79-3D69D8477DE4': {'OS': 'Linux', 'Description': 'Linux filesystem data'},
|
'0FC63DAF-8483-4772-8E79-3D69D8477DE4': {'OS': 'Linux', 'Description': 'Linux filesystem data'},
|
||||||
'A19D880F-05FC-4D3B-A006-743F0F84911E': {'OS': 'Linux', 'Description': 'RAID partition'},
|
'A19D880F-05FC-4D3B-A006-743F0F84911E': {'OS': 'Linux', 'Description': 'RAID partition'},
|
||||||
'44479540-F297-41B2-9AF7-D131D5F0458A': {'OS': 'Linux', 'Description': 'Root partition (x86)'},
|
'44479540-F297-41B2-9AF7-D131D5F0458A': {'OS': 'Linux', 'Description': 'Root partition (x86)'},
|
||||||
'4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709': {'OS': 'Linux', 'Description': 'Root partition (x86-64)'},
|
'4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709': {'OS': 'Linux', 'Description': 'Root partition (x86-64)'},
|
||||||
'69DAD710-2CE4-4E3C-B16C-21A1D49ABED3': {'OS': 'Linux', 'Description': 'Root partition (32-bit ARM)'},
|
'69DAD710-2CE4-4E3C-B16C-21A1D49ABED3': {'OS': 'Linux', 'Description': 'Root partition (32-bit ARM)'},
|
||||||
'B921B045-1DF0-41C3-AF44-4C6F280D3FAE': {'OS': 'Linux', 'Description': 'Root partition (64-bit ARM/AArch64)'},
|
'B921B045-1DF0-41C3-AF44-4C6F280D3FAE': {'OS': 'Linux', 'Description': 'Root partition (64-bit ARM/AArch64)'},
|
||||||
'0657FD6D-A4AB-43C4-84E5-0933C84B4F4F': {'OS': 'Linux', 'Description': 'Swap partition'},
|
'0657FD6D-A4AB-43C4-84E5-0933C84B4F4F': {'OS': 'Linux', 'Description': 'Swap partition'},
|
||||||
'E6D6D379-F507-44C2-A23C-238F2A3DF928': {'OS': 'Linux', 'Description': 'Logical Volume Manager (LVM) partition'},
|
'E6D6D379-F507-44C2-A23C-238F2A3DF928': {'OS': 'Linux', 'Description': 'Logical Volume Manager (LVM) partition'},
|
||||||
'933AC7E1-2EB4-4F13-B844-0E14E2AEF915': {'OS': 'Linux', 'Description': '/home partition'},
|
'933AC7E1-2EB4-4F13-B844-0E14E2AEF915': {'OS': 'Linux', 'Description': '/home partition'},
|
||||||
'3B8F8425-20E0-4F3B-907F-1A25A76F98E8': {'OS': 'Linux', 'Description': '/srv (server data) partition'},
|
'3B8F8425-20E0-4F3B-907F-1A25A76F98E8': {'OS': 'Linux', 'Description': '/srv (server data) partition'},
|
||||||
'7FFEC5C9-2D00-49B7-8941-3EA10A5586B7': {'OS': 'Linux', 'Description': 'Plain dm-crypt partition'},
|
'7FFEC5C9-2D00-49B7-8941-3EA10A5586B7': {'OS': 'Linux', 'Description': 'Plain dm-crypt partition'},
|
||||||
'CA7D7CCB-63ED-4C53-861C-1742536059CC': {'OS': 'Linux', 'Description': 'LUKS partition'},
|
'CA7D7CCB-63ED-4C53-861C-1742536059CC': {'OS': 'Linux', 'Description': 'LUKS partition'},
|
||||||
'8DA63339-0007-60C0-C436-083AC8230908': {'OS': 'Linux', 'Description': 'Reserved'},
|
'8DA63339-0007-60C0-C436-083AC8230908': {'OS': 'Linux', 'Description': 'Reserved'},
|
||||||
'83BD6B9D-7F41-11DC-BE0B-001560B84F0F': {'OS': 'FreeBSD', 'Description': 'Boot partition'},
|
'83BD6B9D-7F41-11DC-BE0B-001560B84F0F': {'OS': 'FreeBSD', 'Description': 'Boot partition'},
|
||||||
'516E7CB4-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Data partition'},
|
'516E7CB4-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Data partition'},
|
||||||
'516E7CB5-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Swap partition'},
|
'516E7CB5-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Swap partition'},
|
||||||
'516E7CB6-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Unix File System (UFS) partition'},
|
'516E7CB6-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Unix File System (UFS) partition'},
|
||||||
'516E7CB8-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Vinum volume manager partition'},
|
'516E7CB8-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Vinum volume manager partition'},
|
||||||
'516E7CBA-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'ZFS partition'},
|
'516E7CBA-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'ZFS partition'},
|
||||||
'48465300-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Hierarchical File System Plus (HFS+) partition'},
|
'48465300-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Hierarchical File System Plus (HFS+) partition'},
|
||||||
'55465300-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple UFS'},
|
'55465300-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple UFS'},
|
||||||
'6A898CC3-1DD2-11B2-99A6-080020736631': {'OS': 'OS X Darwin', 'Description': 'ZFS'},
|
'6A898CC3-1DD2-11B2-99A6-080020736631': {'OS': 'OS X Darwin', 'Description': 'ZFS'},
|
||||||
'52414944-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple RAID partition'},
|
'52414944-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple RAID partition'},
|
||||||
'52414944-5F4F-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple RAID partition, offline'},
|
'52414944-5F4F-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple RAID partition, offline'},
|
||||||
'426F6F74-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Boot partition (Recovery HD)'},
|
'426F6F74-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Boot partition (Recovery HD)'},
|
||||||
'4C616265-6C00-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Label'},
|
'4C616265-6C00-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Label'},
|
||||||
'5265636F-7665-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple TV Recovery partition'},
|
'5265636F-7665-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple TV Recovery partition'},
|
||||||
'53746F72-6167-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Core Storage (i.e. Lion FileVault) partition'},
|
'53746F72-6167-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Core Storage (i.e. Lion FileVault) partition'},
|
||||||
'6A82CB45-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Boot partition'},
|
'6A82CB45-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Boot partition'},
|
||||||
'6A85CF4D-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Root partition'},
|
'6A85CF4D-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Root partition'},
|
||||||
'6A87C46F-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Swap partition'},
|
'6A87C46F-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Swap partition'},
|
||||||
'6A8B642B-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Backup partition'},
|
'6A8B642B-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Backup partition'},
|
||||||
'6A898CC3-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/usr partition'},
|
'6A898CC3-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/usr partition'},
|
||||||
'6A8EF2E9-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/var partition'},
|
'6A8EF2E9-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/var partition'},
|
||||||
'6A90BA39-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/home partition'},
|
'6A90BA39-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/home partition'},
|
||||||
'6A9283A5-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Alternate sector'},
|
'6A9283A5-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Alternate sector'},
|
||||||
'6A945A3B-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Reserved partition'},
|
'6A945A3B-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Reserved partition'},
|
||||||
'6A9630D1-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
'6A9630D1-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||||
'6A980767-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
'6A980767-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||||
'6A96237F-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
'6A96237F-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||||
'6A8D2AC7-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
'6A8D2AC7-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||||
'49F48D32-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Swap partition'},
|
'49F48D32-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Swap partition'},
|
||||||
'49F48D5A-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'FFS partition'},
|
'49F48D5A-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'FFS partition'},
|
||||||
'49F48D82-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'LFS partition'},
|
'49F48D82-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'LFS partition'},
|
||||||
'49F48DAA-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'RAID partition'},
|
'49F48DAA-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'RAID partition'},
|
||||||
'2DB519C4-B10F-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Concatenated partition'},
|
'2DB519C4-B10F-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Concatenated partition'},
|
||||||
'2DB519EC-B10F-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Encrypted partition'},
|
'2DB519EC-B10F-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Encrypted partition'},
|
||||||
'FE3A2A5D-4F32-41A7-B725-ACCC3285A309': {'OS': 'ChromeOS', 'Description': 'ChromeOS kernel'},
|
'FE3A2A5D-4F32-41A7-B725-ACCC3285A309': {'OS': 'ChromeOS', 'Description': 'ChromeOS kernel'},
|
||||||
'3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC': {'OS': 'ChromeOS', 'Description': 'ChromeOS rootfs'},
|
'3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC': {'OS': 'ChromeOS', 'Description': 'ChromeOS rootfs'},
|
||||||
'2E0A753D-9E48-43B0-8337-B15192CB1B5E': {'OS': 'ChromeOS', 'Description': 'ChromeOS future use'},
|
'2E0A753D-9E48-43B0-8337-B15192CB1B5E': {'OS': 'ChromeOS', 'Description': 'ChromeOS future use'},
|
||||||
'42465331-3BA3-10F1-802A-4861696B7521': {'OS': 'Haiku', 'Description': 'Haiku BFS'},
|
'42465331-3BA3-10F1-802A-4861696B7521': {'OS': 'Haiku', 'Description': 'Haiku BFS'},
|
||||||
'85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Boot partition'},
|
'85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Boot partition'},
|
||||||
'85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Data partition'},
|
'85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Data partition'},
|
||||||
'85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Swap partition'},
|
'85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Swap partition'},
|
||||||
'0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Unix File System (UFS) partition'},
|
'0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Unix File System (UFS) partition'},
|
||||||
'85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Vinum volume manager partition'},
|
'85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Vinum volume manager partition'},
|
||||||
'85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'ZFS partition'},
|
'85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'ZFS partition'},
|
||||||
'45B0969E-9B03-4F30-B4C6-B4B80CEFF106': {'OS': 'Ceph', 'Description': 'Ceph Journal'},
|
'45B0969E-9B03-4F30-B4C6-B4B80CEFF106': {'OS': 'Ceph', 'Description': 'Ceph Journal'},
|
||||||
'45B0969E-9B03-4F30-B4C6-5EC00CEFF106': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt Encrypted Journal'},
|
'45B0969E-9B03-4F30-B4C6-5EC00CEFF106': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt Encrypted Journal'},
|
||||||
'4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D': {'OS': 'Ceph', 'Description': 'Ceph OSD'},
|
'4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D': {'OS': 'Ceph', 'Description': 'Ceph OSD'},
|
||||||
'4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt OSD'},
|
'4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt OSD'},
|
||||||
'89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE': {'OS': 'Ceph', 'Description': 'Ceph disk in creation'},
|
'89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE': {'OS': 'Ceph', 'Description': 'Ceph disk in creation'},
|
||||||
'89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt disk in creation'},
|
'89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt disk in creation'},
|
||||||
'824CC7A0-36A8-11E3-890A-952519AD3F61': {'OS': 'OpenBSD', 'Description': 'Data partition'},
|
'824CC7A0-36A8-11E3-890A-952519AD3F61': {'OS': 'OpenBSD', 'Description': 'Data partition'},
|
||||||
'CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1': {'OS': 'QNX', 'Description': 'Power-safe (QNX6) file system'},
|
'CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1': {'OS': 'QNX', 'Description': 'Power-safe (QNX6) file system'},
|
||||||
'C91818F9-8025-47AF-89D2-F030D7000C2C': {'OS': 'Plan 9', 'Description': 'Plan 9 partition'},
|
'C91818F9-8025-47AF-89D2-F030D7000C2C': {'OS': 'Plan 9', 'Description': 'Plan 9 partition'},
|
||||||
'9D275380-40AD-11DB-BF97-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'vmkcore (coredump partition)'},
|
'9D275380-40AD-11DB-BF97-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'vmkcore (coredump partition)'},
|
||||||
'AA31E02A-400F-11DB-9590-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'VMFS filesystem partition'},
|
'AA31E02A-400F-11DB-9590-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'VMFS filesystem partition'},
|
||||||
'9198EFFC-31C0-11DB-8F78-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'VMware Reserved'},
|
'9198EFFC-31C0-11DB-8F78-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'VMware Reserved'},
|
||||||
'2568845D-2332-4675-BC39-8FA5A4748D15': {'OS': 'Android-IA', 'Description': 'Bootloader'},
|
'2568845D-2332-4675-BC39-8FA5A4748D15': {'OS': 'Android-IA', 'Description': 'Bootloader'},
|
||||||
'114EAFFE-1552-4022-B26E-9B053604CF84': {'OS': 'Android-IA', 'Description': 'Bootloader2'},
|
'114EAFFE-1552-4022-B26E-9B053604CF84': {'OS': 'Android-IA', 'Description': 'Bootloader2'},
|
||||||
'49A4D17F-93A3-45C1-A0DE-F50B2EBE2599': {'OS': 'Android-IA', 'Description': 'Boot'},
|
'49A4D17F-93A3-45C1-A0DE-F50B2EBE2599': {'OS': 'Android-IA', 'Description': 'Boot'},
|
||||||
'4177C722-9E92-4AAB-8644-43502BFD5506': {'OS': 'Android-IA', 'Description': 'Recovery'},
|
'4177C722-9E92-4AAB-8644-43502BFD5506': {'OS': 'Android-IA', 'Description': 'Recovery'},
|
||||||
'EF32A33B-A409-486C-9141-9FFB711F6266': {'OS': 'Android-IA', 'Description': 'Misc'},
|
'EF32A33B-A409-486C-9141-9FFB711F6266': {'OS': 'Android-IA', 'Description': 'Misc'},
|
||||||
'20AC26BE-20B7-11E3-84C5-6CFDB94711E9': {'OS': 'Android-IA', 'Description': 'Metadata'},
|
'20AC26BE-20B7-11E3-84C5-6CFDB94711E9': {'OS': 'Android-IA', 'Description': 'Metadata'},
|
||||||
'38F428E6-D326-425D-9140-6E0EA133647C': {'OS': 'Android-IA', 'Description': 'System'},
|
'38F428E6-D326-425D-9140-6E0EA133647C': {'OS': 'Android-IA', 'Description': 'System'},
|
||||||
'A893EF21-E428-470A-9E55-0668FD91A2D9': {'OS': 'Android-IA', 'Description': 'Cache'},
|
'A893EF21-E428-470A-9E55-0668FD91A2D9': {'OS': 'Android-IA', 'Description': 'Cache'},
|
||||||
'DC76DDA9-5AC1-491C-AF42-A82591580C0D': {'OS': 'Android-IA', 'Description': 'Data'},
|
'DC76DDA9-5AC1-491C-AF42-A82591580C0D': {'OS': 'Android-IA', 'Description': 'Data'},
|
||||||
'EBC597D0-2053-4B15-8B64-E0AAC75F4DB1': {'OS': 'Android-IA', 'Description': 'Persistent'},
|
'EBC597D0-2053-4B15-8B64-E0AAC75F4DB1': {'OS': 'Android-IA', 'Description': 'Persistent'},
|
||||||
'8F68CC74-C5E5-48DA-BE91-A0C8C15E9C80': {'OS': 'Android-IA', 'Description': 'Factory'},
|
'8F68CC74-C5E5-48DA-BE91-A0C8C15E9C80': {'OS': 'Android-IA', 'Description': 'Factory'},
|
||||||
'767941D0-2085-11E3-AD3B-6CFDB94711E9': {'OS': 'Android-IA', 'Description': 'Fastboot / Tertiary'},
|
'767941D0-2085-11E3-AD3B-6CFDB94711E9': {'OS': 'Android-IA', 'Description': 'Fastboot / Tertiary'},
|
||||||
'AC6D7924-EB71-4DF8-B48D-E267B27148FF': {'OS': 'Android-IA', 'Description': 'OEM'},
|
'AC6D7924-EB71-4DF8-B48D-E267B27148FF': {'OS': 'Android-IA', 'Description': 'OEM'},
|
||||||
'7412F7D5-A156-4B13-81DC-867174929325': {'OS': 'ONIE', 'Description': 'Boot'},
|
'7412F7D5-A156-4B13-81DC-867174929325': {'OS': 'ONIE', 'Description': 'Boot'},
|
||||||
'D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149': {'OS': 'ONIE', 'Description': 'Config'},
|
'D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149': {'OS': 'ONIE', 'Description': 'Config'},
|
||||||
'9E1A2D38-C612-4316-AA26-8B49521E5A8B': {'OS': 'PowerPC', 'Description': 'PReP boot'},
|
'9E1A2D38-C612-4316-AA26-8B49521E5A8B': {'OS': 'PowerPC', 'Description': 'PReP boot'},
|
||||||
'BC13C2FF-59E6-4262-A352-B275FD6F7172': {'OS': 'Freedesktop', 'Description': 'Extended Boot Partition ($BOOT)'},
|
'BC13C2FF-59E6-4262-A352-B275FD6F7172': {'OS': 'Freedesktop', 'Description': 'Extended Boot Partition ($BOOT)'},
|
||||||
}
|
}
|
||||||
|
|
||||||
def lookup_guid(guid):
|
def lookup_guid(guid):
|
||||||
return PARTITION_UIDS.get(guid.upper(), None)
|
return PARTITION_UIDS.get(guid.upper(), None)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
|
|
@ -1,111 +1,111 @@
|
||||||
# Wizard Kit: Functions - Product Keys
|
# Wizard Kit: Functions - Product Keys
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
|
|
||||||
# Regex
|
# Regex
|
||||||
REGEX_REGISTRY_DIRS = re.compile(
|
REGEX_REGISTRY_DIRS = re.compile(
|
||||||
r'^(config$|RegBack$|System32$|Transfer|Win)',
|
r'^(config$|RegBack$|System32$|Transfer|Win)',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
REGEX_SOFTWARE_HIVE = re.compile(r'^Software$', re.IGNORECASE)
|
REGEX_SOFTWARE_HIVE = re.compile(r'^Software$', re.IGNORECASE)
|
||||||
|
|
||||||
def extract_keys():
|
def extract_keys():
|
||||||
"""Extract keys from provided hives and return a dict."""
|
"""Extract keys from provided hives and return a dict."""
|
||||||
keys = {}
|
keys = {}
|
||||||
|
|
||||||
# Extract keys
|
# Extract keys
|
||||||
extract_item('ProduKey', silent=True)
|
extract_item('ProduKey', silent=True)
|
||||||
for hive in find_software_hives():
|
for hive in find_software_hives():
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['ProduKey'],
|
global_vars['Tools']['ProduKey'],
|
||||||
'/IEKeys', '0',
|
'/IEKeys', '0',
|
||||||
'/WindowsKeys', '1',
|
'/WindowsKeys', '1',
|
||||||
'/OfficeKeys', '1',
|
'/OfficeKeys', '1',
|
||||||
'/ExtractEdition', '1',
|
'/ExtractEdition', '1',
|
||||||
'/nosavereg',
|
'/nosavereg',
|
||||||
'/regfile', hive,
|
'/regfile', hive,
|
||||||
'/scomma', '']
|
'/scomma', '']
|
||||||
try:
|
try:
|
||||||
out = run_program(cmd)
|
out = run_program(cmd)
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
# Ignore and return empty dict
|
# Ignore and return empty dict
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
for line in out.stdout.decode().splitlines():
|
for line in out.stdout.decode().splitlines():
|
||||||
# Add key to keys under product only if unique
|
# Add key to keys under product only if unique
|
||||||
tmp = line.split(',')
|
tmp = line.split(',')
|
||||||
product = tmp[0]
|
product = tmp[0]
|
||||||
key = tmp[2]
|
key = tmp[2]
|
||||||
if product not in keys:
|
if product not in keys:
|
||||||
keys[product] = []
|
keys[product] = []
|
||||||
if key not in keys[product]:
|
if key not in keys[product]:
|
||||||
keys[product].append(key)
|
keys[product].append(key)
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
def list_clientdir_keys():
|
def list_clientdir_keys():
|
||||||
"""List product keys found in hives inside the ClientDir."""
|
"""List product keys found in hives inside the ClientDir."""
|
||||||
keys = extract_keys()
|
keys = extract_keys()
|
||||||
key_list = []
|
key_list = []
|
||||||
if keys:
|
if keys:
|
||||||
for product in sorted(keys):
|
for product in sorted(keys):
|
||||||
key_list.append(product)
|
key_list.append(product)
|
||||||
for key in sorted(keys[product]):
|
for key in sorted(keys[product]):
|
||||||
key_list.append(' {key}'.format(key=key))
|
key_list.append(' {key}'.format(key=key))
|
||||||
else:
|
else:
|
||||||
key_list.append('No keys found.')
|
key_list.append('No keys found.')
|
||||||
|
|
||||||
return key_list
|
return key_list
|
||||||
|
|
||||||
def find_software_hives():
|
def find_software_hives():
|
||||||
"""Search for transferred SW hives and return a list."""
|
"""Search for transferred SW hives and return a list."""
|
||||||
hives = []
|
hives = []
|
||||||
search_paths = [global_vars['ClientDir']]
|
search_paths = [global_vars['ClientDir']]
|
||||||
|
|
||||||
while len(search_paths) > 0:
|
while len(search_paths) > 0:
|
||||||
for item in os.scandir(search_paths.pop(0)):
|
for item in os.scandir(search_paths.pop(0)):
|
||||||
if item.is_dir() and REGEX_REGISTRY_DIRS.search(item.name):
|
if item.is_dir() and REGEX_REGISTRY_DIRS.search(item.name):
|
||||||
search_paths.append(item.path)
|
search_paths.append(item.path)
|
||||||
if item.is_file() and REGEX_SOFTWARE_HIVE.search(item.name):
|
if item.is_file() and REGEX_SOFTWARE_HIVE.search(item.name):
|
||||||
hives.append(item.path)
|
hives.append(item.path)
|
||||||
|
|
||||||
return hives
|
return hives
|
||||||
|
|
||||||
def get_product_keys():
|
def get_product_keys():
|
||||||
"""List product keys from saved report."""
|
"""List product keys from saved report."""
|
||||||
keys = []
|
keys = []
|
||||||
log_file = r'{LogDir}\Product Keys (ProduKey).txt'.format(**global_vars)
|
log_file = r'{LogDir}\Product Keys (ProduKey).txt'.format(**global_vars)
|
||||||
with open (log_file, 'r') as f:
|
with open (log_file, 'r') as f:
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
if re.search(r'^Product Name', line):
|
if re.search(r'^Product Name', line):
|
||||||
line = re.sub(r'^Product Name\s+:\s+(.*)', r'\1', line.strip())
|
line = re.sub(r'^Product Name\s+:\s+(.*)', r'\1', line.strip())
|
||||||
keys.append(line)
|
keys.append(line)
|
||||||
|
|
||||||
if keys:
|
if keys:
|
||||||
return keys
|
return keys
|
||||||
else:
|
else:
|
||||||
return ['No product keys found']
|
return ['No product keys found']
|
||||||
|
|
||||||
def run_produkey():
|
def run_produkey():
|
||||||
"""Run ProduKey and save report in the ClientDir."""
|
"""Run ProduKey and save report in the ClientDir."""
|
||||||
extract_item('ProduKey', silent=True)
|
extract_item('ProduKey', silent=True)
|
||||||
log_file = r'{LogDir}\Product Keys (ProduKey).txt'.format(**global_vars)
|
log_file = r'{LogDir}\Product Keys (ProduKey).txt'.format(**global_vars)
|
||||||
if not os.path.exists(log_file):
|
if not os.path.exists(log_file):
|
||||||
# Clear current configuration
|
# Clear current configuration
|
||||||
for config in ['ProduKey.cfg', 'ProduKey64.cfg']:
|
for config in ['ProduKey.cfg', 'ProduKey64.cfg']:
|
||||||
config = r'{BinDir}\ProduKey\{config}'.format(
|
config = r'{BinDir}\ProduKey\{config}'.format(
|
||||||
config=config, **global_vars)
|
config=config, **global_vars)
|
||||||
try:
|
try:
|
||||||
if os.path.exists(config):
|
if os.path.exists(config):
|
||||||
os.remove(config)
|
os.remove(config)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['ProduKey'],
|
global_vars['Tools']['ProduKey'],
|
||||||
'/nosavereg',
|
'/nosavereg',
|
||||||
'/stext',
|
'/stext',
|
||||||
log_file]
|
log_file]
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
|
|
@ -1,126 +1,126 @@
|
||||||
# Wizard Kit: Functions - Repairs
|
# Wizard Kit: Functions - Repairs
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
|
|
||||||
def run_chkdsk(repair=False):
|
def run_chkdsk(repair=False):
|
||||||
"""Run CHKDSK scan or schedule offline repairs."""
|
"""Run CHKDSK scan or schedule offline repairs."""
|
||||||
if repair:
|
if repair:
|
||||||
run_chkdsk_offline()
|
run_chkdsk_offline()
|
||||||
else:
|
else:
|
||||||
run_chkdsk_scan()
|
run_chkdsk_scan()
|
||||||
|
|
||||||
def run_chkdsk_scan():
|
def run_chkdsk_scan():
|
||||||
"""Run CHKDSK in a "split window" and report errors."""
|
"""Run CHKDSK in a "split window" and report errors."""
|
||||||
if global_vars['OS']['Version'] in ['8', '10']:
|
if global_vars['OS']['Version'] in ['8', '10']:
|
||||||
cmd = ['chkdsk', global_vars['Env']['SYSTEMDRIVE'], '/scan', '/perf']
|
cmd = ['chkdsk', global_vars['Env']['SYSTEMDRIVE'], '/scan', '/perf']
|
||||||
else:
|
else:
|
||||||
cmd = ['chkdsk', global_vars['Env']['SYSTEMDRIVE']]
|
cmd = ['chkdsk', global_vars['Env']['SYSTEMDRIVE']]
|
||||||
out = run_program(cmd, check=False)
|
out = run_program(cmd, check=False)
|
||||||
# retcode == 0: no issues
|
# retcode == 0: no issues
|
||||||
# retcode == 1: fixed issues (also happens when chkdsk.exe is killed?)
|
# retcode == 1: fixed issues (also happens when chkdsk.exe is killed?)
|
||||||
# retcode == 2: issues
|
# retcode == 2: issues
|
||||||
if int(out.returncode) > 0:
|
if int(out.returncode) > 0:
|
||||||
# print_error(' ERROR: CHKDSK encountered errors')
|
# print_error(' ERROR: CHKDSK encountered errors')
|
||||||
raise GenericError
|
raise GenericError
|
||||||
|
|
||||||
# Save stderr
|
# Save stderr
|
||||||
with open(r'{LogDir}\CHKDSK.err'.format(**global_vars), 'a') as f:
|
with open(r'{LogDir}\CHKDSK.err'.format(**global_vars), 'a') as f:
|
||||||
for line in out.stderr.decode().splitlines():
|
for line in out.stderr.decode().splitlines():
|
||||||
f.write(line.strip() + '\n')
|
f.write(line.strip() + '\n')
|
||||||
# Save stdout
|
# Save stdout
|
||||||
with open(r'{LogDir}\CHKDSK.log'.format(**global_vars), 'a') as f:
|
with open(r'{LogDir}\CHKDSK.log'.format(**global_vars), 'a') as f:
|
||||||
for line in out.stdout.decode().splitlines():
|
for line in out.stdout.decode().splitlines():
|
||||||
f.write(line.strip() + '\n')
|
f.write(line.strip() + '\n')
|
||||||
|
|
||||||
def run_chkdsk_offline():
|
def run_chkdsk_offline():
|
||||||
"""Set filesystem 'dirty bit' to force a chkdsk during next boot."""
|
"""Set filesystem 'dirty bit' to force a chkdsk during next boot."""
|
||||||
cmd = [
|
cmd = [
|
||||||
'fsutil', 'dirty',
|
'fsutil', 'dirty',
|
||||||
'set',
|
'set',
|
||||||
global_vars['Env']['SYSTEMDRIVE']]
|
global_vars['Env']['SYSTEMDRIVE']]
|
||||||
out = run_program(cmd, check=False)
|
out = run_program(cmd, check=False)
|
||||||
if int(out.returncode) > 0:
|
if int(out.returncode) > 0:
|
||||||
raise GenericError
|
raise GenericError
|
||||||
|
|
||||||
def run_dism(repair=False):
|
def run_dism(repair=False):
|
||||||
"""Run DISM /RestoreHealth, then /CheckHealth, and then report errors."""
|
"""Run DISM /RestoreHealth, then /CheckHealth, and then report errors."""
|
||||||
if global_vars['OS']['Version'] in ['8', '10']:
|
if global_vars['OS']['Version'] in ['8', '10']:
|
||||||
if repair:
|
if repair:
|
||||||
# Restore Health
|
# Restore Health
|
||||||
cmd = [
|
cmd = [
|
||||||
'DISM', '/Online',
|
'DISM', '/Online',
|
||||||
'/Cleanup-Image', '/RestoreHealth',
|
'/Cleanup-Image', '/RestoreHealth',
|
||||||
r'/LogPath:"{LogDir}\DISM_RestoreHealth.log"'.format(
|
r'/LogPath:"{LogDir}\DISM_RestoreHealth.log"'.format(
|
||||||
**global_vars),
|
**global_vars),
|
||||||
'-new_console:n', '-new_console:s33V']
|
'-new_console:n', '-new_console:s33V']
|
||||||
else:
|
else:
|
||||||
# Scan Health
|
# Scan Health
|
||||||
cmd = [
|
cmd = [
|
||||||
'DISM', '/Online',
|
'DISM', '/Online',
|
||||||
'/Cleanup-Image', '/ScanHealth',
|
'/Cleanup-Image', '/ScanHealth',
|
||||||
r'/LogPath:"{LogDir}\DISM_ScanHealth.log"'.format(
|
r'/LogPath:"{LogDir}\DISM_ScanHealth.log"'.format(
|
||||||
**global_vars),
|
**global_vars),
|
||||||
'-new_console:n', '-new_console:s33V']
|
'-new_console:n', '-new_console:s33V']
|
||||||
run_program(cmd, pipe=False, check=False, shell=True)
|
run_program(cmd, pipe=False, check=False, shell=True)
|
||||||
wait_for_process('dism')
|
wait_for_process('dism')
|
||||||
# Now check health
|
# Now check health
|
||||||
cmd = [
|
cmd = [
|
||||||
'DISM', '/Online',
|
'DISM', '/Online',
|
||||||
'/Cleanup-Image', '/CheckHealth',
|
'/Cleanup-Image', '/CheckHealth',
|
||||||
r'/LogPath:"{LogDir}\DISM_CheckHealth.log"'.format(**global_vars)]
|
r'/LogPath:"{LogDir}\DISM_CheckHealth.log"'.format(**global_vars)]
|
||||||
result = run_program(cmd, shell=True).stdout.decode()
|
result = run_program(cmd, shell=True).stdout.decode()
|
||||||
# Check result
|
# Check result
|
||||||
if 'no component store corruption detected' not in result.lower():
|
if 'no component store corruption detected' not in result.lower():
|
||||||
raise GenericError
|
raise GenericError
|
||||||
else:
|
else:
|
||||||
raise UnsupportedOSError
|
raise UnsupportedOSError
|
||||||
|
|
||||||
def run_kvrt():
|
def run_kvrt():
|
||||||
"""Run KVRT."""
|
"""Run KVRT."""
|
||||||
extract_item('KVRT', silent=True)
|
extract_item('KVRT', silent=True)
|
||||||
os.makedirs(global_vars['QuarantineDir'], exist_ok=True)
|
os.makedirs(global_vars['QuarantineDir'], exist_ok=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['KVRT'],
|
global_vars['Tools']['KVRT'],
|
||||||
'-accepteula', '-dontcryptsupportinfo', '-fixednames',
|
'-accepteula', '-dontcryptsupportinfo', '-fixednames',
|
||||||
'-d', global_vars['QuarantineDir'],
|
'-d', global_vars['QuarantineDir'],
|
||||||
'-processlevel', '3']
|
'-processlevel', '3']
|
||||||
popen_program(cmd, pipe=False)
|
popen_program(cmd, pipe=False)
|
||||||
|
|
||||||
def run_sfc_scan():
|
def run_sfc_scan():
|
||||||
"""Run SFC in a "split window" and report errors."""
|
"""Run SFC in a "split window" and report errors."""
|
||||||
cmd = [
|
cmd = [
|
||||||
r'{SYSTEMROOT}\System32\sfc.exe'.format(**global_vars['Env']),
|
r'{SYSTEMROOT}\System32\sfc.exe'.format(**global_vars['Env']),
|
||||||
'/scannow']
|
'/scannow']
|
||||||
out = run_program(cmd, check=False)
|
out = run_program(cmd, check=False)
|
||||||
# Save stderr
|
# Save stderr
|
||||||
with open(r'{LogDir}\SFC.err'.format(**global_vars), 'a') as f:
|
with open(r'{LogDir}\SFC.err'.format(**global_vars), 'a') as f:
|
||||||
for line in out.stderr.decode('utf-8', 'ignore').splitlines():
|
for line in out.stderr.decode('utf-8', 'ignore').splitlines():
|
||||||
f.write(line.strip() + '\n')
|
f.write(line.strip() + '\n')
|
||||||
# Save stdout
|
# Save stdout
|
||||||
with open(r'{LogDir}\SFC.log'.format(**global_vars), 'a') as f:
|
with open(r'{LogDir}\SFC.log'.format(**global_vars), 'a') as f:
|
||||||
for line in out.stdout.decode('utf-8', 'ignore').splitlines():
|
for line in out.stdout.decode('utf-8', 'ignore').splitlines():
|
||||||
f.write(line.strip() + '\n')
|
f.write(line.strip() + '\n')
|
||||||
# Check result
|
# Check result
|
||||||
log_text = out.stdout.decode('utf-8', 'ignore').replace('\0', '')
|
log_text = out.stdout.decode('utf-8', 'ignore').replace('\0', '')
|
||||||
if re.findall(r'did\s+not\s+find\s+any\s+integrity\s+violations', log_text):
|
if re.findall(r'did\s+not\s+find\s+any\s+integrity\s+violations', log_text):
|
||||||
pass
|
pass
|
||||||
elif re.findall(r'successfully\s+repaired\s+them', log_text):
|
elif re.findall(r'successfully\s+repaired\s+them', log_text):
|
||||||
raise GenericRepair
|
raise GenericRepair
|
||||||
else:
|
else:
|
||||||
raise GenericError
|
raise GenericError
|
||||||
|
|
||||||
def run_tdsskiller():
|
def run_tdsskiller():
|
||||||
"""Run TDSSKiller."""
|
"""Run TDSSKiller."""
|
||||||
extract_item('TDSSKiller', silent=True)
|
extract_item('TDSSKiller', silent=True)
|
||||||
os.makedirs(r'{QuarantineDir}\TDSSKiller'.format(
|
os.makedirs(r'{QuarantineDir}\TDSSKiller'.format(
|
||||||
**global_vars), exist_ok=True)
|
**global_vars), exist_ok=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['TDSSKiller'],
|
global_vars['Tools']['TDSSKiller'],
|
||||||
'-l', r'{LogDir}\TDSSKiller.log'.format(**global_vars),
|
'-l', r'{LogDir}\TDSSKiller.log'.format(**global_vars),
|
||||||
'-qpath', r'{QuarantineDir}\TDSSKiller'.format(**global_vars),
|
'-qpath', r'{QuarantineDir}\TDSSKiller'.format(**global_vars),
|
||||||
'-accepteula', '-accepteulaksn',
|
'-accepteula', '-accepteulaksn',
|
||||||
'-dcexact', '-tdlfs']
|
'-dcexact', '-tdlfs']
|
||||||
run_program(cmd, pipe=False)
|
run_program(cmd, pipe=False)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
|
|
@ -1,277 +1,272 @@
|
||||||
# Wizard Kit: Functions - Setup
|
# Wizard Kit: Functions - Setup
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
HKCU = winreg.HKEY_CURRENT_USER
|
HKCU = winreg.HKEY_CURRENT_USER
|
||||||
HKLM = winreg.HKEY_LOCAL_MACHINE
|
HKLM = winreg.HKEY_LOCAL_MACHINE
|
||||||
SETTINGS_CLASSIC_START = {
|
SETTINGS_CLASSIC_START = {
|
||||||
r'Software\IvoSoft\ClassicShell\Settings': {},
|
r'Software\IvoSoft\ClassicShell\Settings': {},
|
||||||
r'Software\IvoSoft\ClassicStartMenu': {
|
r'Software\IvoSoft\ClassicStartMenu': {
|
||||||
'DWORD Items': {'ShowedStyle2': 1},
|
'DWORD Items': {'ShowedStyle2': 1},
|
||||||
},
|
},
|
||||||
r'Software\IvoSoft\ClassicStartMenu\MRU': {},
|
r'Software\IvoSoft\ClassicStartMenu\MRU': {},
|
||||||
r'Software\IvoSoft\ClassicStartMenu\Settings': {
|
r'Software\IvoSoft\ClassicStartMenu\Settings': {
|
||||||
'DWORD Items': {'SkipMetro': 1},
|
'DWORD Items': {'SkipMetro': 1},
|
||||||
'SZ Items': {
|
'SZ Items': {
|
||||||
'MenuStyle': 'Win7',
|
'MenuStyle': 'Win7',
|
||||||
'RecentPrograms': 'Recent',
|
'RecentPrograms': 'Recent',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
SETTINGS_EXPLORER_SYSTEM = {
|
SETTINGS_EXPLORER_SYSTEM = {
|
||||||
# Disable Telemetry
|
# Disable Telemetry
|
||||||
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection': {
|
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection': {
|
||||||
'DWORD Items': {'AllowTelemetry': 0},
|
'DWORD Items': {'AllowTelemetry': 0},
|
||||||
},
|
},
|
||||||
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection': {
|
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection': {
|
||||||
'DWORD Items': {'AllowTelemetry': 0},
|
'DWORD Items': {'AllowTelemetry': 0},
|
||||||
'WOW64_32': True,
|
'WOW64_32': True,
|
||||||
},
|
},
|
||||||
r'SOFTWARE\Policies\Microsoft\Windows\DataCollection': {
|
r'SOFTWARE\Policies\Microsoft\Windows\DataCollection': {
|
||||||
'DWORD Items': {'AllowTelemetry': 0},
|
'DWORD Items': {'AllowTelemetry': 0},
|
||||||
},
|
},
|
||||||
# Disable Wi-Fi Sense
|
# Disable Wi-Fi Sense
|
||||||
r'Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting': {
|
r'Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting': {
|
||||||
'DWORD Items': {'Value': 0},
|
'DWORD Items': {'Value': 0},
|
||||||
},
|
},
|
||||||
r'Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots': {
|
r'Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots': {
|
||||||
'DWORD Items': {'Value': 0},
|
'DWORD Items': {'Value': 0},
|
||||||
},
|
},
|
||||||
# Disable Location Tracking
|
# Disable Location Tracking
|
||||||
r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}': {
|
r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}': {
|
||||||
'DWORD Items': {'SensorPermissionState': 0},
|
'DWORD Items': {'SensorPermissionState': 0},
|
||||||
},
|
},
|
||||||
r'System\CurrentControlSet\Services\lfsvc\Service\Configuration': {
|
r'System\CurrentControlSet\Services\lfsvc\Service\Configuration': {
|
||||||
'Status': {'Value': 0},
|
'Status': {'Value': 0},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
SETTINGS_EXPLORER_USER = {
|
SETTINGS_EXPLORER_USER = {
|
||||||
# Disable Cortana
|
# Disable Cortana
|
||||||
r'Software\Microsoft\Personalization\Settings': {
|
r'Software\Microsoft\Personalization\Settings': {
|
||||||
'DWORD Items': {'AcceptedPrivacyPolicy': 0},
|
'DWORD Items': {'AcceptedPrivacyPolicy': 0},
|
||||||
},
|
},
|
||||||
r'Software\Microsoft\InputPersonalization': {
|
r'Software\Microsoft\InputPersonalization': {
|
||||||
'DWORD Items': {
|
'DWORD Items': {
|
||||||
'RestrictImplicitTextCollection': 1,
|
'RestrictImplicitTextCollection': 1,
|
||||||
'RestrictImplicitInkCollection': 1
|
'RestrictImplicitInkCollection': 1
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
r'Software\Microsoft\InputPersonalization\TrainedDataStore': {
|
r'Software\Microsoft\InputPersonalization\TrainedDataStore': {
|
||||||
'DWORD Items': {'HarvestContacts': 1},
|
'DWORD Items': {'HarvestContacts': 1},
|
||||||
},
|
},
|
||||||
# Hide Search button / box
|
# Hide Search button / box
|
||||||
r'Software\Microsoft\Windows\CurrentVersion\Search': {
|
r'Software\Microsoft\Windows\CurrentVersion\Search': {
|
||||||
'DWORD Items': {'SearchboxTaskbarMode': 0},
|
'DWORD Items': {'SearchboxTaskbarMode': 0},
|
||||||
},
|
},
|
||||||
# Change default Explorer view to "Computer"
|
# Change default Explorer view to "Computer"
|
||||||
r'Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced': {
|
r'Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced': {
|
||||||
'DWORD Items': {'LaunchTo': 1},
|
'DWORD Items': {'LaunchTo': 1},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
SETTINGS_GOOGLE_CHROME = {
|
SETTINGS_GOOGLE_CHROME = {
|
||||||
r'Software\Google\Chrome\Extensions': {
|
r'Software\Google\Chrome\Extensions': {
|
||||||
'WOW64_32': True,
|
'WOW64_32': True,
|
||||||
},
|
},
|
||||||
r'Software\Google\Chrome\Extensions\cjpalhdlnbpafiamejdnhcphjbkeiagm': {
|
r'Software\Google\Chrome\Extensions\cjpalhdlnbpafiamejdnhcphjbkeiagm': {
|
||||||
'SZ Items': {
|
'SZ Items': {
|
||||||
'update_url': 'https://clients2.google.com/service/update2/crx'},
|
'update_url': 'https://clients2.google.com/service/update2/crx'},
|
||||||
'WOW64_32': True,
|
'WOW64_32': True,
|
||||||
},
|
},
|
||||||
r'Software\Google\Chrome\Extensions\pgdnlhfefecpicbbihgmbmffkjpaplco': {
|
r'Software\Google\Chrome\Extensions\pgdnlhfefecpicbbihgmbmffkjpaplco': {
|
||||||
'SZ Items': {
|
'SZ Items': {
|
||||||
'update_url': 'https://clients2.google.com/service/update2/crx'},
|
'update_url': 'https://clients2.google.com/service/update2/crx'},
|
||||||
'WOW64_32': True,
|
'WOW64_32': True,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
VCR_REDISTS = [
|
VCR_REDISTS = [
|
||||||
{'Name': 'Visual C++ 2005 SP1 x32...',
|
{'Name': 'Visual C++ 2008 SP1 x32...',
|
||||||
'Cmd': ['msiexec', '/i', r'2005sp1\x86\vcredist.msi',
|
'Cmd': [r'2008sp1\x32\vcredist.exe', '/qb! /norestart']},
|
||||||
'/qb!', '/norestart']},
|
{'Name': 'Visual C++ 2008 SP1 x64...',
|
||||||
{'Name': 'Visual C++ 2005 SP1 x64...',
|
'Cmd': [r'2008sp1\x64\vcredist.exe', '/qb! /norestart']},
|
||||||
'Cmd': ['msiexec', '/i', r'2005sp1\x64\vcredist.msi',
|
{'Name': 'Visual C++ 2010 x32...',
|
||||||
'/qb!', '/norestart']},
|
'Cmd': [r'2010sp1\x32\vcredist.exe', '/passive', '/norestart']},
|
||||||
{'Name': 'Visual C++ 2008 SP1 x32...',
|
{'Name': 'Visual C++ 2010 x64...',
|
||||||
'Cmd': [r'2008sp1\vcredist_x86.exe', '/qb! /norestart']},
|
'Cmd': [r'2010sp1\x64\vcredist.exe', '/passive', '/norestart']},
|
||||||
{'Name': 'Visual C++ 2008 SP1 x64...',
|
{'Name': 'Visual C++ 2012 Update 4 x32...',
|
||||||
'Cmd': [r'2008sp1\vcredist_x64.exe', '/qb! /norestart']},
|
'Cmd': [r'2012u4\x32\vcredist.exe', '/passive', '/norestart']},
|
||||||
{'Name': 'Visual C++ 2010 x32...',
|
{'Name': 'Visual C++ 2012 Update 4 x64...',
|
||||||
'Cmd': [r'2010\vcredist_x86.exe', '/passive', '/norestart']},
|
'Cmd': [r'2012u4\x64\vcredist.exe', '/passive', '/norestart']},
|
||||||
{'Name': 'Visual C++ 2010 x64...',
|
{'Name': 'Visual C++ 2013 x32...',
|
||||||
'Cmd': [r'2010\vcredist_x64.exe', '/passive', '/norestart']},
|
'Cmd': [r'2013\x32\vcredist.exe', '/install',
|
||||||
{'Name': 'Visual C++ 2012 Update 4 x32...',
|
'/passive', '/norestart']},
|
||||||
'Cmd': [r'2012u4\vcredist_x86.exe', '/passive', '/norestart']},
|
{'Name': 'Visual C++ 2013 x64...',
|
||||||
{'Name': 'Visual C++ 2012 Update 4 x64...',
|
'Cmd': [r'2013\x64\vcredist.exe', '/install',
|
||||||
'Cmd': [r'2012u4\vcredist_x64.exe', '/passive', '/norestart']},
|
'/passive', '/norestart']},
|
||||||
{'Name': 'Visual C++ 2013 x32...',
|
{'Name': 'Visual C++ 2017 x32...',
|
||||||
'Cmd': [r'2013\vcredist_x86.exe', '/install',
|
'Cmd': [r'2017\x32\vcredist.exe', '/install',
|
||||||
'/passive', '/norestart']},
|
'/passive', '/norestart']},
|
||||||
{'Name': 'Visual C++ 2013 x64...',
|
{'Name': 'Visual C++ 2017 x64...',
|
||||||
'Cmd': [r'2013\vcredist_x64.exe', '/install',
|
'Cmd': [r'2017\x64\vcredist.exe', '/install',
|
||||||
'/passive', '/norestart']},
|
'/passive', '/norestart']},
|
||||||
{'Name': 'Visual C++ 2015 Update 3 x32...',
|
]
|
||||||
'Cmd': [r'2015u3\vc_redist.x86.exe', '/install',
|
|
||||||
'/passive', '/norestart']},
|
def config_classicstart():
|
||||||
{'Name': 'Visual C++ 2015 Update 3 x64...',
|
"""Configure ClassicStart."""
|
||||||
'Cmd': [r'2015u3\vc_redist.x64.exe', '/install',
|
# User level, not system level
|
||||||
'/passive', '/norestart']}]
|
cs_exe = r'{PROGRAMFILES}\Classic Shell\ClassicStartMenu.exe'.format(
|
||||||
|
**global_vars['Env'])
|
||||||
def config_classicstart():
|
skin = r'{PROGRAMFILES}\Classic Shell\Skins\Metro-Win10-Black.skin7'.format(
|
||||||
"""Configure ClassicStart."""
|
**global_vars['Env'])
|
||||||
# User level, not system level
|
extract_item('ClassicStartSkin', silent=True)
|
||||||
cs_exe = r'{PROGRAMFILES}\Classic Shell\ClassicStartMenu.exe'.format(
|
|
||||||
**global_vars['Env'])
|
# Stop Classic Start
|
||||||
skin = r'{PROGRAMFILES}\Classic Shell\Skins\Metro-Win10-Black.skin7'.format(
|
run_program([cs_exe, '-exit'], check=False)
|
||||||
**global_vars['Env'])
|
sleep(1)
|
||||||
extract_item('ClassicStartSkin', silent=True)
|
kill_process('ClassicStartMenu.exe')
|
||||||
|
|
||||||
# Stop Classic Start
|
# Configure
|
||||||
run_program([cs_exe, '-exit'], check=False)
|
write_registry_settings(SETTINGS_CLASSIC_START, all_users=False)
|
||||||
sleep(1)
|
if global_vars['OS']['Version'] == '10' and os.path.exists(skin):
|
||||||
kill_process('ClassicStartMenu.exe')
|
# Enable Win10 theme if on Win10
|
||||||
|
key_path = r'Software\IvoSoft\ClassicStartMenu\Settings'
|
||||||
# Configure
|
with winreg.OpenKey(HKCU, key_path, access=winreg.KEY_WRITE) as key:
|
||||||
write_registry_settings(SETTINGS_CLASSIC_START, all_users=False)
|
winreg.SetValueEx(
|
||||||
if global_vars['OS']['Version'] == '10' and os.path.exists(skin):
|
key, 'SkinW7', 0, winreg.REG_SZ, 'Metro-Win10-Black')
|
||||||
# Enable Win10 theme if on Win10
|
winreg.SetValueEx(key, 'SkinVariationW7', 0, winreg.REG_SZ, '')
|
||||||
key_path = r'Software\IvoSoft\ClassicStartMenu\Settings'
|
|
||||||
with winreg.OpenKey(HKCU, key_path, access=winreg.KEY_WRITE) as key:
|
# Pin Browser to Start Menu (Classic)
|
||||||
winreg.SetValueEx(
|
firefox = r'{PROGRAMDATA}\Start Menu\Programs\Mozilla Firefox.lnk'.format(
|
||||||
key, 'SkinW7', 0, winreg.REG_SZ, 'Metro-Win10-Black')
|
**global_vars['Env'])
|
||||||
winreg.SetValueEx(key, 'SkinVariationW7', 0, winreg.REG_SZ, '')
|
chrome = r'{PROGRAMDATA}\Start Menu\Programs\Google Chrome.lnk'.format(
|
||||||
|
**global_vars['Env'])
|
||||||
# Pin Browser to Start Menu (Classic)
|
dest_path = r'{APPDATA}\ClassicShell\Pinned'.format(**global_vars['Env'])
|
||||||
firefox = r'{PROGRAMDATA}\Start Menu\Programs\Mozilla Firefox.lnk'.format(
|
source = None
|
||||||
**global_vars['Env'])
|
dest = None
|
||||||
chrome = r'{PROGRAMDATA}\Start Menu\Programs\Google Chrome.lnk'.format(
|
if os.path.exists(firefox):
|
||||||
**global_vars['Env'])
|
source = firefox
|
||||||
dest_path = r'{APPDATA}\ClassicShell\Pinned'.format(**global_vars['Env'])
|
dest = r'{}\Mozilla Firefox.lnk'.format(dest_path)
|
||||||
source = None
|
elif os.path.exists(chrome):
|
||||||
dest = None
|
source = chrome
|
||||||
if os.path.exists(firefox):
|
dest = r'{}\Google Chrome.lnk'.format(dest_path)
|
||||||
source = firefox
|
if source:
|
||||||
dest = r'{}\Mozilla Firefox.lnk'.format(dest_path)
|
try:
|
||||||
elif os.path.exists(chrome):
|
os.makedirs(dest_path, exist_ok=True)
|
||||||
source = chrome
|
shutil.copy(source, dest)
|
||||||
dest = r'{}\Google Chrome.lnk'.format(dest_path)
|
except Exception:
|
||||||
if source:
|
pass # Meh, it's fine without
|
||||||
try:
|
|
||||||
os.makedirs(dest_path, exist_ok=True)
|
# (Re)start Classic Start
|
||||||
shutil.copy(source, dest)
|
run_program([cs_exe, '-exit'], check=False)
|
||||||
except Exception:
|
sleep(1)
|
||||||
pass # Meh, it's fine without
|
kill_process('ClassicStartMenu.exe')
|
||||||
|
sleep(1)
|
||||||
# (Re)start Classic Start
|
popen_program(cs_exe)
|
||||||
run_program([cs_exe, '-exit'], check=False)
|
|
||||||
sleep(1)
|
def write_registry_settings(settings, all_users=False):
|
||||||
kill_process('ClassicStartMenu.exe')
|
"""Write registry values from custom dict of dicts."""
|
||||||
sleep(1)
|
hive = HKCU
|
||||||
popen_program(cs_exe)
|
if all_users:
|
||||||
|
hive = HKLM
|
||||||
def write_registry_settings(settings, all_users=False):
|
for k, v in settings.items():
|
||||||
"""Write registry values from custom dict of dicts."""
|
# CreateKey
|
||||||
hive = HKCU
|
access = winreg.KEY_WRITE
|
||||||
if all_users:
|
if 'WOW64_32' in v:
|
||||||
hive = HKLM
|
access = access | winreg.KEY_WOW64_32KEY
|
||||||
for k, v in settings.items():
|
winreg.CreateKeyEx(hive, k, 0, access)
|
||||||
# CreateKey
|
|
||||||
access = winreg.KEY_WRITE
|
# Create values
|
||||||
if 'WOW64_32' in v:
|
with winreg.OpenKeyEx(hive, k, 0, access) as key:
|
||||||
access = access | winreg.KEY_WOW64_32KEY
|
for name, value in v.get('DWORD Items', {}).items():
|
||||||
winreg.CreateKeyEx(hive, k, 0, access)
|
winreg.SetValueEx(key, name, 0, winreg.REG_DWORD, value)
|
||||||
|
for name, value in v.get('SZ Items', {}).items():
|
||||||
# Create values
|
winreg.SetValueEx(key, name, 0, winreg.REG_SZ, value)
|
||||||
with winreg.OpenKeyEx(hive, k, 0, access) as key:
|
|
||||||
for name, value in v.get('DWORD Items', {}).items():
|
def config_explorer_system():
|
||||||
winreg.SetValueEx(key, name, 0, winreg.REG_DWORD, value)
|
"""Configure Windows Explorer for all users via Registry settings."""
|
||||||
for name, value in v.get('SZ Items', {}).items():
|
write_registry_settings(SETTINGS_EXPLORER_SYSTEM, all_users=True)
|
||||||
winreg.SetValueEx(key, name, 0, winreg.REG_SZ, value)
|
|
||||||
|
def config_explorer_user():
|
||||||
def config_explorer_system():
|
"""Configure Windows Explorer for current user via Registry settings."""
|
||||||
"""Configure Windows Explorer for all users via Registry settings."""
|
write_registry_settings(SETTINGS_EXPLORER_USER, all_users=False)
|
||||||
write_registry_settings(SETTINGS_EXPLORER_SYSTEM, all_users=True)
|
|
||||||
|
def update_clock():
|
||||||
def config_explorer_user():
|
"""Set Timezone and sync clock."""
|
||||||
"""Configure Windows Explorer for current user via Registry settings."""
|
run_program(['tzutil' ,'/s', TIME_ZONE], check=False)
|
||||||
write_registry_settings(SETTINGS_EXPLORER_USER, all_users=False)
|
run_program(['net', 'stop', 'w32ime'], check=False)
|
||||||
|
run_program(
|
||||||
def update_clock():
|
['w32tm', '/config', '/syncfromflags:manual',
|
||||||
"""Set Timezone and sync clock."""
|
'/manualpeerlist:"us.pool.ntp.org time.nist.gov time.windows.com"',
|
||||||
run_program(['tzutil' ,'/s', TIME_ZONE], check=False)
|
],
|
||||||
run_program(['net', 'stop', 'w32ime'], check=False)
|
check=False)
|
||||||
run_program(
|
run_program(['net', 'start', 'w32ime'], check=False)
|
||||||
['w32tm', '/config', '/syncfromflags:manual',
|
run_program(['w32tm', '/resync', '/nowait'], check=False)
|
||||||
'/manualpeerlist:"us.pool.ntp.org time.nist.gov time.windows.com"',
|
|
||||||
],
|
# Installations
|
||||||
check=False)
|
def install_adobe_reader():
|
||||||
run_program(['net', 'start', 'w32ime'], check=False)
|
"""Install Adobe Reader."""
|
||||||
run_program(['w32tm', '/resync', '/nowait'], check=False)
|
cmd = [
|
||||||
|
r'{BaseDir}\Installers\Extras\Office\Adobe Reader DC.exe'.format(
|
||||||
# Installations
|
**global_vars),
|
||||||
def install_adobe_reader():
|
'/sAll',
|
||||||
"""Install Adobe Reader."""
|
'/msi', '/norestart', '/quiet',
|
||||||
cmd = [
|
'ALLUSERS=1',
|
||||||
r'{BaseDir}\Installers\Extras\Office\Adobe Reader DC.exe'.format(
|
'EULA_ACCEPT=YES']
|
||||||
**global_vars),
|
try_and_print(message='Adobe Reader DC...', function=run_program, cmd=cmd)
|
||||||
'/sAll',
|
|
||||||
'/msi', '/norestart', '/quiet',
|
def install_chrome_extensions():
|
||||||
'ALLUSERS=1',
|
"""Update registry to 'install' Google Chrome extensions for all users."""
|
||||||
'EULA_ACCEPT=YES']
|
write_registry_settings(SETTINGS_GOOGLE_CHROME, all_users=True)
|
||||||
try_and_print(message='Adobe Reader DC...', function=run_program, cmd=cmd)
|
|
||||||
|
def install_classicstart_skin():
|
||||||
def install_chrome_extensions():
|
"""Extract ClassicStart skin to installation folder."""
|
||||||
"""Update registry to 'install' Google Chrome extensions for all users."""
|
if global_vars['OS']['Version'] not in ['8', '10']:
|
||||||
write_registry_settings(SETTINGS_GOOGLE_CHROME, all_users=True)
|
raise UnsupportedOSError
|
||||||
|
extract_item('ClassicStartSkin', silent=True)
|
||||||
def install_classicstart_skin():
|
source = r'{BinDir}\ClassicStartSkin\Metro-Win10-Black.skin7'.format(
|
||||||
"""Extract ClassicStart skin to installation folder."""
|
**global_vars)
|
||||||
if global_vars['OS']['Version'] not in ['8', '10']:
|
dest_path = r'{PROGRAMFILES}\Classic Shell\Skins'.format(
|
||||||
raise UnsupportedOSError
|
**global_vars['Env'])
|
||||||
extract_item('ClassicStartSkin', silent=True)
|
dest = r'{}\Metro-Win10-Black.skin7'.format(dest_path)
|
||||||
source = r'{BinDir}\ClassicStartSkin\Metro-Win10-Black.skin7'.format(
|
os.makedirs(dest_path, exist_ok=True)
|
||||||
**global_vars)
|
shutil.copy(source, dest)
|
||||||
dest_path = r'{PROGRAMFILES}\Classic Shell\Skins'.format(
|
|
||||||
**global_vars['Env'])
|
def install_firefox_extensions():
|
||||||
dest = r'{}\Metro-Win10-Black.skin7'.format(dest_path)
|
"""Extract Firefox extensions to installation folder."""
|
||||||
os.makedirs(dest_path, exist_ok=True)
|
dist_path = r'{PROGRAMFILES}\Mozilla Firefox\distribution\extensions'.format(
|
||||||
shutil.copy(source, dest)
|
**global_vars['Env'])
|
||||||
|
# Extract extension(s) to distribution folder
|
||||||
def install_firefox_extensions():
|
cmd = [
|
||||||
"""Extract Firefox extensions to installation folder."""
|
global_vars['Tools']['SevenZip'], 'x', '-aos', '-bso0', '-bse0',
|
||||||
dist_path = r'{PROGRAMFILES}\Mozilla Firefox\distribution\extensions'.format(
|
'-p{ArchivePassword}'.format(**global_vars),
|
||||||
**global_vars['Env'])
|
'-o{dist_path}'.format(dist_path=dist_path),
|
||||||
# Extract extension(s) to distribution folder
|
r'{CBinDir}\FirefoxExtensions.7z'.format(**global_vars)]
|
||||||
cmd = [
|
run_program(cmd, check=False)
|
||||||
global_vars['Tools']['SevenZip'], 'x', '-aos', '-bso0', '-bse0',
|
|
||||||
'-p{ArchivePassword}'.format(**global_vars),
|
def install_ninite_bundle(mse=False):
|
||||||
'-o{dist_path}'.format(dist_path=dist_path),
|
"""Run Ninite file(s) based on OS version."""
|
||||||
r'{CBinDir}\FirefoxExtensions.7z'.format(**global_vars)]
|
if global_vars['OS']['Version'] in ['8', '10']:
|
||||||
run_program(cmd, check=False)
|
# Modern selection
|
||||||
|
popen_program(r'{BaseDir}\Installers\Extras\Bundles\Modern.exe'.format(
|
||||||
def install_ninite_bundle(mse=False):
|
**global_vars))
|
||||||
"""Run Ninite file(s) based on OS version."""
|
else:
|
||||||
if global_vars['OS']['Version'] in ['8', '10']:
|
# Legacy selection
|
||||||
# Modern selection
|
if mse:
|
||||||
popen_program(r'{BaseDir}\Installers\Extras\Bundles\Modern.exe'.format(
|
cmd = r'{BaseDir}\Installers\Extras\Security'.format(**global_vars)
|
||||||
**global_vars))
|
cmd += r'\Microsoft Security Essentials.exe'
|
||||||
else:
|
popen_program(cmd)
|
||||||
# Legacy selection
|
popen_program(r'{BaseDir}\Installers\Extras\Bundles\Legacy.exe'.format(
|
||||||
if mse:
|
**global_vars))
|
||||||
cmd = r'{BaseDir}\Installers\Extras\Security'.format(**global_vars)
|
|
||||||
cmd += r'\Microsoft Security Essentials.exe'
|
def install_vcredists():
|
||||||
popen_program(cmd)
|
"""Install all supported Visual C++ runtimes."""
|
||||||
popen_program(r'{BaseDir}\Installers\Extras\Bundles\Legacy.exe'.format(
|
extract_item('_vcredists', silent=True)
|
||||||
**global_vars))
|
prev_dir = os.getcwd()
|
||||||
|
os.chdir(r'{BinDir}\_vcredists'.format(**global_vars))
|
||||||
def install_vcredists():
|
for vcr in VCR_REDISTS:
|
||||||
"""Install all supported Visual C++ runtimes."""
|
try_and_print(message=vcr['Name'], function=run_program, cmd=vcr['Cmd'])
|
||||||
extract_item('_vcredists', silent=True)
|
|
||||||
prev_dir = os.getcwd()
|
os.chdir(prev_dir)
|
||||||
os.chdir(r'{BinDir}\_vcredists'.format(**global_vars))
|
|
||||||
for vcr in VCR_REDISTS:
|
if __name__ == '__main__':
|
||||||
try_and_print(message=vcr['Name'], function=run_program, cmd=vcr['Cmd'])
|
print("This file is not meant to be called directly.")
|
||||||
|
|
||||||
os.chdir(prev_dir)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print("This file is not meant to be called directly.")
|
|
||||||
|
|
|
||||||
893
.bin/Scripts/functions/update.py
Normal file
893
.bin/Scripts/functions/update.py
Normal file
|
|
@ -0,0 +1,893 @@
|
||||||
|
# Wizard Kit: Functions - Build / Update
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from functions.common import *
|
||||||
|
from functions.data import *
|
||||||
|
from settings.launchers import *
|
||||||
|
from settings.music import *
|
||||||
|
from settings.sources import *
|
||||||
|
|
||||||
|
def compress_and_remove_item(item):
|
||||||
|
try:
|
||||||
|
compress_item(item)
|
||||||
|
except:
|
||||||
|
raise GenericError
|
||||||
|
else:
|
||||||
|
remove_item(item.path)
|
||||||
|
|
||||||
|
def compress_item(item):
|
||||||
|
# Prep
|
||||||
|
prev_dir = os.getcwd()
|
||||||
|
dest = '{}.7z'.format(item.path)
|
||||||
|
wd = item.path
|
||||||
|
include_str = '*'
|
||||||
|
if os.path.isfile(wd):
|
||||||
|
wd = os.path.abspath(r'{}\{}'.format(wd, os.path.pardir))
|
||||||
|
include_str = item.name
|
||||||
|
os.chdir(wd)
|
||||||
|
|
||||||
|
# Compress
|
||||||
|
cmd = [
|
||||||
|
global_vars['Tools']['SevenZip'],
|
||||||
|
'a', dest,
|
||||||
|
'-t7z', '-mx=7', '-myx=7', '-ms=on', '-mhe', '-bso0', '-bse0',
|
||||||
|
'-p{}'.format(ARCHIVE_PASSWORD),
|
||||||
|
include_str,
|
||||||
|
]
|
||||||
|
run_program(cmd)
|
||||||
|
|
||||||
|
# Done
|
||||||
|
os.chdir(prev_dir)
|
||||||
|
|
||||||
|
def download_generic(out_dir, out_name, source_url):
|
||||||
|
"""Downloads a file using requests."""
|
||||||
|
## Code based on this Q&A: https://stackoverflow.com/q/16694907
|
||||||
|
### Asked by: https://stackoverflow.com/users/427457/roman-podlinov
|
||||||
|
### Edited by: https://stackoverflow.com/users/657427/christophe-roussy
|
||||||
|
### Using answer: https://stackoverflow.com/a/39217788
|
||||||
|
### Answer from: https://stackoverflow.com/users/4323/john-zwinck
|
||||||
|
os.makedirs(out_dir, exist_ok=True)
|
||||||
|
out_path = '{}/{}'.format(out_dir, out_name)
|
||||||
|
try:
|
||||||
|
r = requests.get(source_url, stream=True)
|
||||||
|
with open(out_path, 'wb') as f:
|
||||||
|
shutil.copyfileobj(r.raw, f)
|
||||||
|
r.close()
|
||||||
|
except:
|
||||||
|
raise GenericError('Failed to download file.')
|
||||||
|
|
||||||
|
def download_to_temp(out_name, source_url):
|
||||||
|
download_generic(global_vars['TmpDir'], out_name, source_url)
|
||||||
|
|
||||||
|
def extract_generic(source, dest, mode='x', sz_args=[]):
|
||||||
|
cmd = [
|
||||||
|
global_vars['Tools']['SevenZip'],
|
||||||
|
mode, source, r'-o{}'.format(dest),
|
||||||
|
'-aoa', '-bso0', '-bse0',
|
||||||
|
]
|
||||||
|
cmd.extend(sz_args)
|
||||||
|
run_program(cmd)
|
||||||
|
|
||||||
|
def extract_temp_to_bin(source, item, mode='x', sz_args=[]):
|
||||||
|
source = r'{}\{}'.format(global_vars['TmpDir'], source)
|
||||||
|
dest = r'{}\{}'.format(global_vars['BinDir'], item)
|
||||||
|
extract_generic(source, dest, mode, sz_args)
|
||||||
|
|
||||||
|
def extract_temp_to_cbin(source, item, mode='x', sz_args=[]):
|
||||||
|
source = r'{}\{}'.format(global_vars['TmpDir'], source)
|
||||||
|
dest = r'{}\{}'.format(global_vars['CBinDir'], item)
|
||||||
|
include_path = r'{}\_include\{}'.format(global_vars['CBinDir'], item)
|
||||||
|
if os.path.exists(include_path):
|
||||||
|
shutil.copytree(include_path, dest)
|
||||||
|
extract_generic(source, dest, mode, sz_args)
|
||||||
|
|
||||||
|
def generate_launcher(section, name, options):
|
||||||
|
# Prep
|
||||||
|
dest = r'{}\{}'.format(global_vars['BaseDir'], section)
|
||||||
|
if section == '(Root)':
|
||||||
|
dest = global_vars['BaseDir']
|
||||||
|
full_path = r'{}\{}.cmd'.format(dest, name)
|
||||||
|
template = r'{}\Scripts\Launcher_Template.cmd'.format(global_vars['BinDir'])
|
||||||
|
|
||||||
|
# Format options
|
||||||
|
f_options = {}
|
||||||
|
for opt in options.keys():
|
||||||
|
# Values need to be a list to support the multi-line extra code sections
|
||||||
|
if opt == 'Extra Code':
|
||||||
|
f_options['rem EXTRA_CODE'] = options['Extra Code']
|
||||||
|
elif re.search(r'^L_\w+', opt, re.IGNORECASE):
|
||||||
|
new_opt = 'set {}='.format(opt)
|
||||||
|
f_options[new_opt] = ['set {}={}'.format(opt, options[opt])]
|
||||||
|
|
||||||
|
# Read template and update using f_options
|
||||||
|
out_text = []
|
||||||
|
with open(template, 'r') as f:
|
||||||
|
for line in f.readlines():
|
||||||
|
# Strip all lines to let Python handle/correct the CRLF endings
|
||||||
|
line = line.strip()
|
||||||
|
if line in f_options:
|
||||||
|
# Extend instead of append to support extra code sections
|
||||||
|
out_text.extend(f_options[line])
|
||||||
|
else:
|
||||||
|
out_text.append(line)
|
||||||
|
|
||||||
|
# Write file
|
||||||
|
os.makedirs(dest, exist_ok=True)
|
||||||
|
with open(full_path, 'w') as f:
|
||||||
|
# f.writelines(out_text)
|
||||||
|
f.write('\n'.join(out_text))
|
||||||
|
|
||||||
|
def remove_item(item_path):
|
||||||
|
if os.path.exists(item_path):
|
||||||
|
if os.path.isdir(item_path):
|
||||||
|
shutil.rmtree(item_path, ignore_errors=True)
|
||||||
|
else:
|
||||||
|
os.remove(item_path)
|
||||||
|
|
||||||
|
def remove_from_kit(item):
|
||||||
|
item_locations = []
|
||||||
|
for p in [global_vars['BinDir'], global_vars['CBinDir']]:
|
||||||
|
item_locations.append(r'{}\{}'.format(p, item))
|
||||||
|
item_locations.append(r'{}\_Drivers\{}'.format(p, item))
|
||||||
|
for item_path in item_locations:
|
||||||
|
remove_item(item_path)
|
||||||
|
|
||||||
|
def remove_from_temp(item):
|
||||||
|
item_path = r'{}\{}'.format(global_vars['TmpDir'], item)
|
||||||
|
remove_item(item_path)
|
||||||
|
|
||||||
|
def resolve_dynamic_url(source_url, regex):
|
||||||
|
"""Scan source_url for a url using the regex provided; returns str."""
|
||||||
|
# Load the download page
|
||||||
|
try:
|
||||||
|
download_page = requests.get(source_url)
|
||||||
|
except Exception:
|
||||||
|
# "Fail silently as the download_to_temp() function will catch it
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Scan for the url using the regex provided
|
||||||
|
url = None
|
||||||
|
for line in download_page.content.decode().splitlines():
|
||||||
|
if re.search(regex, line):
|
||||||
|
url = line.strip()
|
||||||
|
url = re.sub(r'.*(a |)href="([^"]+)".*', r'\2', url)
|
||||||
|
url = re.sub(r".*(a |)href='([^']+)'.*", r'\2', url)
|
||||||
|
break
|
||||||
|
|
||||||
|
# Return
|
||||||
|
return url
|
||||||
|
|
||||||
|
def scan_for_net_installers(server, family_name, min_year):
|
||||||
|
if not server['Mounted']:
|
||||||
|
mount_network_share(server)
|
||||||
|
|
||||||
|
if server['Mounted']:
|
||||||
|
for year in os.scandir(r'\\{IP}\{Share}'.format(**server)):
|
||||||
|
if int(year.name) < min_year:
|
||||||
|
# Don't support outdated installers
|
||||||
|
continue
|
||||||
|
for version in os.scandir(year.path):
|
||||||
|
section = r'Installers\Extras\{}\{}'.format(
|
||||||
|
family_name, year.name)
|
||||||
|
if section not in LAUNCHERS:
|
||||||
|
LAUNCHERS[section] = {}
|
||||||
|
name = version.name
|
||||||
|
if re.search(r'(exe|msi)$', name, re.IGNORECASE):
|
||||||
|
name = name[:-4]
|
||||||
|
if name not in LAUNCHERS[section]:
|
||||||
|
LAUNCHERS[section][name] = {
|
||||||
|
'L_TYPE': family_name,
|
||||||
|
'L_PATH': year.name,
|
||||||
|
'L_ITEM': version.name,
|
||||||
|
}
|
||||||
|
umount_network_share(server)
|
||||||
|
|
||||||
|
## Data Recovery ##
|
||||||
|
def update_testdisk():
|
||||||
|
# Stop running processes
|
||||||
|
for exe in ['fidentify_win.exe', 'photorec_win.exe',
|
||||||
|
'qphotorec_win.exe', 'testdisk_win.exe']:
|
||||||
|
kill_process(exe)
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('TestDisk')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('testdisk_wip.zip', SOURCE_URLS['TestDisk'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('testdisk_wip.zip', 'TestDisk')
|
||||||
|
dest = r'{}\TestDisk'.format(global_vars['CBinDir'])
|
||||||
|
for item in os.scandir(r'{}\testdisk-7.1-WIP'.format(dest)):
|
||||||
|
dest_item = '{}\{}'.format(dest, item.name)
|
||||||
|
if not os.path.exists(dest_item):
|
||||||
|
shutil.move(item.path, dest_item)
|
||||||
|
shutil.rmtree(
|
||||||
|
r'{}\TestDisk\testdisk-7.1-WIP'.format(global_vars['CBinDir']))
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('testdisk_wip.zip')
|
||||||
|
|
||||||
|
## Data Transfers ##
|
||||||
|
def update_fastcopy():
|
||||||
|
## NOTE: Lives in .bin uncompressed
|
||||||
|
# Stop running processes
|
||||||
|
for process in ['FastCopy.exe', 'FastCopy64.exe']:
|
||||||
|
kill_process(process)
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('FastCopy')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('FastCopy32.zip', SOURCE_URLS['FastCopy32'])
|
||||||
|
download_to_temp('FastCopy64.zip', SOURCE_URLS['FastCopy64'])
|
||||||
|
|
||||||
|
# Extract
|
||||||
|
extract_temp_to_bin('FastCopy64.zip', 'FastCopy', sz_args=['FastCopy.exe'])
|
||||||
|
shutil.move(
|
||||||
|
r'{}\FastCopy\FastCopy.exe'.format(global_vars['BinDir']),
|
||||||
|
r'{}\FastCopy\FastCopy64.exe'.format(global_vars['BinDir']))
|
||||||
|
extract_temp_to_bin('FastCopy32.zip', 'FastCopy', sz_args=[r'-x!setup.exe', r'-x!*.dll'])
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('FastCopy32.zip')
|
||||||
|
remove_from_temp('FastCopy64.zip')
|
||||||
|
|
||||||
|
def update_wimlib():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('wimlib-imagex.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('wimlib')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('wimlib32.zip', SOURCE_URLS['wimlib32'])
|
||||||
|
download_to_temp('wimlib64.zip', SOURCE_URLS['wimlib64'])
|
||||||
|
|
||||||
|
# Extract
|
||||||
|
extract_generic(
|
||||||
|
r'{}\wimlib32.zip'.format(global_vars['TmpDir']),
|
||||||
|
r'{}\wimlib\x32'.format(global_vars['CBinDir']))
|
||||||
|
extract_generic(
|
||||||
|
r'{}\wimlib64.zip'.format(global_vars['TmpDir']),
|
||||||
|
r'{}\wimlib\x64'.format(global_vars['CBinDir']))
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('wimlib32.zip')
|
||||||
|
remove_from_temp('wimlib64.zip')
|
||||||
|
|
||||||
|
def update_xyplorer():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('XYplorerFree.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('XYplorerFree')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('xyplorer_free.zip', SOURCE_URLS['XYplorerFree'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('xyplorer_free.zip', 'XYplorerFree')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('xyplorer_free.zip')
|
||||||
|
|
||||||
|
## Diagnostics ##
|
||||||
|
def update_aida64():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('notepadplusplus.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('AIDA64')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('aida64.zip', SOURCE_URLS['AIDA64'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('aida64.zip', 'AIDA64')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('aida64.zip')
|
||||||
|
|
||||||
|
def update_autoruns():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('Autoruns.exe')
|
||||||
|
kill_process('Autoruns64.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('Autoruns')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('Autoruns.zip', SOURCE_URLS['Autoruns'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('Autoruns.zip', 'Autoruns')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('Autoruns.zip')
|
||||||
|
|
||||||
|
def update_bleachbit():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('bleachbit.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('BleachBit')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('bleachbit.zip', SOURCE_URLS['BleachBit'])
|
||||||
|
download_to_temp('Winapp2.zip', SOURCE_URLS['Winapp2'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('bleachbit.zip', 'BleachBit')
|
||||||
|
extract_generic(
|
||||||
|
r'{}\Winapp2.zip'.format(global_vars['TmpDir']),
|
||||||
|
r'{}\BleachBit\cleaners'.format(global_vars['CBinDir']),
|
||||||
|
mode='e', sz_args=[r'Winapp2-master\Non-CCleaner\Winapp2.ini'])
|
||||||
|
|
||||||
|
# Move files into place
|
||||||
|
dest = r'{}\BleachBit'.format(global_vars['CBinDir'])
|
||||||
|
for item in os.scandir(r'{}\BleachBit-Portable'.format(dest)):
|
||||||
|
dest_item = '{}\{}'.format(dest, item.name)
|
||||||
|
if not os.path.exists(dest_item):
|
||||||
|
shutil.move(item.path, dest_item)
|
||||||
|
shutil.rmtree(
|
||||||
|
r'{}\BleachBit\BleachBit-Portable'.format(global_vars['CBinDir']))
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('bleachbit.zip')
|
||||||
|
remove_from_temp('Winapp2.zip')
|
||||||
|
|
||||||
|
def update_bluescreenview():
|
||||||
|
# Stop running processes
|
||||||
|
for exe in ['BlueScreenView.exe', 'BlueScreenView64.exe']:
|
||||||
|
kill_process(exe)
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('BlueScreenView')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('bluescreenview32.zip', SOURCE_URLS['BlueScreenView32'])
|
||||||
|
download_to_temp('bluescreenview64.zip', SOURCE_URLS['BlueScreenView64'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('bluescreenview64.zip', 'BlueScreenView', sz_args=['BlueScreenView.exe'])
|
||||||
|
shutil.move(
|
||||||
|
r'{}\BlueScreenView\BlueScreenView.exe'.format(global_vars['CBinDir']),
|
||||||
|
r'{}\BlueScreenView\BlueScreenView64.exe'.format(global_vars['CBinDir']))
|
||||||
|
extract_temp_to_cbin('bluescreenview32.zip', 'BlueScreenView')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('bluescreenview32.zip')
|
||||||
|
remove_from_temp('bluescreenview64.zip')
|
||||||
|
|
||||||
|
def update_erunt():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('ERUNT.EXE')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('ERUNT')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('erunt.zip', SOURCE_URLS['ERUNT'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('erunt.zip', 'ERUNT')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('erunt.zip')
|
||||||
|
|
||||||
|
def update_hitmanpro():
|
||||||
|
# Stop running processes
|
||||||
|
for exe in ['HitmanPro.exe', 'HitmanPro64.exe']:
|
||||||
|
kill_process(exe)
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('HitmanPro')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
dest = r'{}\HitmanPro'.format(global_vars['CBinDir'])
|
||||||
|
download_generic(dest, 'HitmanPro.exe', SOURCE_URLS['HitmanPro32'])
|
||||||
|
download_generic(dest, 'HitmanPro64.exe', SOURCE_URLS['HitmanPro64'])
|
||||||
|
|
||||||
|
def update_hwinfo():
|
||||||
|
## NOTE: Lives in .bin uncompressed
|
||||||
|
# Stop running processes
|
||||||
|
for exe in ['HWiNFO32.exe', 'HWiNFO64.exe']:
|
||||||
|
kill_process(exe)
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('HWiNFO32.zip', SOURCE_URLS['HWiNFO32'])
|
||||||
|
download_to_temp('HWiNFO64.zip', SOURCE_URLS['HWiNFO64'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_bin('HWiNFO32.zip', 'HWiNFO')
|
||||||
|
extract_temp_to_bin('HWiNFO64.zip', 'HWiNFO')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('HWiNFO32.zip')
|
||||||
|
remove_from_temp('HWiNFO64.zip')
|
||||||
|
|
||||||
|
def update_produkey():
|
||||||
|
# Stop running processes
|
||||||
|
for exe in ['ProduKey.exe', 'ProduKey64.exe']:
|
||||||
|
kill_process(exe)
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('ProduKey')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('produkey32.zip', SOURCE_URLS['ProduKey32'])
|
||||||
|
download_to_temp('produkey64.zip', SOURCE_URLS['ProduKey64'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('produkey64.zip', 'ProduKey', sz_args=['ProduKey.exe'])
|
||||||
|
shutil.move(
|
||||||
|
r'{}\ProduKey\ProduKey.exe'.format(global_vars['CBinDir']),
|
||||||
|
r'{}\ProduKey\ProduKey64.exe'.format(global_vars['CBinDir']))
|
||||||
|
extract_temp_to_cbin('produkey32.zip', 'ProduKey')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('produkey32.zip')
|
||||||
|
remove_from_temp('produkey64.zip')
|
||||||
|
|
||||||
|
## Drivers ##
|
||||||
|
def update_intel_rst():
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('Intel RST')
|
||||||
|
|
||||||
|
# Prep
|
||||||
|
dest = r'{}\_Drivers\Intel RST'.format(global_vars['CBinDir'])
|
||||||
|
include_path = r'{}\_include\_Drivers\Intel RST'.format(
|
||||||
|
global_vars['CBinDir'])
|
||||||
|
if os.path.exists(include_path):
|
||||||
|
shutil.copytree(include_path, dest)
|
||||||
|
|
||||||
|
# Download
|
||||||
|
for name, url in RST_SOURCES.items():
|
||||||
|
download_generic(dest, name, url)
|
||||||
|
|
||||||
|
def update_intel_ssd_toolbox():
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('Intel SSD Toolbox.exe')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(
|
||||||
|
r'{}\_Drivers\Intel SSD Toolbox'.format(global_vars['CBinDir']),
|
||||||
|
'Intel SSD Toolbox.exe',
|
||||||
|
SOURCE_URLS['Intel SSD Toolbox'])
|
||||||
|
|
||||||
|
def update_samsung_magician():
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('Samsung Magician.exe')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(
|
||||||
|
r'{}\_Drivers\Samsung Magician'.format(global_vars['CBinDir']),
|
||||||
|
'Samsung Magician.exe',
|
||||||
|
SOURCE_URLS['Samsung Magician'])
|
||||||
|
|
||||||
|
def update_sdi_origin():
|
||||||
|
# Download aria2
|
||||||
|
download_to_temp('aria2.zip', SOURCE_URLS['aria2'])
|
||||||
|
aria_source = r'{}\aria2.zip'.format(global_vars['TmpDir'])
|
||||||
|
aria_dest = r'{}\aria2'.format(global_vars['TmpDir'])
|
||||||
|
aria = r'{}\aria2c.exe'.format(aria_dest)
|
||||||
|
extract_generic(aria_source, aria_dest, mode='e')
|
||||||
|
|
||||||
|
# Prep for torrent download
|
||||||
|
download_to_temp('sdio.torrent', SOURCE_URLS['SDIO Torrent'])
|
||||||
|
sdio_torrent = r'{}\sdio.torrent'.format(global_vars['TmpDir'])
|
||||||
|
out = run_program([aria, sdio_torrent, '-S'])
|
||||||
|
indexes = []
|
||||||
|
for line in out.stdout.decode().splitlines():
|
||||||
|
r = re.search(r'^\s*(\d+)\|(.*)', line)
|
||||||
|
if r and not re.search(r'(\.(bat|inf)|Video|Server|Printer|XP)', line, re.IGNORECASE):
|
||||||
|
indexes.append(int(r.group(1)))
|
||||||
|
indexes = [str(i) for i in sorted(indexes)]
|
||||||
|
|
||||||
|
# Download SDI Origin
|
||||||
|
cmd = [
|
||||||
|
aria,
|
||||||
|
'--select-file={}'.format(','.join(indexes)),
|
||||||
|
'-d', aria_dest,
|
||||||
|
'--seed-time=0',
|
||||||
|
sdio_torrent,
|
||||||
|
'-new_console:n', '-new_console:s33V',
|
||||||
|
]
|
||||||
|
run_program(cmd, pipe=False, check=False, shell=True)
|
||||||
|
sleep(1)
|
||||||
|
wait_for_process('aria2c')
|
||||||
|
|
||||||
|
# Download SDI Origin extra themes
|
||||||
|
download_to_temp('sdio_themes.zip', SOURCE_URLS['SDIO Themes'])
|
||||||
|
theme_source = r'{}\sdio_themes.zip'.format(global_vars['TmpDir'])
|
||||||
|
theme_dest = r'{}\SDIO_Update\tools\SDI\themes'.format(aria_dest)
|
||||||
|
extract_generic(theme_source, theme_dest)
|
||||||
|
|
||||||
|
# Move files into place
|
||||||
|
for item in os.scandir(r'{}\SDIO_Update'.format(aria_dest)):
|
||||||
|
dest_item = '{}\_Drivers\SDIO\{}'.format(
|
||||||
|
global_vars['BinDir'], item.name)
|
||||||
|
r = re.search(r'^SDIO_x?(64|)_?R.*exe$', item.name, re.IGNORECASE)
|
||||||
|
if r:
|
||||||
|
dest_item = dest_item.replace(item.name, 'SDIO{}.exe'.format(
|
||||||
|
r.group(1)))
|
||||||
|
if (not os.path.exists(dest_item)
|
||||||
|
and not re.search(r'\.(inf|bat)$', item.name, re.IGNORECASE)):
|
||||||
|
shutil.move(item.path, dest_item)
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('aria2')
|
||||||
|
remove_from_temp('aria2.zip')
|
||||||
|
remove_from_temp('sdio.torrent')
|
||||||
|
remove_from_temp('sdio_themes.zip')
|
||||||
|
|
||||||
|
## Installers ##
|
||||||
|
def update_adobe_reader_dc():
|
||||||
|
# Prep
|
||||||
|
dest = r'{}\.root_items\Installers\Extras\Office'.format(
|
||||||
|
global_vars['BaseDir'])
|
||||||
|
if os.path.exists(r'{}\Installers'.format(global_vars['BaseDir'])):
|
||||||
|
dest = dest.replace(r'\.root_items', '')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
try:
|
||||||
|
os.remove(r'{}\Adobe Reader DC.exe'.format(dest))
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(
|
||||||
|
dest, 'Adobe Reader DC.exe', SOURCE_URLS['Adobe Reader DC'])
|
||||||
|
|
||||||
|
def update_office():
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('_Office')
|
||||||
|
|
||||||
|
# Prep
|
||||||
|
dest = r'{}\_Office'.format(global_vars['CBinDir'])
|
||||||
|
include_path = r'{}\_include\_Office'.format(global_vars['CBinDir'])
|
||||||
|
if os.path.exists(include_path):
|
||||||
|
shutil.copytree(include_path, dest)
|
||||||
|
|
||||||
|
# Download and extract
|
||||||
|
for year in ['2013', '2016']:
|
||||||
|
name = 'odt{}.exe'.format(year)
|
||||||
|
url = 'Office Deployment Tool {}'.format(year)
|
||||||
|
download_to_temp(name, SOURCE_URLS[url])
|
||||||
|
cmd = [
|
||||||
|
r'{}\odt{}.exe'.format(global_vars['TmpDir'], year),
|
||||||
|
r'/extract:{}\{}'.format(global_vars['TmpDir'], year),
|
||||||
|
'/quiet',
|
||||||
|
]
|
||||||
|
run_program(cmd)
|
||||||
|
shutil.move(
|
||||||
|
r'{}\{}'.format(global_vars['TmpDir'], year),
|
||||||
|
r'{}\_Office\{}'.format(global_vars['CBinDir'], year))
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('odt2013.exe')
|
||||||
|
remove_from_temp('odt2016.exe')
|
||||||
|
|
||||||
|
def update_classic_start_skin():
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('ClassicStartSkin')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(
|
||||||
|
r'{}\ClassicStartSkin'.format(global_vars['CBinDir']),
|
||||||
|
'Metro-Win10-Black.skin7',
|
||||||
|
SOURCE_URLS['ClassicStartSkin'])
|
||||||
|
|
||||||
|
def update_vcredists():
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('_vcredists')
|
||||||
|
|
||||||
|
# Prep
|
||||||
|
dest = r'{}\_vcredists'.format(global_vars['CBinDir'])
|
||||||
|
include_path = r'{}\_include\_vcredists'.format(global_vars['CBinDir'])
|
||||||
|
if os.path.exists(include_path):
|
||||||
|
shutil.copytree(include_path, dest)
|
||||||
|
|
||||||
|
# Download
|
||||||
|
for year in VCREDIST_SOURCES.keys():
|
||||||
|
for bit in ['32', '64']:
|
||||||
|
dest = r'{}\_vcredists\{}\x{}'.format(
|
||||||
|
global_vars['CBinDir'], year, bit)
|
||||||
|
download_generic(
|
||||||
|
dest,
|
||||||
|
'vcredist.exe',
|
||||||
|
VCREDIST_SOURCES[year][bit])
|
||||||
|
|
||||||
|
def update_one_ninite(section, dest, name, url, indent=8, width=40):
|
||||||
|
# Prep
|
||||||
|
url = 'https://ninite.com/{}/ninite.exe'.format(url)
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(out_dir=dest, out_name=name, source_url=url)
|
||||||
|
|
||||||
|
# Copy to Installers folder
|
||||||
|
installer_parent = r'{}\Installers\Extras\{}'.format(
|
||||||
|
global_vars['BaseDir'], section)
|
||||||
|
installer_dest = r'{}\{}'.format(installer_parent, name)
|
||||||
|
os.makedirs(installer_parent, exist_ok=True)
|
||||||
|
if os.path.exists(installer_dest):
|
||||||
|
remove_item(installer_dest)
|
||||||
|
shutil.copy(r'{}\{}'.format(dest, name), installer_dest)
|
||||||
|
|
||||||
|
def update_all_ninite(indent=8, width=40, other_results={}):
|
||||||
|
print_info('{}Ninite'.format(' '*int(indent/2)))
|
||||||
|
for section in sorted(NINITE_SOURCES.keys()):
|
||||||
|
print_success('{}{}'.format(' '*int(indent/4*3), section))
|
||||||
|
dest = r'{}\_Ninite\{}'.format(global_vars['CBinDir'], section)
|
||||||
|
for name, url in sorted(NINITE_SOURCES[section].items()):
|
||||||
|
try_and_print(message=name, function=update_one_ninite,
|
||||||
|
other_results=other_results, indent=indent, width=width,
|
||||||
|
section=section, dest=dest, name=name, url=url)
|
||||||
|
|
||||||
|
## Misc ##
|
||||||
|
def update_caffeine():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('caffeine.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('Caffeine')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('caffeine.zip', SOURCE_URLS['Caffeine'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('caffeine.zip', 'Caffeine')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('caffeine.zip')
|
||||||
|
|
||||||
|
def update_du():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('du.exe')
|
||||||
|
kill_process('du64.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('Du')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('du.zip', SOURCE_URLS['Du'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('du.zip', 'Du')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('du.zip')
|
||||||
|
|
||||||
|
def update_everything():
|
||||||
|
# Stop running processes
|
||||||
|
for exe in ['Everything.exe', 'Everything64.exe']:
|
||||||
|
kill_process(exe)
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('Everything')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('everything32.zip', SOURCE_URLS['Everything32'])
|
||||||
|
download_to_temp('everything64.zip', SOURCE_URLS['Everything64'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('everything64.zip', 'Everything', sz_args=['Everything.exe'])
|
||||||
|
shutil.move(
|
||||||
|
r'{}\Everything\Everything.exe'.format(global_vars['CBinDir']),
|
||||||
|
r'{}\Everything\Everything64.exe'.format(global_vars['CBinDir']))
|
||||||
|
extract_temp_to_cbin('everything32.zip', 'Everything')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('everything32.zip')
|
||||||
|
remove_from_temp('everything64.zip')
|
||||||
|
|
||||||
|
def update_firefox_ublock_origin():
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('FirefoxExtensions')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('ff-uBO.xpi', SOURCE_URLS['Firefox uBO'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_generic(
|
||||||
|
r'{}\ff-uBO.xpi'.format(global_vars['TmpDir']),
|
||||||
|
r'{}\FirefoxExtensions\uBlock0@raymondhill.net'.format(
|
||||||
|
global_vars['CBinDir']))
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('ff-uBO.xpi')
|
||||||
|
|
||||||
|
def update_notepadplusplus():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('notepadplusplus.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('NotepadPlusPlus')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('npp.7z', SOURCE_URLS['NotepadPlusPlus'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('npp.7z', 'NotepadPlusPlus')
|
||||||
|
shutil.move(
|
||||||
|
r'{}\NotepadPlusPlus\notepad++.exe'.format(global_vars['CBinDir']),
|
||||||
|
r'{}\NotepadPlusPlus\notepadplusplus.exe'.format(global_vars['CBinDir'])
|
||||||
|
)
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('npp.7z')
|
||||||
|
|
||||||
|
def update_putty():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('PUTTY.EXE')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('PuTTY')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('putty.zip', SOURCE_URLS['PuTTY'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('putty.zip', 'PuTTY')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('putty.zip')
|
||||||
|
|
||||||
|
def update_treesizefree():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('TreeSizeFree.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('TreeSizeFree')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp(
|
||||||
|
'treesizefree.zip.gz', SOURCE_URLS['TreeSizeFree'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
## NOTE: When downloaded using requests it is a .zip.gz?
|
||||||
|
source = r'{}\treesizefree.zip.gz'.format(global_vars['TmpDir'])
|
||||||
|
extract_generic(source, global_vars['TmpDir'])
|
||||||
|
extract_temp_to_cbin('treesizefree.zip', 'TreeSizeFree')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_temp('treesizefree.zip')
|
||||||
|
remove_from_temp('treesizefree.zip.gz')
|
||||||
|
|
||||||
|
def update_xmplay():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('xmplay.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('XMPlay')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_to_temp('xmplay.zip', SOURCE_URLS['XMPlay'])
|
||||||
|
download_to_temp('xmp-7z.zip', SOURCE_URLS['XMPlay 7z'])
|
||||||
|
download_to_temp('xmp-gme.zip', SOURCE_URLS['XMPlay Game'])
|
||||||
|
download_to_temp('xmp-rar.zip', SOURCE_URLS['XMPlay RAR'])
|
||||||
|
download_to_temp('WAModern.zip', SOURCE_URLS['XMPlay WAModern'])
|
||||||
|
|
||||||
|
# Extract files
|
||||||
|
extract_temp_to_cbin('xmplay.zip', 'XMPlay',
|
||||||
|
mode='e', sz_args=['xmplay.exe', 'xmplay.txt'])
|
||||||
|
for item in ['xmp-7z', 'xmp-gme', 'xmp-rar', 'WAModern']:
|
||||||
|
filter = []
|
||||||
|
if item == 'WAModern':
|
||||||
|
filter.append('WAModern NightVision.xmpskin')
|
||||||
|
extract_generic(
|
||||||
|
r'{}\{}.zip'.format(global_vars['TmpDir'], item),
|
||||||
|
r'{}\XMPlay\plugins'.format(global_vars['CBinDir']),
|
||||||
|
mode='e', sz_args=filter)
|
||||||
|
|
||||||
|
# Download Music
|
||||||
|
dest = r'{}\XMPlay\music_tmp\MOD'.format(global_vars['CBinDir'])
|
||||||
|
for mod in MUSIC_MOD:
|
||||||
|
name = mod.split('#')[-1]
|
||||||
|
url = 'https://api.modarchive.org/downloads.php?moduleid={}'.format(mod)
|
||||||
|
download_generic(dest, name, url)
|
||||||
|
dest = r'{}\XMPlay\music_tmp\SNES'.format(global_vars['CBinDir'])
|
||||||
|
for game in MUSIC_SNES:
|
||||||
|
name = '{}.rsn'.format(game)
|
||||||
|
url = 'http://snesmusic.org/v2/download.php?spcNow={}'.format(game)
|
||||||
|
download_generic(dest, name, url)
|
||||||
|
|
||||||
|
# Compress Music
|
||||||
|
cmd = [
|
||||||
|
global_vars['Tools']['SevenZip'],
|
||||||
|
'a', r'{}\XMPlay\music.7z'.format(global_vars['CBinDir']),
|
||||||
|
'-t7z', '-mx=9', '-bso0', '-bse0',
|
||||||
|
r'{}\XMPlay\music_tmp\*'.format(global_vars['CBinDir']),
|
||||||
|
]
|
||||||
|
run_program(cmd)
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_item(r'{}\XMPlay\music_tmp'.format(global_vars['CBinDir']))
|
||||||
|
remove_from_temp('xmplay.zip')
|
||||||
|
remove_from_temp('xmp-7z.zip')
|
||||||
|
remove_from_temp('xmp-gme.zip')
|
||||||
|
remove_from_temp('xmp-rar.zip')
|
||||||
|
remove_from_temp('WAModern.zip')
|
||||||
|
|
||||||
|
## Repairs ##
|
||||||
|
def update_adwcleaner():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('AdwCleaner.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('AdwCleaner')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
url = resolve_dynamic_url(
|
||||||
|
SOURCE_URLS['AdwCleaner'],
|
||||||
|
'id="downloadLink"')
|
||||||
|
download_generic(
|
||||||
|
r'{}\AdwCleaner'.format(global_vars['CBinDir']), 'AdwCleaner.exe', url)
|
||||||
|
|
||||||
|
def update_kvrt():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('KVRT.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('KVRT')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(
|
||||||
|
r'{}\KVRT'.format(global_vars['CBinDir']),
|
||||||
|
'KVRT.exe',
|
||||||
|
SOURCE_URLS['KVRT'])
|
||||||
|
|
||||||
|
def update_rkill():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('RKill.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('RKill')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
url = resolve_dynamic_url(
|
||||||
|
SOURCE_URLS['RKill'],
|
||||||
|
'href.*rkill\.exe')
|
||||||
|
download_generic(
|
||||||
|
r'{}\RKill'.format(global_vars['CBinDir']), 'RKill.exe', url)
|
||||||
|
|
||||||
|
def update_tdsskiller():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('TDSSKiller.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('TDSSKiller')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(
|
||||||
|
r'{}\TDSSKiller'.format(global_vars['CBinDir']),
|
||||||
|
'TDSSKiller.exe',
|
||||||
|
SOURCE_URLS['TDSSKiller'])
|
||||||
|
|
||||||
|
## Uninstallers ##
|
||||||
|
def update_iobit_uninstaller():
|
||||||
|
# Stop running processes
|
||||||
|
kill_process('IObitUninstallerPortable.exe')
|
||||||
|
|
||||||
|
# Remove existing folders
|
||||||
|
remove_from_kit('IObitUninstallerPortable')
|
||||||
|
|
||||||
|
# Download
|
||||||
|
download_generic(
|
||||||
|
global_vars['CBinDir'],
|
||||||
|
'IObitUninstallerPortable.exe',
|
||||||
|
SOURCE_URLS['IOBit_Uninstaller'])
|
||||||
|
|
||||||
|
# "Install"
|
||||||
|
cmd = r'{}\IObitUninstallerPortable.exe'.format(global_vars['CBinDir'])
|
||||||
|
popen_program(cmd)
|
||||||
|
sleep(1)
|
||||||
|
wait_for_process('IObitUninstallerPortable')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
remove_from_kit('IObitUninstallerPortable.exe')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("This file is not meant to be called directly.")
|
||||||
|
|
@ -1,78 +1,78 @@
|
||||||
:: Wizard Kit: Create client_dir folder(s)
|
:: Wizard Kit: Create client_dir folder(s)
|
||||||
|
|
||||||
@echo off
|
@echo off
|
||||||
if defined DEBUG (@echo on)
|
if defined DEBUG (@echo on)
|
||||||
|
|
||||||
:SafetyCheck
|
:SafetyCheck
|
||||||
if not defined bin (goto Abort)
|
if not defined bin (goto Abort)
|
||||||
|
|
||||||
:Init
|
:Init
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_SHORT %SETTINGS%`) do (
|
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_SHORT %SETTINGS%`) do (
|
||||||
set "_v=%%f"
|
set "_v=%%f"
|
||||||
set "_v=!_v:*'=!"
|
set "_v=!_v:*'=!"
|
||||||
set "KIT_NAME_SHORT=!_v:~0,-1!"
|
set "KIT_NAME_SHORT=!_v:~0,-1!"
|
||||||
)
|
)
|
||||||
set "client_dir=%systemdrive%\%KIT_NAME_SHORT%"
|
set "client_dir=%systemdrive%\%KIT_NAME_SHORT%"
|
||||||
set "log_dir=%client_dir%\Info\%iso_date%"
|
set "log_dir=%client_dir%\Info\%iso_date%"
|
||||||
|
|
||||||
:Flags
|
:Flags
|
||||||
set _backups=
|
set _backups=
|
||||||
set _info=
|
set _info=
|
||||||
set _office=
|
set _office=
|
||||||
set _quarantine=
|
set _quarantine=
|
||||||
set _quickbooks=
|
set _quickbooks=
|
||||||
set _transfer=
|
set _transfer=
|
||||||
for %%f in (%*) do (
|
for %%f in (%*) do (
|
||||||
if /i "%%f" == "/DEBUG" (@echo on)
|
if /i "%%f" == "/DEBUG" (@echo on)
|
||||||
if /i "%%f" == "/Backups" set _backups=True
|
if /i "%%f" == "/Backups" set _backups=True
|
||||||
if /i "%%f" == "/Info" set _info=True
|
if /i "%%f" == "/Info" set _info=True
|
||||||
if /i "%%f" == "/Office" set _office=True
|
if /i "%%f" == "/Office" set _office=True
|
||||||
if /i "%%f" == "/Quarantine" set _quarantine=True
|
if /i "%%f" == "/Quarantine" set _quarantine=True
|
||||||
if /i "%%f" == "/QuickBooks" set _quickbooks=True
|
if /i "%%f" == "/QuickBooks" set _quickbooks=True
|
||||||
if /i "%%f" == "/Transfer" set _transfer=True
|
if /i "%%f" == "/Transfer" set _transfer=True
|
||||||
)
|
)
|
||||||
|
|
||||||
:GetDate
|
:GetDate
|
||||||
:: Credit to SS64.com Code taken from http://ss64.com/nt/syntax-getdate.html
|
:: Credit to SS64.com Code taken from http://ss64.com/nt/syntax-getdate.html
|
||||||
:: Use WMIC to retrieve date and time in ISO 8601 format.
|
:: Use WMIC to retrieve date and time in ISO 8601 format.
|
||||||
for /f "skip=1 tokens=1-6" %%G in ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') do (
|
for /f "skip=1 tokens=1-6" %%G in ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') do (
|
||||||
if "%%~L"=="" goto s_done
|
if "%%~L"=="" goto s_done
|
||||||
set _yyyy=%%L
|
set _yyyy=%%L
|
||||||
set _mm=00%%J
|
set _mm=00%%J
|
||||||
set _dd=00%%G
|
set _dd=00%%G
|
||||||
set _hour=00%%H
|
set _hour=00%%H
|
||||||
set _minute=00%%I
|
set _minute=00%%I
|
||||||
)
|
)
|
||||||
:s_done
|
:s_done
|
||||||
:: Pad digits with leading zeros
|
:: Pad digits with leading zeros
|
||||||
set _mm=%_mm:~-2%
|
set _mm=%_mm:~-2%
|
||||||
set _dd=%_dd:~-2%
|
set _dd=%_dd:~-2%
|
||||||
set _hour=%_hour:~-2%
|
set _hour=%_hour:~-2%
|
||||||
set _minute=%_minute:~-2%
|
set _minute=%_minute:~-2%
|
||||||
set iso_date=%_yyyy%-%_mm%-%_dd%
|
set iso_date=%_yyyy%-%_mm%-%_dd%
|
||||||
|
|
||||||
:CreateDirs
|
:CreateDirs
|
||||||
if defined _backups mkdir "%client_dir%\Backups">nul 2>&1
|
if defined _backups mkdir "%client_dir%\Backups">nul 2>&1
|
||||||
if defined _info mkdir "%client_dir%\Info">nul 2>&1
|
if defined _info mkdir "%client_dir%\Info">nul 2>&1
|
||||||
if defined _office mkdir "%client_dir%\Office">nul 2>&1
|
if defined _office mkdir "%client_dir%\Office">nul 2>&1
|
||||||
if defined _quarantine mkdir "%client_dir%\Quarantine">nul 2>&1
|
if defined _quarantine mkdir "%client_dir%\Quarantine">nul 2>&1
|
||||||
if defined _quickbooks mkdir "%client_dir%\QuickBooks">nul 2>&1
|
if defined _quickbooks mkdir "%client_dir%\QuickBooks">nul 2>&1
|
||||||
if defined _transfer mkdir "%client_dir%\Transfer_%iso_date%">nul 2>&1
|
if defined _transfer mkdir "%client_dir%\Transfer_%iso_date%">nul 2>&1
|
||||||
goto Done
|
goto Done
|
||||||
|
|
||||||
:Abort
|
:Abort
|
||||||
color 4e
|
color 4e
|
||||||
echo Aborted.
|
echo Aborted.
|
||||||
echo.
|
echo.
|
||||||
echo Press any key to exit...
|
echo Press any key to exit...
|
||||||
pause>nul
|
pause>nul
|
||||||
color
|
color
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
rem Set errorlevel to 1 by calling color incorrectly
|
||||||
color 00
|
color 00
|
||||||
goto Exit
|
goto Exit
|
||||||
|
|
||||||
:Done
|
:Done
|
||||||
goto Exit
|
goto Exit
|
||||||
|
|
||||||
:Exit
|
:Exit
|
||||||
|
|
|
||||||
|
|
@ -1,56 +1,59 @@
|
||||||
# Wizard Kit: Install the standard SW bundle based on the OS version
|
# Wizard Kit: Install the standard SW bundle based on the OS version
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.setup import *
|
from functions.setup import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: SW Bundle Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: SW Bundle Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\Install SW Bundle.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\Install SW Bundle.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
stay_awake()
|
stay_awake()
|
||||||
os.system('cls')
|
os.system('cls')
|
||||||
other_results = {
|
print_info('{}: SW Bundle Tool\n'.format(KIT_NAME_FULL))
|
||||||
'Error': {
|
other_results = {
|
||||||
'CalledProcessError': 'Unknown Error',
|
'Error': {
|
||||||
},
|
'CalledProcessError': 'Unknown Error',
|
||||||
'Warning': {
|
},
|
||||||
'GenericRepair': 'Repaired',
|
'Warning': {
|
||||||
'UnsupportedOSError': 'Unsupported OS',
|
'GenericRepair': 'Repaired',
|
||||||
}}
|
'UnsupportedOSError': 'Unsupported OS',
|
||||||
answer_extensions = ask('Install Extensions?')
|
}}
|
||||||
answer_adobe_reader = ask('Install Adobe Reader?')
|
answer_extensions = ask('Install Extensions?')
|
||||||
answer_vcr = ask('Install Visual C++ Runtimes?')
|
answer_adobe_reader = ask('Install Adobe Reader?')
|
||||||
if global_vars['OS']['Version'] in ['7']:
|
answer_vcr = ask('Install Visual C++ Runtimes?')
|
||||||
# Vista is dead, not going to check for it
|
answer_ninite = ask('Install Ninite Bundle?')
|
||||||
answer_mse = ask('Install MSE?')
|
if answer_ninite and global_vars['OS']['Version'] in ['7']:
|
||||||
else:
|
# Vista is dead, not going to check for it
|
||||||
answer_mse = False
|
answer_mse = ask('Install MSE?')
|
||||||
|
else:
|
||||||
if answer_extensions:
|
answer_mse = False
|
||||||
print_info('Installing Extensions')
|
|
||||||
try_and_print(message='Classic Shell skin...',
|
if answer_extensions:
|
||||||
function=install_classicstart_skin,
|
print_info('Installing Extensions')
|
||||||
other_results=other_results)
|
try_and_print(message='Classic Shell skin...',
|
||||||
try_and_print(message='Google Chrome extensions...',
|
function=install_classicstart_skin,
|
||||||
function=install_chrome_extensions)
|
other_results=other_results)
|
||||||
try_and_print(message='Mozilla Firefox extensions...',
|
try_and_print(message='Google Chrome extensions...',
|
||||||
function=install_firefox_extensions)
|
function=install_chrome_extensions)
|
||||||
print_info('Installing Programs')
|
try_and_print(message='Mozilla Firefox extensions...',
|
||||||
if answer_adobe_reader:
|
function=install_firefox_extensions)
|
||||||
install_adobe_reader()
|
print_info('Installing Programs')
|
||||||
if answer_vcr:
|
if answer_adobe_reader:
|
||||||
install_vcredists()
|
install_adobe_reader()
|
||||||
try_and_print(message='Ninite bundle...',
|
if answer_vcr:
|
||||||
function=install_ninite_bundle, cs='Started', mse=answer_mse)
|
install_vcredists()
|
||||||
print_standard('\nDone.')
|
if answer_ninite:
|
||||||
exit_script()
|
try_and_print(message='Ninite bundle...',
|
||||||
except SystemExit:
|
function=install_ninite_bundle, cs='Started', mse=answer_mse)
|
||||||
pass
|
print_standard('\nDone.')
|
||||||
except:
|
exit_script()
|
||||||
major_exception()
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
34
.bin/Scripts/install_vcredists.py
Normal file
34
.bin/Scripts/install_vcredists.py
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
# Wizard Kit: Install Visual C++ Runtimes
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Init
|
||||||
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
|
sys.path.append(os.getcwd())
|
||||||
|
from functions.setup import *
|
||||||
|
init_global_vars()
|
||||||
|
os.system('title {}: Install Visual C++ Runtimes'.format(KIT_NAME_FULL))
|
||||||
|
global_vars['LogFile'] = r'{LogDir}\Install Visual C++ Runtimes.log'.format(**global_vars)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
stay_awake()
|
||||||
|
os.system('cls')
|
||||||
|
print_info('{}: Install Visual C++ Runtimes\n'.format(KIT_NAME_FULL))
|
||||||
|
other_results = {
|
||||||
|
'Error': {
|
||||||
|
'CalledProcessError': 'Unknown Error',
|
||||||
|
}}
|
||||||
|
|
||||||
|
if ask('Install Visual C++ Runtimes?'):
|
||||||
|
install_vcredists()
|
||||||
|
else:
|
||||||
|
abort()
|
||||||
|
|
||||||
|
print_standard('\nDone.')
|
||||||
|
exit_script()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
@ -1,40 +1,44 @@
|
||||||
# Wizard Kit: Enter SafeMode by editing the BCD
|
# Wizard Kit: Enter SafeMode by editing the BCD
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
REG_MSISERVER = r'HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\MSIServer'
|
REG_MSISERVER = r'HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\MSIServer'
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: SafeMode Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: SafeMode Tool'.format(KIT_NAME_FULL))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
if ask('Enable booting to SafeMode (with Networking)?'):
|
os.system('cls')
|
||||||
# Edit BCD to set safeboot as default
|
print_info('{}: SafeMode Tool\n'.format(KIT_NAME_FULL))
|
||||||
cmd = ['bcdedit', '/set', '{default}', 'safeboot', 'network']
|
if not ask('Enable booting to SafeMode (with Networking)?'):
|
||||||
run_program(cmd, check=False)
|
abort()
|
||||||
|
|
||||||
# Enable MSI access under safemode
|
# Edit BCD to set safeboot as default
|
||||||
cmd = ['reg', 'add', REG_MSISERVER, '/f']
|
cmd = ['bcdedit', '/set', '{default}', 'safeboot', 'network']
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
cmd = ['reg', 'add', REG_MSISERVER, '/ve',
|
|
||||||
'/t', 'REG_SZ', '/d', 'Service', '/f']
|
# Enable MSI access under safemode
|
||||||
run_program(cmd, check=False)
|
cmd = ['reg', 'add', REG_MSISERVER, '/f']
|
||||||
|
run_program(cmd, check=False)
|
||||||
## Done ##
|
cmd = ['reg', 'add', REG_MSISERVER, '/ve',
|
||||||
pause('Press Enter to reboot...')
|
'/t', 'REG_SZ', '/d', 'Service', '/f']
|
||||||
cmd = ['shutdown', '-r', '-t', '3']
|
run_program(cmd, check=False)
|
||||||
run_program(cmd, check=False)
|
|
||||||
|
## Done ##
|
||||||
# Done
|
pause('Press Enter to reboot...')
|
||||||
exit_script()
|
cmd = ['shutdown', '-r', '-t', '3']
|
||||||
except SystemExit:
|
run_program(cmd, check=False)
|
||||||
pass
|
|
||||||
except:
|
# Done
|
||||||
major_exception()
|
exit_script()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,42 @@
|
||||||
# Wizard Kit: Exit SafeMode by editing the BCD
|
# Wizard Kit: Exit SafeMode by editing the BCD
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
REG_MSISERVER = r'HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\MSIServer'
|
REG_MSISERVER = r'HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\MSIServer'
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: SafeMode Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: SafeMode Tool'.format(KIT_NAME_FULL))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
if ask('Disable booting to SafeMode?'):
|
os.system('cls')
|
||||||
# Edit BCD to remove safeboot value
|
print_info('{}: SafeMode Tool\n'.format(KIT_NAME_FULL))
|
||||||
for boot in ['{current}', '{default}']:
|
if not ask('Disable booting to SafeMode?'):
|
||||||
cmd = ['bcdedit', '/deletevalue', boot, 'safeboot']
|
abort()
|
||||||
run_program(cmd, check=False)
|
|
||||||
|
# Edit BCD to remove safeboot value
|
||||||
# Disable MSI access under safemode
|
for boot in ['{current}', '{default}']:
|
||||||
cmd = ['reg', 'delete', REG_MSISERVER, '/f']
|
cmd = ['bcdedit', '/deletevalue', boot, 'safeboot']
|
||||||
run_program(cmd, check=False)
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
## Done ##
|
# Disable MSI access under safemode
|
||||||
pause('Press Enter to reboot...')
|
cmd = ['reg', 'delete', REG_MSISERVER, '/f']
|
||||||
cmd = ['shutdown', '-r', '-t', '3']
|
run_program(cmd, check=False)
|
||||||
run_program(cmd, check=False)
|
|
||||||
|
## Done ##
|
||||||
# Done
|
pause('Press Enter to reboot...')
|
||||||
exit_script()
|
cmd = ['shutdown', '-r', '-t', '3']
|
||||||
except SystemExit:
|
run_program(cmd, check=False)
|
||||||
pass
|
|
||||||
except:
|
# Done
|
||||||
major_exception()
|
exit_script()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
586
.bin/Scripts/settings/launchers.py
Normal file
586
.bin/Scripts/settings/launchers.py
Normal file
|
|
@ -0,0 +1,586 @@
|
||||||
|
# Wizard Kit: Settings - Launchers
|
||||||
|
|
||||||
|
LAUNCHERS = {
|
||||||
|
r'(Root)': {
|
||||||
|
'Activate Windows': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'activate.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'Enter SafeMode': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'safemode_enter.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'Exit SafeMode': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'safemode_exit.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'System Checklist': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'system_checklist.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'System Diagnostics': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'system_diagnostics.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'User Checklist': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'user_checklist.py',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Data Recovery': {
|
||||||
|
'PhotoRec (CLI)': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'TestDisk',
|
||||||
|
'L_ITEM': 'photorec_win.exe',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
'L__CLI': 'True',
|
||||||
|
},
|
||||||
|
'PhotoRec': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'TestDisk',
|
||||||
|
'L_ITEM': 'qphotorec_win.exe',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'TestDisk': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'TestDisk',
|
||||||
|
'L_ITEM': 'testdisk_win.exe',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
'L__CLI': 'True',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Data Transfers': {
|
||||||
|
'FastCopy (as ADMIN)': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'FastCopy',
|
||||||
|
'L_ITEM': 'FastCopy.exe',
|
||||||
|
'L_ARGS': (
|
||||||
|
r' /logfile=%log_dir%\FastCopy.log'
|
||||||
|
r' /cmd=noexist_only'
|
||||||
|
r' /utf8'
|
||||||
|
r' /skip_empty_dir'
|
||||||
|
r' /linkdest'
|
||||||
|
r' /exclude='
|
||||||
|
r'$RECYCLE.BIN;'
|
||||||
|
r'$Recycle.Bin;'
|
||||||
|
r'.AppleDB;'
|
||||||
|
r'.AppleDesktop;'
|
||||||
|
r'.AppleDouble;'
|
||||||
|
r'.com.apple.timemachine.supported;'
|
||||||
|
r'.dbfseventsd;'
|
||||||
|
r'.DocumentRevisions-V100*;'
|
||||||
|
r'.DS_Store;'
|
||||||
|
r'.fseventsd;'
|
||||||
|
r'.PKInstallSandboxManager;'
|
||||||
|
r'.Spotlight*;'
|
||||||
|
r'.SymAV*;'
|
||||||
|
r'.symSchedScanLockxz;'
|
||||||
|
r'.TemporaryItems;'
|
||||||
|
r'.Trash*;'
|
||||||
|
r'.vol;'
|
||||||
|
r'.VolumeIcon.icns;'
|
||||||
|
r'desktop.ini;'
|
||||||
|
r'Desktop?DB;'
|
||||||
|
r'Desktop?DF;'
|
||||||
|
r'hiberfil.sys;'
|
||||||
|
r'lost+found;'
|
||||||
|
r'Network?Trash?Folder;'
|
||||||
|
r'pagefile.sys;'
|
||||||
|
r'Recycled;'
|
||||||
|
r'RECYCLER;'
|
||||||
|
r'System?Volume?Information;'
|
||||||
|
r'Temporary?Items;'
|
||||||
|
r'Thumbs.db'
|
||||||
|
r' /to=%client_dir%\Transfer_%iso_date%\ '
|
||||||
|
),
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Info /Transfer',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'FastCopy': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'FastCopy',
|
||||||
|
'L_ITEM': 'FastCopy.exe',
|
||||||
|
'L_ARGS': (
|
||||||
|
r' /logfile=%log_dir%\FastCopy.log'
|
||||||
|
r' /cmd=noexist_only'
|
||||||
|
r' /utf8'
|
||||||
|
r' /skip_empty_dir'
|
||||||
|
r' /linkdest'
|
||||||
|
r' /exclude='
|
||||||
|
r'$RECYCLE.BIN;'
|
||||||
|
r'$Recycle.Bin;'
|
||||||
|
r'.AppleDB;'
|
||||||
|
r'.AppleDesktop;'
|
||||||
|
r'.AppleDouble;'
|
||||||
|
r'.com.apple.timemachine.supported;'
|
||||||
|
r'.dbfseventsd;'
|
||||||
|
r'.DocumentRevisions-V100*;'
|
||||||
|
r'.DS_Store;'
|
||||||
|
r'.fseventsd;'
|
||||||
|
r'.PKInstallSandboxManager;'
|
||||||
|
r'.Spotlight*;'
|
||||||
|
r'.SymAV*;'
|
||||||
|
r'.symSchedScanLockxz;'
|
||||||
|
r'.TemporaryItems;'
|
||||||
|
r'.Trash*;'
|
||||||
|
r'.vol;'
|
||||||
|
r'.VolumeIcon.icns;'
|
||||||
|
r'desktop.ini;'
|
||||||
|
r'Desktop?DB;'
|
||||||
|
r'Desktop?DF;'
|
||||||
|
r'hiberfil.sys;'
|
||||||
|
r'lost+found;'
|
||||||
|
r'Network?Trash?Folder;'
|
||||||
|
r'pagefile.sys;'
|
||||||
|
r'Recycled;'
|
||||||
|
r'RECYCLER;'
|
||||||
|
r'System?Volume?Information;'
|
||||||
|
r'Temporary?Items;'
|
||||||
|
r'Thumbs.db'
|
||||||
|
r' /to=%client_dir%\Transfer_%iso_date%\ '
|
||||||
|
),
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Info /Transfer',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'KVRT': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'KVRT',
|
||||||
|
'L_ITEM': 'KVRT.exe',
|
||||||
|
'L_ARGS': (
|
||||||
|
r' -accepteula'
|
||||||
|
r' -d %q_dir%'
|
||||||
|
r' -processlevel 3'
|
||||||
|
r' -dontcryptsupportinfo'
|
||||||
|
r' -fixednames'
|
||||||
|
),
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Quarantine',
|
||||||
|
r'set "q_dir=%client_dir%\Quarantine\KVRT"',
|
||||||
|
r'mkdir "%q_dir%">nul 2>&1',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'Transferred Keys': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'transferred_keys.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'User Data Transfer': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'user_data_transfer.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'XYplorer (as ADMIN)': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'XYplorerFree',
|
||||||
|
'L_ITEM': 'XYplorerFree.exe',
|
||||||
|
'L_ARGS': r'/exp /win=max %userprofile%',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'XYplorer': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'XYplorerFree',
|
||||||
|
'L_ITEM': 'XYplorerFree.exe',
|
||||||
|
'L_ARGS': r'/exp /win=max %userprofile%',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Diagnostics': {
|
||||||
|
'HWiNFO': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'HWiNFO',
|
||||||
|
'L_ITEM': 'HWiNFO.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'for %%a in (32 64) do (',
|
||||||
|
r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r')',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'ProduKey': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'ProduKey',
|
||||||
|
'L_ITEM': 'ProduKey.exe',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
'Extra Code': [
|
||||||
|
r'if exist "%bin%\ProduKey" (',
|
||||||
|
r' del "%bin%\ProduKey\ProduKey.cfg" 2>nul',
|
||||||
|
r' del "%bin%\ProduKey\ProduKey64.cfg" 2>nul',
|
||||||
|
r')',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Diagnostics\Extras': {
|
||||||
|
'AIDA64': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'AIDA64',
|
||||||
|
'L_ITEM': 'aida64.exe',
|
||||||
|
},
|
||||||
|
'Autoruns (with VirusTotal Scan)': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'Autoruns',
|
||||||
|
'L_ITEM': 'Autoruns.exe',
|
||||||
|
'L_ARGS': '-e',
|
||||||
|
'Extra Code': [
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v checkvirustotal /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v EulaAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v shownomicrosoft /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v shownowindows /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v showonlyvirustotal /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v submitvirustotal /t REG_DWORD /d 0 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v verifysignatures /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns\SigCheck /v EulaAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns\Streams /v EulaAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns\VirusTotal /v VirusTotalTermsAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'BleachBit': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'BleachBit',
|
||||||
|
'L_ITEM': 'bleachbit.exe',
|
||||||
|
},
|
||||||
|
'BlueScreenView': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'BlueScreenView',
|
||||||
|
'L_ITEM': 'BlueScreenView.exe',
|
||||||
|
},
|
||||||
|
'ERUNT': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'erunt',
|
||||||
|
'L_ITEM': 'ERUNT.EXE',
|
||||||
|
'L_ARGS': '%log_dir%\Registry sysreg curuser otherusers',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Info',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'HitmanPro': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'HitmanPro',
|
||||||
|
'L_ITEM': 'HitmanPro.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Info',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'HWiNFO (Sensors)': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'HWiNFO',
|
||||||
|
'L_ITEM': 'HWiNFO.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'for %%a in (32 64) do (',
|
||||||
|
r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SensorsOnly=1)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r')',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Drivers': {
|
||||||
|
'Intel RST (Current Release)': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': '_Drivers\Intel RST',
|
||||||
|
'L_ITEM': 'SetupRST_15.8.exe',
|
||||||
|
'L_7ZIP': 'SetupRST_15.8.exe',
|
||||||
|
},
|
||||||
|
'Intel RST (Previous Releases)': {
|
||||||
|
'L_TYPE': 'Folder',
|
||||||
|
'L_PATH': '_Drivers\Intel RST',
|
||||||
|
'L_ITEM': '.',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Intel SSD Toolbox': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': r'_Drivers\Intel SSD Toolbox',
|
||||||
|
'L_ITEM': 'Intel SSD Toolbox.exe',
|
||||||
|
},
|
||||||
|
'Samsing Magician': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': r'_Drivers\Samsung Magician',
|
||||||
|
'L_ITEM': 'Samsung Magician.exe',
|
||||||
|
},
|
||||||
|
'Snappy Driver Installer Origin': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': '_Drivers\SDIO',
|
||||||
|
'L_ITEM': 'SDIO.exe',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Drivers\Extras': {
|
||||||
|
'Acer': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'HWiNFO',
|
||||||
|
'L_ITEM': 'HWiNFO.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'for %%a in (32 64) do (',
|
||||||
|
r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r')',
|
||||||
|
r'start "" "http://us.acer.com/ac/en/US/content/drivers"',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'Lenovo': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'HWiNFO',
|
||||||
|
'L_ITEM': 'HWiNFO.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'for %%a in (32 64) do (',
|
||||||
|
r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r')',
|
||||||
|
r'start "" "http://support.lenovo.com/us/en/products?tabName=Downloads"',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'Toshiba': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'HWiNFO',
|
||||||
|
'L_ITEM': 'HWiNFO.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'for %%a in (32 64) do (',
|
||||||
|
r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"',
|
||||||
|
r')',
|
||||||
|
r'start "" "http://support.toshiba.com/drivers"',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Installers': {
|
||||||
|
'SW Bundle': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'install_sw_bundle.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Installers\Extras\Office\2013': {
|
||||||
|
'Home and Business 2013 (x32)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2013',
|
||||||
|
'L_ITEM': 'hb_32.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Home and Business 2013 (x64)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2013',
|
||||||
|
'L_ITEM': 'hb_64.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Home and Student 2013 (x32)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2013',
|
||||||
|
'L_ITEM': 'hs_32.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Home and Student 2013 (x64)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2013',
|
||||||
|
'L_ITEM': 'hs_64.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Installers\Extras\Office\2016': {
|
||||||
|
'Home and Business 2016 (x32)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2016',
|
||||||
|
'L_ITEM': 'hb_32.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Home and Business 2016 (x64)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2016',
|
||||||
|
'L_ITEM': 'hb_64.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Home and Student 2016 (x32)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2016',
|
||||||
|
'L_ITEM': 'hs_32.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Home and Student 2016 (x64)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2016',
|
||||||
|
'L_ITEM': 'hs_64.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Office 365 2016 (x32)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2016',
|
||||||
|
'L_ITEM': '365_32.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
'Office 365 2016 (x64)': {
|
||||||
|
'L_TYPE': 'Office',
|
||||||
|
'L_PATH': '2016',
|
||||||
|
'L_ITEM': '365_64.xml',
|
||||||
|
'L_NCMD': 'True',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Installers\Extras\Runtimes': {
|
||||||
|
'Visual C++ Runtimes': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'install_vcredists.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Misc': {
|
||||||
|
'ConEmu (as ADMIN)': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'ConEmu',
|
||||||
|
'L_ITEM': 'ConEmu.exe',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'ConEmu': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'ConEmu',
|
||||||
|
'L_ITEM': 'ConEmu.exe',
|
||||||
|
},
|
||||||
|
'Everything': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'Everything',
|
||||||
|
'L_ITEM': 'Everything.exe',
|
||||||
|
'L_ARGS': '-nodb',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'Notepad++': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'notepadplusplus',
|
||||||
|
'L_ITEM': 'notepadplusplus.exe',
|
||||||
|
},
|
||||||
|
'PuTTY': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'PuTTY',
|
||||||
|
'L_ITEM': 'PUTTY.EXE',
|
||||||
|
},
|
||||||
|
'TreeSizeFree': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'TreeSizeFree',
|
||||||
|
'L_ITEM': 'TreeSizeFree.exe',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'Update Kit': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'update_kit.py',
|
||||||
|
},
|
||||||
|
'XMPlay': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'XMPlay',
|
||||||
|
'L_ITEM': 'xmplay.exe',
|
||||||
|
'L_ARGS': '"%bin%\XMPlay\music.7z"',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Repairs': {
|
||||||
|
'AdwCleaner': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'AdwCleaner',
|
||||||
|
'L_ITEM': 'AdwCleaner.exe',
|
||||||
|
},
|
||||||
|
'Autoruns': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'Autoruns',
|
||||||
|
'L_ITEM': 'Autoruns.exe',
|
||||||
|
'L_ARGS': '-e',
|
||||||
|
'Extra Code': [
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v checkvirustotal /t REG_DWORD /d 0 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v EulaAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v shownomicrosoft /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v shownowindows /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v showonlyvirustotal /t REG_DWORD /d 0 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v submitvirustotal /t REG_DWORD /d 0 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns /v verifysignatures /t REG_DWORD /d 0 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns\SigCheck /v EulaAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns\Streams /v EulaAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
r'reg add HKCU\Software\Sysinternals\AutoRuns\VirusTotal /v VirusTotalTermsAccepted /t REG_DWORD /d 1 /f >nul',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'CHKDSK': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'check_disk.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'DISM': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'dism.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'KVRT': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'KVRT',
|
||||||
|
'L_ITEM': 'KVRT.exe',
|
||||||
|
'L_ARGS': (
|
||||||
|
r' -accepteula'
|
||||||
|
r' -d %q_dir%'
|
||||||
|
r' -processlevel 3'
|
||||||
|
r' -dontcryptsupportinfo'
|
||||||
|
r' -fixednames'
|
||||||
|
),
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Quarantine',
|
||||||
|
r'set "q_dir=%client_dir%\Quarantine\KVRT"',
|
||||||
|
r'mkdir "%q_dir%">nul 2>&1',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'RKill': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'RKill',
|
||||||
|
'L_ITEM': 'RKill.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Info',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'SFC Scan': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'sfc_scan.py',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'TDSSKiller': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'TDSSKiller',
|
||||||
|
'L_ITEM': 'TDSSKiller.exe',
|
||||||
|
'L_ARGS': (
|
||||||
|
r' -l %log_dir%\TDSSKiller.log'
|
||||||
|
r' -qpath %q_dir%'
|
||||||
|
r' -accepteula'
|
||||||
|
r' -accepteulaksn'
|
||||||
|
r' -dcexact'
|
||||||
|
r' -tdlfs'
|
||||||
|
),
|
||||||
|
'Extra Code': [
|
||||||
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Quarantine',
|
||||||
|
r'set "q_dir=%client_dir%\Quarantine\TDSSKiller"',
|
||||||
|
r'mkdir "%q_dir%">nul 2>&1',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
r'Uninstallers': {
|
||||||
|
'IObit Uninstaller': {
|
||||||
|
'L_TYPE': 'Executable',
|
||||||
|
'L_PATH': 'IObitUninstallerPortable',
|
||||||
|
'L_ITEM': 'IObitUninstallerPortable.exe',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("This file is not meant to be called directly.")
|
||||||
|
|
@ -1,68 +1,68 @@
|
||||||
# Wizard Kit: Settings - Main / Branding
|
# Wizard Kit: Settings - Main / Branding
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
ENABLED_UPLOAD_DATA = False
|
ENABLED_UPLOAD_DATA = False
|
||||||
|
|
||||||
# STATIC VARIABLES (also used by .cmd files)
|
# STATIC VARIABLES (also used by .cmd files)
|
||||||
## Not using spaces aroung '=' for easier .cmd substrings
|
## Not using spaces aroung '=' for easier .cmd substrings
|
||||||
ARCHIVE_PASSWORD='Abracadabra'
|
ARCHIVE_PASSWORD='Abracadabra'
|
||||||
KIT_NAME_FULL='Wizard Kit'
|
KIT_NAME_FULL='Wizard Kit'
|
||||||
KIT_NAME_SHORT='WK'
|
KIT_NAME_SHORT='WK'
|
||||||
OFFICE_SERVER_IP='10.0.0.10'
|
OFFICE_SERVER_IP='10.0.0.10'
|
||||||
QUICKBOOKS_SERVER_IP='10.0.0.10'
|
QUICKBOOKS_SERVER_IP='10.0.0.10'
|
||||||
SUPPORT_TECH='2Shirt'
|
SUPPORT_TECH='2Shirt'
|
||||||
TIME_ZONE='Pacific Standard Time' # Always use "Standard Time" (DST is applied correctly)
|
TIME_ZONE='Pacific Standard Time' # Always use "Standard Time" (DST is applied correctly)
|
||||||
|
|
||||||
# SERVER VARIABLES
|
# SERVER VARIABLES
|
||||||
## NOTE: Windows can only use one user per server. This means that if
|
## NOTE: Windows can only use one user per server. This means that if
|
||||||
## one server serves multiple shares then you have to use the same
|
## one server serves multiple shares then you have to use the same
|
||||||
## user/password for all of those shares.
|
## user/password for all of those shares.
|
||||||
BACKUP_SERVERS = [
|
BACKUP_SERVERS = [
|
||||||
{ 'IP': '10.0.0.10',
|
{ 'IP': '10.0.0.10',
|
||||||
'Name': 'ServerOne',
|
'Name': 'ServerOne',
|
||||||
'Mounted': False,
|
'Mounted': False,
|
||||||
'Share': 'Backups',
|
'Share': 'Backups',
|
||||||
'User': 'restore',
|
'User': 'restore',
|
||||||
'Pass': 'Abracadabra',
|
'Pass': 'Abracadabra',
|
||||||
},
|
},
|
||||||
{ 'IP': '10.0.0.11',
|
{ 'IP': '10.0.0.11',
|
||||||
'Name': 'ServerTwo',
|
'Name': 'ServerTwo',
|
||||||
'Mounted': False,
|
'Mounted': False,
|
||||||
'Share': 'Backups',
|
'Share': 'Backups',
|
||||||
'User': 'restore',
|
'User': 'restore',
|
||||||
'Pass': 'Abracadabra',
|
'Pass': 'Abracadabra',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
CLIENT_INFO_SERVER = {
|
CLIENT_INFO_SERVER = {
|
||||||
'IP': '10.0.0.10',
|
'IP': '10.0.0.10',
|
||||||
'RegEntry': r'0x10001,0xcc674aebbd889f5fd553564adcf3cab550791eca12542033d52134db893c95aabb6b318a4621d8116f6838d873edfe9db4509e1dfc9177ee7484808a62cbc42b913387f694fd67e81950f85198acf721c5767b54db7b864d69cce65e12c78c87d0fb4fc54996609c9b9274b1de7bae2f95000c9ca8d7e3f9b3f2cdb21cd578adf9ba98d10400a8203bb1a879a4cd2fad99baeb12738b9b4b99fec821f881acb62598a43c059f74af287bc8dceeb4821317aa44e2e0ee66d346927a654c702854a71a2eaed6a53f6be9360c7049974a2597a548361da42ac982ae55f993700a8b1fc9f3b4458314fbd41f239de0a29716cdcefbbb2c8d02b4c2effa4163cfeac9',
|
'RegEntry': r'0x10001,0xcc674aebbd889f5fd553564adcf3cab550791eca12542033d52134db893c95aabb6b318a4621d8116f6838d873edfe9db4509e1dfc9177ee7484808a62cbc42b913387f694fd67e81950f85198acf721c5767b54db7b864d69cce65e12c78c87d0fb4fc54996609c9b9274b1de7bae2f95000c9ca8d7e3f9b3f2cdb21cd578adf9ba98d10400a8203bb1a879a4cd2fad99baeb12738b9b4b99fec821f881acb62598a43c059f74af287bc8dceeb4821317aa44e2e0ee66d346927a654c702854a71a2eaed6a53f6be9360c7049974a2597a548361da42ac982ae55f993700a8b1fc9f3b4458314fbd41f239de0a29716cdcefbbb2c8d02b4c2effa4163cfeac9',
|
||||||
'Share': '/srv/ClientInfo',
|
'Share': '/srv/ClientInfo',
|
||||||
'User': 'upload',
|
'User': 'upload',
|
||||||
}
|
}
|
||||||
QUICKBOOKS_SERVER = {
|
OFFICE_SERVER = {
|
||||||
'IP': QUICKBOOKS_SERVER_IP,
|
'IP': OFFICE_SERVER_IP,
|
||||||
'Name': 'ServerOne',
|
'Name': 'ServerOne',
|
||||||
'Mounted': False,
|
'Mounted': False,
|
||||||
'Share': 'QuickBooks',
|
'Share': 'Office',
|
||||||
'User': 'restore',
|
'User': 'restore',
|
||||||
'Pass': 'Abracadabra',
|
'Pass': 'Abracadabra',
|
||||||
}
|
}
|
||||||
OFFICE_SERVER = {
|
QUICKBOOKS_SERVER = {
|
||||||
'IP': OFFICE_SERVER_IP,
|
'IP': QUICKBOOKS_SERVER_IP,
|
||||||
'Name': 'ServerOne',
|
'Name': 'ServerOne',
|
||||||
'Mounted': False,
|
'Mounted': False,
|
||||||
'Share': 'Office',
|
'Share': 'QuickBooks',
|
||||||
'User': 'restore',
|
'User': 'restore',
|
||||||
'Pass': 'Abracadabra',
|
'Pass': 'Abracadabra',
|
||||||
}
|
}
|
||||||
WINDOWS_SERVER = {
|
WINDOWS_SERVER = {
|
||||||
'IP': '10.0.0.10',
|
'IP': '10.0.0.10',
|
||||||
'Name': 'ServerOne',
|
'Name': 'ServerOne',
|
||||||
'Mounted': False,
|
'Mounted': False,
|
||||||
'Share': 'Windows',
|
'Share': 'Windows',
|
||||||
'User': 'restore',
|
'User': 'restore',
|
||||||
'Pass': 'Abracadabra',
|
'Pass': 'Abracadabra',
|
||||||
}
|
}
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
70
.bin/Scripts/settings/music.py
Normal file
70
.bin/Scripts/settings/music.py
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
# Wizard Kit: Settings - Music
|
||||||
|
|
||||||
|
MUSIC_MOD = [
|
||||||
|
'104208#banana_boat.mod',
|
||||||
|
'114971#tilbury_fair.mod',
|
||||||
|
'132563#ufo_tune.mod',
|
||||||
|
'135906#magnetik_girl.xm',
|
||||||
|
'140628#autumn_in_budapest.xm',
|
||||||
|
'143198#summer_memories_3.xm',
|
||||||
|
'144405#hillbilly_billyboy.xm',
|
||||||
|
'154795#4mat_-_eternity.xm',
|
||||||
|
'155845#bookworm.mo3',
|
||||||
|
'155914#battleofsteel.xm',
|
||||||
|
'158975#1_channel_moog.it',
|
||||||
|
'165495#trans.s3m',
|
||||||
|
'168513#necros_-_introspection.s3m',
|
||||||
|
'169628#radix_-_feng_shui_schematics.xm',
|
||||||
|
'175238#unknown48_-_twilight.mod',
|
||||||
|
'33432#ambrozia.xm',
|
||||||
|
'33460#amigatre.mod',
|
||||||
|
'34594#CHARIOT.S3M',
|
||||||
|
'34596#BUTTERFL.XM',
|
||||||
|
'34654#CTGOBLIN.S3M',
|
||||||
|
'35151#bananasplit.mod',
|
||||||
|
'35280#DEADLOCK.XM',
|
||||||
|
'38591#compo_liam.xm',
|
||||||
|
'39987#crystald.s3m',
|
||||||
|
'40475#ELYSIUM.MOD',
|
||||||
|
'42146#enigma.mod',
|
||||||
|
'42519#GHOST2.MOD',
|
||||||
|
'42560#GSLINGER.MOD',
|
||||||
|
'42872#existing.xm',
|
||||||
|
'50427#nf-stven.xm',
|
||||||
|
'51549#overture.mod',
|
||||||
|
'54250#SATELL.S3M',
|
||||||
|
'54313#realmk.s3m',
|
||||||
|
'55789#scrambld.mod',
|
||||||
|
'57934#spacedeb.mod',
|
||||||
|
'59344#stardstm.mod',
|
||||||
|
'60395#2ND_PM.S3M',
|
||||||
|
'66187#external.xm',
|
||||||
|
'66343#beek-substitutionology.it',
|
||||||
|
'67561#radix-unreal_superhero.xm',
|
||||||
|
'70829#inside_out.s3m',
|
||||||
|
'83779#beyond_music.mod',
|
||||||
|
]
|
||||||
|
|
||||||
|
MUSIC_SNES = [
|
||||||
|
'actr',
|
||||||
|
'crock',
|
||||||
|
'ct',
|
||||||
|
'dkc',
|
||||||
|
'dkq',
|
||||||
|
'ff6',
|
||||||
|
'fz',
|
||||||
|
'loz3',
|
||||||
|
'mmx',
|
||||||
|
'ptws',
|
||||||
|
'scv4',
|
||||||
|
'sf',
|
||||||
|
'sf2',
|
||||||
|
'sgng',
|
||||||
|
'smk',
|
||||||
|
'smw',
|
||||||
|
'yi',
|
||||||
|
'zamn'
|
||||||
|
]
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("This file is not meant to be called directly.")
|
||||||
203
.bin/Scripts/settings/sources.py
Normal file
203
.bin/Scripts/settings/sources.py
Normal file
|
|
@ -0,0 +1,203 @@
|
||||||
|
# Wizard Kit: Settings - Sources
|
||||||
|
|
||||||
|
SOURCE_URLS = {
|
||||||
|
'AIDA64': 'http://download.aida64.com/aida64engineer592.zip',
|
||||||
|
'Adobe Reader DC': 'http://ardownload.adobe.com/pub/adobe/reader/win/AcrobatDC/1800920044/AcroRdrDC1800920044_en_US.exe',
|
||||||
|
'AdwCleaner': 'https://toolslib.net/downloads/finish/1-adwcleaner/',
|
||||||
|
'Autoruns': 'https://download.sysinternals.com/files/Autoruns.zip',
|
||||||
|
'BleachBit': 'https://download.bleachbit.org/beta/1.17/BleachBit-1.17-portable.zip',
|
||||||
|
'BlueScreenView32': 'http://www.nirsoft.net/utils/bluescreenview.zip',
|
||||||
|
'BlueScreenView64': 'http://www.nirsoft.net/utils/bluescreenview-x64.zip',
|
||||||
|
'Caffeine': 'http://www.zhornsoftware.co.uk/caffeine/caffeine.zip',
|
||||||
|
'ClassicStartSkin': 'http://www.classicshell.net/forum/download/file.php?id=3001&sid=9a195960d98fd754867dcb63d9315335',
|
||||||
|
'Du': 'https://download.sysinternals.com/files/DU.zip',
|
||||||
|
'ERUNT': 'http://www.aumha.org/downloads/erunt.zip',
|
||||||
|
'Everything32': 'https://www.voidtools.com/Everything-1.4.1.877.x86.zip',
|
||||||
|
'Everything64': 'https://www.voidtools.com/Everything-1.4.1.877.x64.zip',
|
||||||
|
'FastCopy32': 'http://ftp.vector.co.jp/69/28/2323/FastCopy332.zip',
|
||||||
|
'FastCopy64': 'http://ftp.vector.co.jp/69/28/2323/FastCopy332_x64.zip',
|
||||||
|
'Firefox uBO': 'https://addons.mozilla.org/firefox/downloads/file/764482/ublock_origin-1.14.18-an+fx.xpi?src=dp-btn-primary',
|
||||||
|
'HWiNFO32': 'http://app.oldfoss.com:81/download/HWiNFO/hw32_560.zip',
|
||||||
|
'HWiNFO64': 'http://app.oldfoss.com:81/download/HWiNFO/hw64_560.zip',
|
||||||
|
'HitmanPro32': 'https://dl.surfright.nl/HitmanPro.exe',
|
||||||
|
'HitmanPro64': 'https://dl.surfright.nl/HitmanPro_x64.exe',
|
||||||
|
'IOBit_Uninstaller': 'https://portableapps.com/redirect/?a=IObitUninstallerPortable&t=http%3A%2F%2Fdownloads.portableapps.com%2Fportableapps%2Fiobituninstallerportable%2FIObitUninstallerPortable_7.0.2.49.paf.exe',
|
||||||
|
'Intel SSD Toolbox': r'https://downloadmirror.intel.com/27330/eng/Intel%20SSD%20Toolbox%20-%20v3.4.9.exe',
|
||||||
|
'KVRT': 'http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe',
|
||||||
|
'NotepadPlusPlus': 'https://notepad-plus-plus.org/repository/7.x/7.5.1/npp.7.5.1.bin.minimalist.7z',
|
||||||
|
'Office Deployment Tool 2013': 'https://download.microsoft.com/download/6/2/3/6230F7A2-D8A9-478B-AC5C-57091B632FCF/officedeploymenttool_x86_4827-1000.exe',
|
||||||
|
'Office Deployment Tool 2016': 'https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_8529.3600.exe',
|
||||||
|
'ProduKey32': 'http://www.nirsoft.net/utils/produkey.zip',
|
||||||
|
'ProduKey64': 'http://www.nirsoft.net/utils/produkey-x64.zip',
|
||||||
|
'PuTTY': 'https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip',
|
||||||
|
'RKill': 'https://www.bleepingcomputer.com/download/rkill/dl/10/',
|
||||||
|
'SDIO Themes': 'http://snappy-driver-installer.org/downloads/SDIO_Themes.zip',
|
||||||
|
'SDIO Torrent': 'http://snappy-driver-installer.org/downloads/SDIO_Update.torrent',
|
||||||
|
'Samsung Magician': 'http://downloadcenter.samsung.com/content/SW/201710/20171019164455812/Samsung_Magician_Installer.exe',
|
||||||
|
'TDSSKiller': 'https://media.kaspersky.com/utilities/VirusUtilities/EN/tdsskiller.exe',
|
||||||
|
'TestDisk': 'https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip',
|
||||||
|
'TreeSizeFree': 'https://www.jam-software.com/treesize_free/TreeSizeFree-Portable.zip',
|
||||||
|
'wimlib32': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-i686-bin.zip',
|
||||||
|
'wimlib64': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-x86_64-bin.zip',
|
||||||
|
'Winapp2': 'https://github.com/MoscaDotTo/Winapp2/archive/master.zip',
|
||||||
|
'XMPlay 7z': 'http://support.xmplay.com/files/16/xmp-7z.zip?v=800962',
|
||||||
|
'XMPlay Game': 'http://support.xmplay.com/files/12/xmp-gme.zip?v=515637',
|
||||||
|
'XMPlay RAR': 'http://support.xmplay.com/files/16/xmp-rar.zip?v=409646',
|
||||||
|
'XMPlay WAModern': 'http://support.xmplay.com/files/10/WAModern.zip?v=207099',
|
||||||
|
'XMPlay': 'http://support.xmplay.com/files/20/xmplay3823.zip?v=115916',
|
||||||
|
'XYplorerFree': 'https://www.xyplorer.com/download/xyplorer_free_noinstall.zip',
|
||||||
|
'aria2': 'https://github.com/aria2/aria2/releases/download/release-1.33.1/aria2-1.33.1-win-32bit-build1.zip',
|
||||||
|
}
|
||||||
|
VCREDIST_SOURCES = {
|
||||||
|
'2008sp1': {
|
||||||
|
'32': 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe',
|
||||||
|
'64': 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe',
|
||||||
|
},
|
||||||
|
'2010sp1': {
|
||||||
|
'32': 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe',
|
||||||
|
'64': 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe',
|
||||||
|
},
|
||||||
|
'2012u4': {
|
||||||
|
'32': 'https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe',
|
||||||
|
'64': 'https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe',
|
||||||
|
},
|
||||||
|
'2013': {
|
||||||
|
'32': 'https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x86.exe',
|
||||||
|
'64': 'https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x64.exe',
|
||||||
|
},
|
||||||
|
'2017': {
|
||||||
|
'32': 'https://download.visualstudio.microsoft.com/download/pr/11100229/78c1e864d806e36f6035d80a0e80399e/VC_redist.x86.exe',
|
||||||
|
'64': 'https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
NINITE_SOURCES = {
|
||||||
|
'Bundles': {
|
||||||
|
'Runtimes.exe': '.net4.7-air-java8-silverlight',
|
||||||
|
'Legacy.exe': '.net4.7-7zip-air-chrome-firefox-java8-silverlight-vlc',
|
||||||
|
'Modern.exe': '.net4.7-7zip-air-chrome-classicstart-firefox-java8-silverlight-vlc',
|
||||||
|
},
|
||||||
|
'Audio-Video': {
|
||||||
|
'AIMP.exe': 'aimp',
|
||||||
|
'Audacity.exe': 'audacity',
|
||||||
|
'CCCP.exe': 'cccp',
|
||||||
|
'Foobar2000.exe': 'foobar',
|
||||||
|
'GOM.exe': 'gom',
|
||||||
|
'HandBrake.exe': 'handbrake',
|
||||||
|
'iTunes.exe': 'itunes',
|
||||||
|
'K-Lite Codecs.exe': 'klitecodecs',
|
||||||
|
'MediaMonkey.exe': 'mediamonkey',
|
||||||
|
'MusicBee.exe': 'musicbee',
|
||||||
|
'Spotify.exe': 'spotify',
|
||||||
|
'VLC.exe': 'vlc',
|
||||||
|
'Winamp.exe': 'winamp',
|
||||||
|
},
|
||||||
|
'Cloud Storage': {
|
||||||
|
'Dropbox.exe': 'dropbox',
|
||||||
|
'Google Backup & Sync.exe': 'googlebackupandsync',
|
||||||
|
'Mozy.exe': 'mozy',
|
||||||
|
'OneDrive.exe': 'onedrive',
|
||||||
|
'SugarSync.exe': 'sugarsync',
|
||||||
|
},
|
||||||
|
'Communication': {
|
||||||
|
'Pidgin.exe': 'pidgin',
|
||||||
|
'Skype.exe': 'skype',
|
||||||
|
'Trillian.exe': 'trillian',
|
||||||
|
},
|
||||||
|
'Compression': {
|
||||||
|
'7-Zip.exe': '7zip',
|
||||||
|
'PeaZip.exe': 'peazip',
|
||||||
|
'WinRAR.exe': 'winrar',
|
||||||
|
},
|
||||||
|
'Developer': {
|
||||||
|
'Eclipse.exe': 'eclipse',
|
||||||
|
'FileZilla.exe': 'filezilla',
|
||||||
|
'JDK 8.exe': 'jdk8',
|
||||||
|
'JDK 8 (x64).exe': 'jdkx8',
|
||||||
|
'Notepad++.exe': 'notepadplusplus',
|
||||||
|
'PuTTY.exe': 'putty',
|
||||||
|
'Python 2.exe': 'python',
|
||||||
|
'Visual Studio Code.exe': 'vscode',
|
||||||
|
'WinMerge.exe': 'winmerge',
|
||||||
|
'WinSCP.exe': 'winscp',
|
||||||
|
},
|
||||||
|
'File Sharing': {
|
||||||
|
'qBittorrent.exe': 'qbittorrent',
|
||||||
|
},
|
||||||
|
'Image-Photo': {
|
||||||
|
'Blender.exe': 'blender',
|
||||||
|
'FastStone.exe': 'faststone',
|
||||||
|
'GIMP.exe': 'gimp',
|
||||||
|
'Greenshot.exe': 'greenshot',
|
||||||
|
'Inkscape.exe': 'inkscape',
|
||||||
|
'IrfanView.exe': 'irfanview',
|
||||||
|
'Krita.exe': 'krita',
|
||||||
|
'Paint.NET.exe': 'paint.net',
|
||||||
|
'ShareX.exe': 'sharex',
|
||||||
|
'XnView.exe': 'xnview',
|
||||||
|
},
|
||||||
|
'Misc': {
|
||||||
|
'Evernote.exe': 'evernote',
|
||||||
|
'Everything.exe': 'everything',
|
||||||
|
'KeePass 2.exe': 'keepass2',
|
||||||
|
'Google Earth.exe': 'googleearth',
|
||||||
|
'NV Access.exe': 'nvda',
|
||||||
|
'Steam.exe': 'steam',
|
||||||
|
},
|
||||||
|
'Office': {
|
||||||
|
'CutePDF.exe': 'cutepdf',
|
||||||
|
'Foxit Reader.exe': 'foxit',
|
||||||
|
'LibreOffice.exe': 'libreoffice',
|
||||||
|
'OpenOffice.exe': 'openoffice',
|
||||||
|
'PDFCreator.exe': 'pdfcreator',
|
||||||
|
'SumatraPDF.exe': 'sumatrapdf',
|
||||||
|
'Thunderbird.exe': 'thunderbird',
|
||||||
|
},
|
||||||
|
'Runtimes': {
|
||||||
|
'Adobe Air.exe': 'air',
|
||||||
|
'dotNET.exe': '.net4.7',
|
||||||
|
'Java 8.exe': 'java8',
|
||||||
|
'Shockwave.exe': 'shockwave',
|
||||||
|
'Silverlight.exe': 'silverlight',
|
||||||
|
},
|
||||||
|
'Security': {
|
||||||
|
'Avast.exe': 'avast',
|
||||||
|
'AVG.exe': 'avg',
|
||||||
|
'Avira.exe': 'avira',
|
||||||
|
'Microsoft Security Essentials.exe': 'essentials',
|
||||||
|
'Malwarebytes Anti-Malware.exe': 'malwarebytes',
|
||||||
|
'Spybot 2.exe': 'spybot2',
|
||||||
|
'SUPERAntiSpyware.exe': 'super',
|
||||||
|
},
|
||||||
|
'Utilities': {
|
||||||
|
'CDBurnerXP.exe': 'cdburnerxp',
|
||||||
|
'Classic Start.exe': 'classicstart',
|
||||||
|
'Glary Utilities.exe': 'glary',
|
||||||
|
'ImgBurn.exe': 'imgburn',
|
||||||
|
'InfraRecorder.exe': 'infrarecorder',
|
||||||
|
'Launchy.exe': 'launchy',
|
||||||
|
'RealVNC.exe': 'realvnc',
|
||||||
|
'Revo Uninstaller.exe': 'revo',
|
||||||
|
'TeamViewer 12.exe': 'teamviewer12',
|
||||||
|
'TeraCopy.exe': 'teracopy',
|
||||||
|
'WinDirStat.exe': 'windirstat',
|
||||||
|
},
|
||||||
|
'Web Browsers': {
|
||||||
|
'Google Chrome.exe': 'chrome',
|
||||||
|
'Mozilla Firefox.exe': 'firefox',
|
||||||
|
'Opera Chromium.exe': 'operaChromium',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
RST_SOURCES = {
|
||||||
|
#SetupRST_12.0.exe : Removed from download center?
|
||||||
|
#SetupRST_12.5.exe : Removed from download center?
|
||||||
|
#SetupRST_12.8.exe : Removed from download center?
|
||||||
|
'SetupRST_12.9.exe': 'https://downloadmirror.intel.com/23496/eng/SetupRST.exe',
|
||||||
|
#SetupRST_13.x.exe : Broken, doesn't support > .NET 4.5
|
||||||
|
'SetupRST_14.0.exe': 'https://downloadmirror.intel.com/25091/eng/SetupRST.exe',
|
||||||
|
'SetupRST_14.8.exe': 'https://downloadmirror.intel.com/26759/eng/setuprst.exe',
|
||||||
|
'SetupRST_15.8.exe': 'https://downloadmirror.intel.com/27147/eng/SetupRST.exe',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("This file is not meant to be called directly.")
|
||||||
55
.bin/Scripts/settings/tools.py
Normal file
55
.bin/Scripts/settings/tools.py
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
# Wizard Kit: Settings - Tools
|
||||||
|
|
||||||
|
TOOLS = {
|
||||||
|
# NOTE: BinDir will be prepended to these paths at runtime
|
||||||
|
'AIDA64': {
|
||||||
|
'32': r'AIDA64\aida64.exe'},
|
||||||
|
'AutoRuns': {
|
||||||
|
'32': r'Autoruns\autoruns.exe',
|
||||||
|
'64': r'Autoruns\autoruns64.exe'},
|
||||||
|
'BleachBit': {
|
||||||
|
'32': r'BleachBit\bleachbit_console.exe'},
|
||||||
|
'Caffeine': {
|
||||||
|
'32': r'Caffeine\caffeine.exe'},
|
||||||
|
'Du': {
|
||||||
|
'32': r'Du\du.exe',
|
||||||
|
'64': r'Du\du64.exe'},
|
||||||
|
'ERUNT': {
|
||||||
|
'32': r'ERUNT\ERUNT.EXE'},
|
||||||
|
'Everything': {
|
||||||
|
'32': r'Everything\Everything.exe',
|
||||||
|
'64': r'Everything\Everything64.exe'},
|
||||||
|
'FastCopy': {
|
||||||
|
'32': r'FastCopy\FastCopy.exe',
|
||||||
|
'64': r'FastCopy\FastCopy64.exe'},
|
||||||
|
'HitmanPro': {
|
||||||
|
'32': r'HitmanPro\HitmanPro.exe',
|
||||||
|
'64': r'HitmanPro\HitmanPro64.exe'},
|
||||||
|
'HWiNFO': {
|
||||||
|
'32': r'HWiNFO\HWiNFO.exe',
|
||||||
|
'64': r'HWiNFO\HWiNFO64.exe'},
|
||||||
|
'KVRT': {
|
||||||
|
'32': r'KVRT\KVRT.exe'},
|
||||||
|
'NotepadPlusPlus': {
|
||||||
|
'32': r'NotepadPlusPlus\notepadplusplus.exe'},
|
||||||
|
'ProduKey': {
|
||||||
|
'32': r'ProduKey\ProduKey.exe',
|
||||||
|
'64': r'ProduKey\ProduKey64.exe'},
|
||||||
|
'PuTTY-PSFTP': {
|
||||||
|
'32': r'PuTTY\PSFTP.EXE'},
|
||||||
|
'RKill': {
|
||||||
|
'32': r'RKill\RKill.exe'},
|
||||||
|
'SevenZip': {
|
||||||
|
'32': r'7-Zip\7za.exe',
|
||||||
|
'64': r'7-Zip\7za64.exe'},
|
||||||
|
'TDSSKiller': {
|
||||||
|
'32': r'TDSSKiller\TDSSKiller.exe'},
|
||||||
|
'wimlib-imagex': {
|
||||||
|
'32': r'wimlib\x32\wimlib-imagex.exe',
|
||||||
|
'64': r'wimlib\x64\wimlib-imagex.exe'},
|
||||||
|
'XMPlay': {
|
||||||
|
'32': r'XMPlay\xmplay.exe'},
|
||||||
|
}
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("This file is not meant to be called directly.")
|
||||||
|
|
@ -1,34 +1,39 @@
|
||||||
# Wizard Kit: Check, and possibly repair, system file health via SFC
|
# Wizard Kit: Check, and possibly repair, system file health via SFC
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.repairs import *
|
from functions.repairs import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: SFC Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: SFC Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\SFC Tool.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\SFC Tool.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
other_results = {
|
stay_awake()
|
||||||
'Error': {
|
os.system('cls')
|
||||||
'CalledProcessError': 'Unknown Error',
|
print_info('{}: SFC Tool\n'.format(KIT_NAME_FULL))
|
||||||
},
|
other_results = {
|
||||||
'Warning': {
|
'Error': {
|
||||||
'GenericRepair': 'Repaired',
|
'CalledProcessError': 'Unknown Error',
|
||||||
}}
|
},
|
||||||
stay_awake()
|
'Warning': {
|
||||||
try_and_print(message='SFC scan...',
|
'GenericRepair': 'Repaired',
|
||||||
function=run_sfc_scan, other_results=other_results)
|
}}
|
||||||
|
if ask('Run a SFC scan now?'):
|
||||||
# Done
|
try_and_print(message='SFC scan...',
|
||||||
print_standard('\nDone.')
|
function=run_sfc_scan, other_results=other_results)
|
||||||
pause('Press Enter to exit...')
|
else:
|
||||||
exit_script()
|
abort()
|
||||||
except SystemExit:
|
|
||||||
pass
|
# Done
|
||||||
except:
|
print_standard('\nDone.')
|
||||||
major_exception()
|
pause('Press Enter to exit...')
|
||||||
|
exit_script()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,105 +1,106 @@
|
||||||
# Wizard Kit: System Checklist
|
# Wizard Kit: System Checklist
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.cleanup import *
|
from functions.cleanup import *
|
||||||
from functions.diags import *
|
from functions.diags import *
|
||||||
from functions.info import *
|
from functions.info import *
|
||||||
from functions.product_keys import *
|
from functions.product_keys import *
|
||||||
from functions.setup import *
|
from functions.setup import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: System Checklist Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: System Checklist Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\System Checklist.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\System Checklist.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
stay_awake()
|
stay_awake()
|
||||||
ticket_number = get_ticket_number()
|
os.system('cls')
|
||||||
os.system('cls')
|
print_info('{}: System Checklist Tool\n'.format(KIT_NAME_FULL))
|
||||||
other_results = {
|
ticket_number = get_ticket_number()
|
||||||
'Error': {
|
other_results = {
|
||||||
'CalledProcessError': 'Unknown Error',
|
'Error': {
|
||||||
'BIOSKeyNotFoundError': 'BIOS key not found',
|
'CalledProcessError': 'Unknown Error',
|
||||||
},
|
'BIOSKeyNotFoundError': 'BIOS key not found',
|
||||||
'Warning': {}}
|
},
|
||||||
print_info('Starting System Checklist for Ticket #{}\n'.format(
|
'Warning': {}}
|
||||||
ticket_number))
|
print_info('Starting System Checklist for Ticket #{}\n'.format(
|
||||||
|
ticket_number))
|
||||||
# Configure
|
|
||||||
print_info('Configure')
|
# Configure
|
||||||
if global_vars['OS']['Version'] == '10':
|
print_info('Configure')
|
||||||
try_and_print(message='Explorer...',
|
if global_vars['OS']['Version'] == '10':
|
||||||
function=config_explorer_system, cs='Done')
|
try_and_print(message='Explorer...',
|
||||||
try_and_print(message='Updating Clock...',
|
function=config_explorer_system, cs='Done')
|
||||||
function=update_clock, cs='Done')
|
try_and_print(message='Updating Clock...',
|
||||||
|
function=update_clock, cs='Done')
|
||||||
# Cleanup
|
|
||||||
print_info('Cleanup')
|
# Cleanup
|
||||||
try_and_print(message='Desktop...',
|
print_info('Cleanup')
|
||||||
function=cleanup_desktop, cs='Done')
|
try_and_print(message='Desktop...',
|
||||||
try_and_print(message='AdwCleaner...',
|
function=cleanup_desktop, cs='Done')
|
||||||
function=cleanup_adwcleaner, cs='Done')
|
try_and_print(message='AdwCleaner...',
|
||||||
|
function=cleanup_adwcleaner, cs='Done')
|
||||||
# Export system info
|
|
||||||
print_info('Backup System Information')
|
# Export system info
|
||||||
try_and_print(message='AIDA64 reports...',
|
print_info('Backup System Information')
|
||||||
function=run_aida64, cs='Done')
|
try_and_print(message='AIDA64 reports...',
|
||||||
try_and_print(message='File listing...',
|
function=run_aida64, cs='Done')
|
||||||
function=backup_file_list, cs='Done')
|
try_and_print(message='File listing...',
|
||||||
try_and_print(message='Power plans...',
|
function=backup_file_list, cs='Done')
|
||||||
function=backup_power_plans, cs='Done')
|
try_and_print(message='Power plans...',
|
||||||
try_and_print(message='Product Keys...',
|
function=backup_power_plans, cs='Done')
|
||||||
function=run_produkey, cs='Done')
|
try_and_print(message='Product Keys...',
|
||||||
try_and_print(message='Registry...',
|
function=run_produkey, cs='Done')
|
||||||
function=backup_registry, cs='Done')
|
try_and_print(message='Registry...',
|
||||||
|
function=backup_registry, cs='Done')
|
||||||
# User data
|
|
||||||
print_info('User Data')
|
# User data
|
||||||
show_user_data_summary()
|
print_info('User Data')
|
||||||
|
show_user_data_summary()
|
||||||
# Summary
|
|
||||||
print_info('Summary')
|
# Summary
|
||||||
try_and_print(message='Operating System:',
|
print_info('Summary')
|
||||||
function=show_os_name, ns='Unknown', silent_function=False)
|
try_and_print(message='Operating System:',
|
||||||
try_and_print(message='Activation:',
|
function=show_os_name, ns='Unknown', silent_function=False)
|
||||||
function=show_os_activation, ns='Unknown', silent_function=False)
|
try_and_print(message='Activation:',
|
||||||
if (not windows_is_activated()
|
function=show_os_activation, ns='Unknown', silent_function=False)
|
||||||
and global_vars['OS']['Version'] in ('8', '10')):
|
if (not windows_is_activated()
|
||||||
try_and_print(message='BIOS Activation:',
|
and global_vars['OS']['Version'] in ('8', '10')):
|
||||||
function=activate_windows_with_bios,
|
try_and_print(message='BIOS Activation:',
|
||||||
other_results=other_results)
|
function=activate_windows_with_bios,
|
||||||
try_and_print(message='Installed Office:',
|
other_results=other_results)
|
||||||
function=get_installed_office, ns='Unknown', print_return=True)
|
try_and_print(message='Installed Office:',
|
||||||
show_free_space()
|
function=get_installed_office, ns='Unknown', print_return=True)
|
||||||
try_and_print(message='Installed RAM:',
|
show_free_space()
|
||||||
function=show_installed_ram, ns='Unknown', silent_function=False)
|
try_and_print(message='Installed RAM:',
|
||||||
|
function=show_installed_ram, ns='Unknown', silent_function=False)
|
||||||
# Upload info
|
|
||||||
if ENABLED_UPLOAD_DATA:
|
# Upload info
|
||||||
print_info('Finalizing')
|
if ENABLED_UPLOAD_DATA:
|
||||||
try_and_print(message='Compressing Info...',
|
print_info('Finalizing')
|
||||||
function=compress_info, cs='Done')
|
try_and_print(message='Compressing Info...',
|
||||||
try_and_print(message='Uploading to NAS...',
|
function=compress_info, cs='Done')
|
||||||
function=upload_info, cs='Done')
|
try_and_print(message='Uploading to NAS...',
|
||||||
|
function=upload_info, cs='Done')
|
||||||
# Play audio, show devices, open Windows updates, and open Activation
|
|
||||||
popen_program(['mmc', 'devmgmt.msc'])
|
# Play audio, show devices, open Windows updates, and open Activation
|
||||||
run_hwinfo_sensors()
|
popen_program(['mmc', 'devmgmt.msc'])
|
||||||
popen_program(['control', '/name', 'Microsoft.WindowsUpdate'])
|
run_hwinfo_sensors()
|
||||||
if not windows_is_activated():
|
popen_program(['control', '/name', 'Microsoft.WindowsUpdate'])
|
||||||
popen_program('slui')
|
if not windows_is_activated():
|
||||||
sleep(3)
|
popen_program('slui')
|
||||||
run_xmplay()
|
sleep(3)
|
||||||
|
run_xmplay()
|
||||||
# Done
|
|
||||||
print_standard('\nDone.')
|
# Done
|
||||||
pause('Press Enter exit...')
|
print_standard('\nDone.')
|
||||||
exit_script()
|
pause('Press Enter exit...')
|
||||||
except SystemExit:
|
exit_script()
|
||||||
pass
|
except SystemExit:
|
||||||
except:
|
pass
|
||||||
major_exception()
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,122 +1,123 @@
|
||||||
# Wizard Kit: System Diagnostics
|
# Wizard Kit: System Diagnostics
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.browsers import *
|
from functions.browsers import *
|
||||||
from functions.diags import *
|
from functions.diags import *
|
||||||
from functions.info import *
|
from functions.info import *
|
||||||
from functions.product_keys import *
|
from functions.product_keys import *
|
||||||
from functions.repairs import *
|
from functions.repairs import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: System Diagnostics Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: System Diagnostics Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\System Diagnostics.log'.format(
|
global_vars['LogFile'] = r'{LogDir}\System Diagnostics.log'.format(
|
||||||
**global_vars)
|
**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
stay_awake()
|
stay_awake()
|
||||||
ticket_number = get_ticket_number()
|
os.system('cls')
|
||||||
os.system('cls')
|
print_info('{}: System Diagnostics Tool\n'.format(KIT_NAME_FULL))
|
||||||
other_results = {
|
ticket_number = get_ticket_number()
|
||||||
'Error': {
|
other_results = {
|
||||||
'CalledProcessError': 'Unknown Error',
|
'Error': {
|
||||||
},
|
'CalledProcessError': 'Unknown Error',
|
||||||
'Warning': {
|
},
|
||||||
'GenericRepair': 'Repaired',
|
'Warning': {
|
||||||
'UnsupportedOSError': 'Unsupported OS',
|
'GenericRepair': 'Repaired',
|
||||||
}}
|
'UnsupportedOSError': 'Unsupported OS',
|
||||||
print_info('Starting System Diagnostics for Ticket #{}\n'.format(
|
}}
|
||||||
ticket_number))
|
print_info('Starting System Diagnostics for Ticket #{}\n'.format(
|
||||||
|
ticket_number))
|
||||||
# Sanitize Environment
|
|
||||||
print_info('Sanitizing Environment')
|
# Sanitize Environment
|
||||||
try_and_print(message='Killing processes...',
|
print_info('Sanitizing Environment')
|
||||||
function=run_process_killer, cs='Done')
|
try_and_print(message='Killing processes...',
|
||||||
try_and_print(message='Running RKill...',
|
function=run_process_killer, cs='Done')
|
||||||
function=run_rkill, cs='Done')
|
try_and_print(message='Running RKill...',
|
||||||
try_and_print(message='Running TDSSKiller...',
|
function=run_rkill, cs='Done')
|
||||||
function=run_tdsskiller, cs='Done')
|
try_and_print(message='Running TDSSKiller...',
|
||||||
|
function=run_tdsskiller, cs='Done')
|
||||||
# Re-run if earlier process was stopped.
|
|
||||||
stay_awake()
|
# Re-run if earlier process was stopped.
|
||||||
|
stay_awake()
|
||||||
# Start diags
|
|
||||||
print_info('Starting Background Scans')
|
# Start diags
|
||||||
check_connection()
|
print_info('Starting Background Scans')
|
||||||
try_and_print(message='Running HitmanPro...',
|
check_connection()
|
||||||
function=run_hitmanpro, cs='Started')
|
try_and_print(message='Running HitmanPro...',
|
||||||
try_and_print(message='Running Autoruns...',
|
function=run_hitmanpro, cs='Started')
|
||||||
function=run_autoruns, cs='Started')
|
try_and_print(message='Running Autoruns...',
|
||||||
|
function=run_autoruns, cs='Started')
|
||||||
# OS Health Checks
|
|
||||||
print_info('OS Health Checks')
|
# OS Health Checks
|
||||||
try_and_print(
|
print_info('OS Health Checks')
|
||||||
message='CHKDSK ({SYSTEMDRIVE})...'.format(**global_vars['Env']),
|
try_and_print(
|
||||||
function=run_chkdsk, other_results=other_results)
|
message='CHKDSK ({SYSTEMDRIVE})...'.format(**global_vars['Env']),
|
||||||
try_and_print(message='SFC scan...',
|
function=run_chkdsk, other_results=other_results)
|
||||||
function=run_sfc_scan, other_results=other_results)
|
try_and_print(message='SFC scan...',
|
||||||
try_and_print(message='DISM CheckHealth...',
|
function=run_sfc_scan, other_results=other_results)
|
||||||
function=run_dism, other_results=other_results, repair=False)
|
try_and_print(message='DISM CheckHealth...',
|
||||||
|
function=run_dism, other_results=other_results, repair=False)
|
||||||
# Scan for supported browsers
|
|
||||||
print_info('Scanning for browsers')
|
# Scan for supported browsers
|
||||||
scan_for_browsers()
|
print_info('Scanning for browsers')
|
||||||
|
scan_for_browsers()
|
||||||
# Export system info
|
|
||||||
print_info('Backup System Information')
|
# Export system info
|
||||||
try_and_print(message='AIDA64 reports...',
|
print_info('Backup System Information')
|
||||||
function=run_aida64, cs='Done')
|
try_and_print(message='AIDA64 reports...',
|
||||||
try_and_print(message='BleachBit report...',
|
function=run_aida64, cs='Done')
|
||||||
function=run_bleachbit, cs='Done')
|
try_and_print(message='BleachBit report...',
|
||||||
backup_browsers()
|
function=run_bleachbit, cs='Done')
|
||||||
try_and_print(message='File listing...',
|
backup_browsers()
|
||||||
function=backup_file_list, cs='Done')
|
try_and_print(message='File listing...',
|
||||||
try_and_print(message='Power plans...',
|
function=backup_file_list, cs='Done')
|
||||||
function=backup_power_plans, cs='Done')
|
try_and_print(message='Power plans...',
|
||||||
try_and_print(message='Product Keys...',
|
function=backup_power_plans, cs='Done')
|
||||||
function=run_produkey, cs='Done')
|
try_and_print(message='Product Keys...',
|
||||||
try_and_print(message='Registry...',
|
function=run_produkey, cs='Done')
|
||||||
function=backup_registry, cs='Done')
|
try_and_print(message='Registry...',
|
||||||
|
function=backup_registry, cs='Done')
|
||||||
# Summary
|
|
||||||
print_info('Summary')
|
# Summary
|
||||||
try_and_print(message='Temp Size:',
|
print_info('Summary')
|
||||||
function=show_temp_files_size, silent_function=False)
|
try_and_print(message='Temp Size:',
|
||||||
show_free_space()
|
function=show_temp_files_size, silent_function=False)
|
||||||
try_and_print(message='Installed RAM:',
|
show_free_space()
|
||||||
function=show_installed_ram, ns='Unknown', silent_function=False)
|
try_and_print(message='Installed RAM:',
|
||||||
try_and_print(message='Installed Office:',
|
function=show_installed_ram, ns='Unknown', silent_function=False)
|
||||||
function=get_installed_office, ns='Unknown', print_return=True)
|
try_and_print(message='Installed Office:',
|
||||||
try_and_print(message='Product Keys:',
|
function=get_installed_office, ns='Unknown', print_return=True)
|
||||||
function=get_product_keys, ns='Unknown', print_return=True)
|
try_and_print(message='Product Keys:',
|
||||||
try_and_print(message='Operating System:',
|
function=get_product_keys, ns='Unknown', print_return=True)
|
||||||
function=show_os_name, ns='Unknown', silent_function=False)
|
try_and_print(message='Operating System:',
|
||||||
try_and_print(message='',
|
function=show_os_name, ns='Unknown', silent_function=False)
|
||||||
function=show_os_activation, ns='Unknown', silent_function=False)
|
try_and_print(message='',
|
||||||
|
function=show_os_activation, ns='Unknown', silent_function=False)
|
||||||
# User data
|
|
||||||
print_info('User Data')
|
# User data
|
||||||
try:
|
print_info('User Data')
|
||||||
show_user_data_summary()
|
try:
|
||||||
except Exception:
|
show_user_data_summary()
|
||||||
print_error(' Unknown error.')
|
except Exception:
|
||||||
|
print_error(' Unknown error.')
|
||||||
# Upload info
|
|
||||||
print_info('Finalizing')
|
# Upload info
|
||||||
try_and_print(message='Compressing Info...',
|
print_info('Finalizing')
|
||||||
function=compress_info, cs='Done')
|
try_and_print(message='Compressing Info...',
|
||||||
try_and_print(message='Uploading to NAS...',
|
function=compress_info, cs='Done')
|
||||||
function=upload_info, cs='Done')
|
try_and_print(message='Uploading to NAS...',
|
||||||
|
function=upload_info, cs='Done')
|
||||||
# Done
|
|
||||||
print_standard('\nDone.')
|
# Done
|
||||||
pause('Press Enter to exit...')
|
print_standard('\nDone.')
|
||||||
exit_script()
|
pause('Press Enter to exit...')
|
||||||
except SystemExit:
|
exit_script()
|
||||||
pass
|
except SystemExit:
|
||||||
except:
|
pass
|
||||||
major_exception()
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,28 @@
|
||||||
# Wizard Kit: Search for product keys in the transfer folder via ProduKey & SW hives
|
# Wizard Kit: Search for product keys in the transfer folder
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.product_keys import *
|
from functions.product_keys import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: ProductKey Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: Transferred Key Finder'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\Transferred Keys.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\Transferred Keys.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
stay_awake()
|
stay_awake()
|
||||||
try_and_print(message='Searching for keys...',
|
os.system('cls')
|
||||||
function=list_clientdir_keys, print_return=True)
|
print_info('{}: Transferred Key Finder\n'.format(KIT_NAME_FULL))
|
||||||
|
try_and_print(message='Searching for keys...',
|
||||||
# Done
|
function=list_clientdir_keys, print_return=True)
|
||||||
print_standard('\nDone.')
|
|
||||||
exit_script()
|
# Done
|
||||||
except SystemExit:
|
print_standard('\nDone.')
|
||||||
pass
|
exit_script()
|
||||||
except:
|
except SystemExit:
|
||||||
major_exception()
|
pass
|
||||||
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,196 +1,142 @@
|
||||||
# Wizard Kit: Download the latest versions of the programs in the kit
|
# Wizard Kit: Download the latest versions of the programs in the kit
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.build import *
|
from functions.update import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: Kit Update Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: Kit Update Tool'.format(KIT_NAME_FULL))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
other_results = {
|
os.system('cls')
|
||||||
'Error': {
|
print_info('{}: Kit Update Tool\n'.format(KIT_NAME_FULL))
|
||||||
'CalledProcessError': 'Unknown Error',
|
other_results = {
|
||||||
}}
|
'Error': {
|
||||||
stay_awake()
|
'CalledProcessError': 'Unknown Error',
|
||||||
|
}}
|
||||||
# Diagnostics
|
|
||||||
# print_info('Diagnostics')
|
## Prep ##
|
||||||
# try_and_print(message='HitmanPro...', function=update_hitmanpro, other_results=other_results)
|
update_sdio = ask('Update SDI Origin?')
|
||||||
|
|
||||||
# VR/OSR
|
## Download ##
|
||||||
# print_info('VR/OSR')
|
print_success('Downloading tools')
|
||||||
# try_and_print(message='AdwCleaner...', function=update_adwcleaner, other_results=other_results)
|
|
||||||
# try_and_print(message='ESET...', function=update_eset, other_results=other_results)
|
# Data Recovery
|
||||||
# try_and_print(message='JRT...', function=update_jrt, other_results=other_results)
|
print_info(' Data Recovery')
|
||||||
# try_and_print(message='KVRT...', function=update_kvrt, other_results=other_results)
|
try_and_print(message='TestDisk / PhotoRec...', function=update_testdisk, other_results=other_results, width=40)
|
||||||
# try_and_print(message='RKill...', function=update_rkill, other_results=other_results)
|
|
||||||
# try_and_print(message='TDSSKiller...', function=update_tdsskiller, other_results=other_results)
|
# Data Transfers
|
||||||
|
print_info(' Data Transfers')
|
||||||
# Driver Tools
|
try_and_print(message='FastCopy...', function=update_fastcopy, other_results=other_results, width=40)
|
||||||
print_info('Driver Tools')
|
try_and_print(message='wimlib...', function=update_wimlib, other_results=other_results, width=40)
|
||||||
# try_and_print(message='Intel Driver Update Utility...', function=update_intel_driver_utility, other_results=other_results)
|
try_and_print(message='XYplorer...', function=update_xyplorer, other_results=other_results, width=40)
|
||||||
# try_and_print(message='Intel SSD Toolbox...', function=update_intel_ssd_toolbox, other_results=other_results)
|
|
||||||
# try_and_print(message='Samsung Magician...', function=update_samsung_magician, other_results=other_results)
|
# Diagnostics
|
||||||
try_and_print(message='Samsung Magician...', function=update_samsung_magician, silent_function=False)
|
print_info(' Diagnostics')
|
||||||
|
try_and_print(message='AIDA64...', function=update_aida64, other_results=other_results, width=40)
|
||||||
# Ninite - Bundles
|
try_and_print(message='Autoruns...', function=update_autoruns, other_results=other_results, width=40)
|
||||||
print_info('Installers')
|
try_and_print(message='BleachBit...', function=update_bleachbit, other_results=other_results, width=40)
|
||||||
print_success(' '*4 + 'Ninite Bundles')
|
try_and_print(message='BlueScreenView...', function=update_bluescreenview, other_results=other_results, width=40)
|
||||||
_path = r'{BaseDir}\Installers\Extras\Bundles'.format(**global_vars)
|
try_and_print(message='ERUNT...', function=update_erunt, other_results=other_results, width=40)
|
||||||
try_and_print(message='Runtimes.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Runtimes.exe', source_url='https://ninite.com/.net4.7-air-java8-silverlight/ninite.exe')
|
try_and_print(message='HitmanPro...', function=update_hitmanpro, other_results=other_results, width=40)
|
||||||
try_and_print(message='Legacy.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Legacy.exe', source_url='https://ninite.com/.net4.7-7zip-air-chrome-firefox-java8-silverlight-vlc/ninite.exe')
|
try_and_print(message='HWiNFO...', function=update_hwinfo, other_results=other_results, width=40)
|
||||||
try_and_print(message='Modern.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Modern.exe', source_url='https://ninite.com/.net4.7-7zip-air-chrome-classicstart-firefox-java8-silverlight-vlc/ninite.exe')
|
try_and_print(message='ProduKey...', function=update_produkey, other_results=other_results, width=40)
|
||||||
|
|
||||||
# Ninite - Audio-Video
|
# Drivers
|
||||||
print_success(' '*4 + 'Audio-Video')
|
print_info(' Drivers')
|
||||||
_path = r'{BaseDir}\Installers\Extras\Audio-Video'.format(**global_vars)
|
try_and_print(message='Intel RST...', function=update_intel_rst, other_results=other_results, width=40)
|
||||||
try_and_print(message='AIMP.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='AIMP.exe', source_url='https://ninite.com/aimp/ninite.exe')
|
try_and_print(message='Intel SSD Toolbox...', function=update_intel_ssd_toolbox, other_results=other_results, width=40)
|
||||||
try_and_print(message='Audacity.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Audacity.exe', source_url='https://ninite.com/audacity/ninite.exe')
|
try_and_print(message='Samsing Magician...', function=update_samsung_magician, other_results=other_results, width=40)
|
||||||
try_and_print(message='CCCP.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='CCCP.exe', source_url='https://ninite.com/cccp/ninite.exe')
|
if update_sdio:
|
||||||
try_and_print(message='Foobar2000.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Foobar2000.exe', source_url='https://ninite.com/foobar/ninite.exe')
|
try_and_print(message='Snappy Driver Installer Origin...', function=update_sdi_origin, other_results=other_results, width=40)
|
||||||
try_and_print(message='GOM.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='GOM.exe', source_url='https://ninite.com/gom/ninite.exe')
|
|
||||||
try_and_print(message='iTunes.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='HandBrake.exe', source_url='https://ninite.com/handbrake/ninite.exe')
|
# Installers
|
||||||
try_and_print(message='iTunes.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='iTunes.exe', source_url='https://ninite.com/itunes/ninite.exe')
|
print_info(' Installers')
|
||||||
try_and_print(message='K-Lite Codecs.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='K-Lite Codecs.exe', source_url='https://ninite.com/klitecodecs/ninite.exe')
|
try_and_print(message='Adobe Reader DC...', function=update_adobe_reader_dc, other_results=other_results, width=40)
|
||||||
try_and_print(message='MediaMonkey.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='MediaMonkey.exe', source_url='https://ninite.com/mediamonkey/ninite.exe')
|
try_and_print(message='MS Office...', function=update_office, other_results=other_results, width=40)
|
||||||
try_and_print(message='MusicBee.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='MusicBee.exe', source_url='https://ninite.com/musicbee/ninite.exe')
|
try_and_print(message='Visual C++ Runtimes...', function=update_vcredists, other_results=other_results, width=40)
|
||||||
try_and_print(message='Spotify.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Spotify.exe', source_url='https://ninite.com/spotify/ninite.exe')
|
update_all_ninite(other_results=other_results, width=40)
|
||||||
try_and_print(message='VLC.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='VLC.exe', source_url='https://ninite.com/vlc/ninite.exe')
|
|
||||||
try_and_print(message='Winamp.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Winamp.exe', source_url='https://ninite.com/winamp/ninite.exe')
|
# Misc
|
||||||
|
print_info(' Misc')
|
||||||
# Ninite - Cloud Storage
|
try_and_print(message='Caffeine...', function=update_caffeine, other_results=other_results, width=40)
|
||||||
print_success(' '*4 + 'Cloud Storage')
|
try_and_print(message='Classic Start Skin...', function=update_classic_start_skin, other_results=other_results, width=40)
|
||||||
_path = r'{BaseDir}\Installers\Extras\Cloud Storage'.format(**global_vars)
|
try_and_print(message='Du...', function=update_du, other_results=other_results, width=40)
|
||||||
try_and_print(message='Dropbox.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Dropbox.exe', source_url='https://ninite.com/dropbox/ninite.exe')
|
try_and_print(message='Everything...', function=update_everything, other_results=other_results, width=40)
|
||||||
try_and_print(message='Google Backup & Sync.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Google Backup & Sync.exe', source_url='https://ninite.com/googlebackupandsync/ninite.exe')
|
try_and_print(message='PuTTY...', function=update_putty, other_results=other_results, width=40)
|
||||||
try_and_print(message='Mozy.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Mozy.exe', source_url='https://ninite.com/mozy/ninite.exe')
|
try_and_print(message='Notepad++...', function=update_notepadplusplus, other_results=other_results, width=40)
|
||||||
try_and_print(message='OneDrive.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='OneDrive.exe', source_url='https://ninite.com/onedrive/ninite.exe')
|
try_and_print(message='TreeSizeFree...', function=update_treesizefree, other_results=other_results, width=40)
|
||||||
try_and_print(message='SugarSync.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='SugarSync.exe', source_url='https://ninite.com/sugarsync/ninite.exe')
|
try_and_print(message='XMPlay...', function=update_xmplay, other_results=other_results, width=40)
|
||||||
|
|
||||||
# Ninite - Communication
|
# Repairs
|
||||||
print_success(' '*4 + 'Communication')
|
print_info(' Repairs')
|
||||||
_path = r'{BaseDir}\Installers\Extras\Communication'.format(**global_vars)
|
try_and_print(message='AdwCleaner...', function=update_adwcleaner, other_results=other_results, width=40)
|
||||||
try_and_print(message='Pidgin.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Pidgin.exe', source_url='https://ninite.com/pidgin/ninite.exe')
|
try_and_print(message='KVRT...', function=update_kvrt, other_results=other_results, width=40)
|
||||||
try_and_print(message='Skype.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Skype.exe', source_url='https://ninite.com/skype/ninite.exe')
|
try_and_print(message='RKill...', function=update_rkill, other_results=other_results, width=40)
|
||||||
try_and_print(message='Trillian.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Trillian.exe', source_url='https://ninite.com/trillian/ninite.exe')
|
try_and_print(message='TDSSKiller...', function=update_tdsskiller, other_results=other_results, width=40)
|
||||||
|
|
||||||
# Ninite - Compression
|
# Uninstallers
|
||||||
print_success(' '*4 + 'Compression')
|
print_info(' Uninstallers')
|
||||||
_path = r'{BaseDir}\Installers\Extras\Compression'.format(**global_vars)
|
try_and_print(message='IObit Uninstaller...', function=update_iobit_uninstaller, other_results=other_results, width=40)
|
||||||
try_and_print(message='7-Zip.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='7-Zip.exe', source_url='https://ninite.com/7zip/ninite.exe')
|
|
||||||
try_and_print(message='PeaZip.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='PeaZip.exe', source_url='https://ninite.com/peazip/ninite.exe')
|
## Review ##
|
||||||
try_and_print(message='WinRAR.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='WinRAR.exe', source_url='https://ninite.com/winrar/ninite.exe')
|
print_standard('Please review the results and download/extract any missing items to .cbin')
|
||||||
|
pause('Press Enter to compress the .cbin items')
|
||||||
# Ninite - Developer
|
|
||||||
print_success(' '*4 + 'Developer')
|
## Compress ##
|
||||||
_path = r'{BaseDir}\Installers\Extras\Developer'.format(**global_vars)
|
print_success('Compressing tools')
|
||||||
try_and_print(message='Eclipse.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Eclipse.exe', source_url='https://ninite.com/eclipse/ninite.exe')
|
print_info(' _Drivers')
|
||||||
try_and_print(message='FileZilla.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='FileZilla.exe', source_url='https://ninite.com/filezilla/ninite.exe')
|
for item in os.scandir(r'{}\_Drivers'.format(global_vars['CBinDir'])):
|
||||||
try_and_print(message='JDK 8.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='JDK 8.exe', source_url='https://ninite.com/jdk8/ninite.exe')
|
if not re.search(r'^(_Drivers|.*7z)$', item.name, re.IGNORECASE):
|
||||||
try_and_print(message='JDK 8 (x64).exe', function=download_file, other_results=other_results, out_dir=_path, out_name='JDK 8 (x64).exe', source_url='https://ninite.com/jdkx8/ninite.exe')
|
try_and_print(
|
||||||
try_and_print(message='Notepad++.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Notepad++.exe', source_url='https://ninite.com/notepadplusplus/ninite.exe')
|
message='{}...'.format(item.name),
|
||||||
try_and_print(message='PuTTY.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='PuTTY.exe', source_url='https://ninite.com/putty/ninite.exe')
|
function=compress_and_remove_item,
|
||||||
try_and_print(message='Python 2.7.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Python 2.exe', source_url='https://ninite.com/python/ninite.exe')
|
other_results = other_results,
|
||||||
try_and_print(message='Visual Studio Code.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Visual Studio Code.exe', source_url='https://ninite.com/vscode/ninite.exe')
|
width=40,
|
||||||
try_and_print(message='WinMerge.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='WinMerge.exe', source_url='https://ninite.com/winmerge/ninite.exe')
|
item = item)
|
||||||
try_and_print(message='WinSCP.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='WinSCP.exe', source_url='https://ninite.com/winscp/ninite.exe')
|
print_info(' .cbin')
|
||||||
|
for item in os.scandir(global_vars['CBinDir']):
|
||||||
# Ninite - File Sharing
|
if not re.search(r'^(_Drivers|_include|.*7z)$', item.name, re.IGNORECASE):
|
||||||
print_success(' '*4 + 'File Sharing')
|
try_and_print(
|
||||||
_path = r'{BaseDir}\Installers\Extras\File Sharing'.format(**global_vars)
|
message='{}...'.format(item.name),
|
||||||
try_and_print(message='qBittorrent.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='qBittorrent.exe', source_url='https://ninite.com/qbittorrent/ninite.exe')
|
function=compress_and_remove_item,
|
||||||
|
other_results = other_results,
|
||||||
# Ninite - Image-Photo
|
width=40,
|
||||||
print_success(' '*4 + 'Image-Photo')
|
item = item)
|
||||||
_path = r'{BaseDir}\Installers\Extras\Image-Photo'.format(**global_vars)
|
|
||||||
try_and_print(message='Blender.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Blender.exe', source_url='https://ninite.com/blender/ninite.exe')
|
## Search for network Office/QuickBooks installers & add to LAUNCHERS
|
||||||
try_and_print(message='FastStone.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='FastStone.exe', source_url='https://ninite.com/faststone/ninite.exe')
|
print_success('Scanning for network installers')
|
||||||
try_and_print(message='GIMP.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='GIMP.exe', source_url='https://ninite.com/gimp/ninite.exe')
|
scan_for_net_installers(OFFICE_SERVER, 'Office', min_year=2010)
|
||||||
try_and_print(message='Greenshot.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Greenshot.exe', source_url='https://ninite.com/greenshot/ninite.exe')
|
scan_for_net_installers(QUICKBOOKS_SERVER, 'QuickBooks', min_year=2015)
|
||||||
try_and_print(message='Inkscape.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Inkscape.exe', source_url='https://ninite.com/inkscape/ninite.exe')
|
|
||||||
try_and_print(message='IrfanView.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='IrfanView.exe', source_url='https://ninite.com/irfanview/ninite.exe')
|
## Generate Launchers
|
||||||
try_and_print(message='Krita.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Krita.exe', source_url='https://ninite.com/krita/ninite.exe')
|
print_success('Generating launchers')
|
||||||
try_and_print(message='Paint.NET.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Paint.NET.exe', source_url='https://ninite.com/paint.net/ninite.exe')
|
for section in sorted(LAUNCHERS.keys()):
|
||||||
try_and_print(message='ShareX.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='ShareX.exe', source_url='https://ninite.com/sharex/ninite.exe')
|
print_info(' {}'.format(section))
|
||||||
try_and_print(message='XnView.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='XnView.exe', source_url='https://ninite.com/xnview/ninite.exe')
|
for name, options in sorted(LAUNCHERS[section].items()):
|
||||||
|
try_and_print(message=name, function=generate_launcher,
|
||||||
# Ninite - Misc
|
section=section, name=name, options=options,
|
||||||
print_success(' '*4 + 'Misc')
|
other_results=other_results, width=40)
|
||||||
_path = r'{BaseDir}\Installers\Extras\Misc'.format(**global_vars)
|
|
||||||
try_and_print(message='Evernote.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Evernote.exe', source_url='https://ninite.com/evernote/ninite.exe')
|
# Rename "Copy WizardKit.cmd" (if necessary)
|
||||||
try_and_print(message='Everything.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Everything.exe', source_url='https://ninite.com/everything/ninite.exe')
|
source = r'{}\Scripts\Copy WizardKit.cmd'.format(global_vars['BinDir'])
|
||||||
try_and_print(message='KeePass 2.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='KeePass 2.exe', source_url='https://ninite.com/keepass2/ninite.exe')
|
dest = r'{}\Copy {}.cmd'.format(global_vars['BaseDir'], KIT_NAME_FULL)
|
||||||
try_and_print(message='Google Earth.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Google Earth.exe', source_url='https://ninite.com/googleearth/ninite.exe')
|
if os.path.exists(source):
|
||||||
try_and_print(message='NV Access.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='NV Access.exe', source_url='https://ninite.com/nvda/ninite.exe')
|
try:
|
||||||
try_and_print(message='Steam.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Steam.exe', source_url='https://ninite.com/steam/ninite.exe')
|
shutil.move(source, dest)
|
||||||
|
except Exception:
|
||||||
# Ninite - Office
|
print_error(' Failed to rename "{}.cmd" to "{}.cmd"'.format(
|
||||||
print_success(' '*4 + 'Office')
|
'Copy WizardKit', KIT_NAME_FULL))
|
||||||
_path = r'{BaseDir}\Installers\Extras\Office'.format(**global_vars)
|
|
||||||
try_and_print(message='CutePDF.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='CutePDF.exe', source_url='https://ninite.com/cutepdf/ninite.exe')
|
# Done
|
||||||
try_and_print(message='Foxit Reader.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Foxit Reader.exe', source_url='https://ninite.com/foxit/ninite.exe')
|
print_standard('\nDone.')
|
||||||
try_and_print(message='LibreOffice.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='LibreOffice.exe', source_url='https://ninite.com/libreoffice/ninite.exe')
|
pause("Press Enter to exit...")
|
||||||
try_and_print(message='OpenOffice.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='OpenOffice.exe', source_url='https://ninite.com/openoffice/ninite.exe')
|
exit_script()
|
||||||
try_and_print(message='PDFCreator.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='PDFCreator.exe', source_url='https://ninite.com/pdfcreator/ninite.exe')
|
except SystemExit:
|
||||||
try_and_print(message='SumatraPDF.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='SumatraPDF.exe', source_url='https://ninite.com/sumatrapdf/ninite.exe')
|
pass
|
||||||
try_and_print(message='Thunderbird.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Thunderbird.exe', source_url='https://ninite.com/thunderbird/ninite.exe')
|
except:
|
||||||
|
major_exception()
|
||||||
# Ninite - Runtimes
|
|
||||||
print_success(' '*4 + 'Runtimes')
|
|
||||||
_path = r'{BaseDir}\Installers\Extras\Runtimes'.format(**global_vars)
|
|
||||||
try_and_print(message='Adobe Air.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Adobe Air.exe', source_url='https://ninite.com/air/ninite.exe')
|
|
||||||
try_and_print(message='dotNET.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='dotNET.exe', source_url='https://ninite.com/.net4.7/ninite.exe')
|
|
||||||
try_and_print(message='Java 8.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Java 8.exe', source_url='https://ninite.com/java8/ninite.exe')
|
|
||||||
try_and_print(message='Shockwave.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Shockwave.exe', source_url='https://ninite.com/shockwave/ninite.exe')
|
|
||||||
try_and_print(message='Silverlight.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Silverlight.exe', source_url='https://ninite.com/silverlight/ninite.exe')
|
|
||||||
|
|
||||||
# Ninite - Security
|
|
||||||
print_success(' '*4 + 'Security')
|
|
||||||
_path = r'{BaseDir}\Installers\Extras\Security'.format(**global_vars)
|
|
||||||
try_and_print(message='Avast.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Avast.exe', source_url='https://ninite.com/avast/ninite.exe')
|
|
||||||
try_and_print(message='AVG.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='AVG.exe', source_url='https://ninite.com/avg/ninite.exe')
|
|
||||||
try_and_print(message='Avira.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Avira.exe', source_url='https://ninite.com/avira/ninite.exe')
|
|
||||||
try_and_print(message='Microsoft Security Essentials.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Microsoft Security Essentials.exe', source_url='https://ninite.com/essentials/ninite.exe')
|
|
||||||
try_and_print(message='Malwarebytes Anti-Malware.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Malwarebytes Anti-Malware.exe', source_url='https://ninite.com/malwarebytes/ninite.exe')
|
|
||||||
try_and_print(message='Spybot 2.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Spybot 2.exe', source_url='https://ninite.com/spybot2/ninite.exe')
|
|
||||||
try_and_print(message='SUPERAntiSpyware.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='SUPERAntiSpyware.exe', source_url='https://ninite.com/super/ninite.exe')
|
|
||||||
|
|
||||||
# Ninite - Utilities
|
|
||||||
print_success(' '*4 + 'Utilities')
|
|
||||||
_path = r'{BaseDir}\Installers\Extras\Utilities'.format(**global_vars)
|
|
||||||
try_and_print(message='CDBurnerXP.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='CDBurnerXP.exe', source_url='https://ninite.com/cdburnerxp/ninite.exe')
|
|
||||||
try_and_print(message='Classic Start.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Classic Start.exe', source_url='https://ninite.com/classicstart/ninite.exe')
|
|
||||||
try_and_print(message='Glary Utilities.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Glary Utilities.exe', source_url='https://ninite.com/glary/ninite.exe')
|
|
||||||
try_and_print(message='ImgBurn.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='ImgBurn.exe', source_url='https://ninite.com/imgburn/ninite.exe')
|
|
||||||
try_and_print(message='InfraRecorder.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='InfraRecorder.exe', source_url='https://ninite.com/infrarecorder/ninite.exe')
|
|
||||||
try_and_print(message='Launchy.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Launchy.exe', source_url='https://ninite.com/launchy/ninite.exe')
|
|
||||||
try_and_print(message='RealVNC.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='RealVNC.exe', source_url='https://ninite.com/realvnc/ninite.exe')
|
|
||||||
try_and_print(message='Revo Uninstaller.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Revo Uninstaller.exe', source_url='https://ninite.com/revo/ninite.exe')
|
|
||||||
try_and_print(message='TeamViewer 12.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='TeamViewer 12.exe', source_url='https://ninite.com/teamviewer12/ninite.exe')
|
|
||||||
try_and_print(message='TeraCopy.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='TeraCopy.exe', source_url='https://ninite.com/teracopy/ninite.exe')
|
|
||||||
try_and_print(message='WinDirStat.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='WinDirStat.exe', source_url='https://ninite.com/windirstat/ninite.exe')
|
|
||||||
|
|
||||||
# Ninite - Web Browsers
|
|
||||||
print_success(' '*4 + 'Web Browsers')
|
|
||||||
_path = r'{BaseDir}\Installers\Extras\Web Browsers'.format(**global_vars)
|
|
||||||
try_and_print(message='Google Chrome.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Google Chrome.exe', source_url='https://ninite.com/chrome/ninite.exe')
|
|
||||||
try_and_print(message='Mozilla Firefox.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Mozilla Firefox.exe', source_url='https://ninite.com/firefox/ninite.exe')
|
|
||||||
try_and_print(message='Opera Chromium.exe', function=download_file, other_results=other_results, out_dir=_path, out_name='Opera Chromium.exe', source_url='https://ninite.com/operaChromium/ninite.exe')
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
# print_info('Misc')
|
|
||||||
# try_and_print(message='SysinternalsSuite...', function=update_sysinternalssuite, other_results=other_results)
|
|
||||||
|
|
||||||
# Done
|
|
||||||
print_standard('\nDone.')
|
|
||||||
pause("Press Enter to exit...")
|
|
||||||
exit_script()
|
|
||||||
except SystemExit:
|
|
||||||
pass
|
|
||||||
except:
|
|
||||||
major_exception()
|
|
||||||
|
|
|
||||||
|
|
@ -1,82 +1,83 @@
|
||||||
# Wizard Kit: User Checklist
|
# Wizard Kit: User Checklist
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.browsers import *
|
from functions.browsers import *
|
||||||
from functions.cleanup import *
|
from functions.cleanup import *
|
||||||
from functions.setup import *
|
from functions.setup import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: User Checklist Tool'.format(KIT_NAME_FULL))
|
os.system('title {}: User Checklist Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\User Checklist ({USERNAME}).log'.format(
|
global_vars['LogFile'] = r'{LogDir}\User Checklist ({USERNAME}).log'.format(
|
||||||
**global_vars, **global_vars['Env'])
|
**global_vars, **global_vars['Env'])
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
stay_awake()
|
stay_awake()
|
||||||
os.system('cls')
|
os.system('cls')
|
||||||
other_results = {
|
print_info('{}: User Checklist\n'.format(KIT_NAME_FULL))
|
||||||
'Warning': {
|
other_results = {
|
||||||
'NotInstalledError': 'Not installed',
|
'Warning': {
|
||||||
'NoProfilesError': 'No profiles found',
|
'NotInstalledError': 'Not installed',
|
||||||
}}
|
'NoProfilesError': 'No profiles found',
|
||||||
answer_config_browsers = ask('Install adblock?')
|
}}
|
||||||
if answer_config_browsers:
|
answer_config_browsers = ask('Install adblock?')
|
||||||
answer_reset_browsers = ask(
|
if answer_config_browsers:
|
||||||
'Reset browsers to safe defaults first?')
|
answer_reset_browsers = ask(
|
||||||
if global_vars['OS']['Version'] == '10':
|
'Reset browsers to safe defaults first?')
|
||||||
answer_config_classicshell = ask('Configure ClassicShell?')
|
if global_vars['OS']['Version'] == '10':
|
||||||
answer_config_explorer_user = ask('Configure Explorer?')
|
answer_config_classicshell = ask('Configure ClassicShell?')
|
||||||
|
answer_config_explorer_user = ask('Configure Explorer?')
|
||||||
# Cleanup
|
|
||||||
print_info('Cleanup')
|
# Cleanup
|
||||||
try_and_print(message='Desktop...',
|
print_info('Cleanup')
|
||||||
function=cleanup_desktop, cs='Done')
|
try_and_print(message='Desktop...',
|
||||||
|
function=cleanup_desktop, cs='Done')
|
||||||
# Scan for supported browsers
|
|
||||||
print_info('Scanning for browsers')
|
# Scan for supported browsers
|
||||||
scan_for_browsers()
|
print_info('Scanning for browsers')
|
||||||
|
scan_for_browsers()
|
||||||
# Homepages
|
|
||||||
print_info('Current homepages')
|
# Homepages
|
||||||
list_homepages()
|
print_info('Current homepages')
|
||||||
|
list_homepages()
|
||||||
# Backup
|
|
||||||
print_info('Backing up browsers')
|
# Backup
|
||||||
backup_browsers()
|
print_info('Backing up browsers')
|
||||||
|
backup_browsers()
|
||||||
# Reset
|
|
||||||
if answer_config_browsers and answer_reset_browsers:
|
# Reset
|
||||||
print_info('Resetting browsers')
|
if answer_config_browsers and answer_reset_browsers:
|
||||||
reset_browsers()
|
print_info('Resetting browsers')
|
||||||
|
reset_browsers()
|
||||||
# Configure
|
|
||||||
print_info('Configuring programs')
|
# Configure
|
||||||
if answer_config_browsers:
|
print_info('Configuring programs')
|
||||||
install_adblock()
|
if answer_config_browsers:
|
||||||
if global_vars['OS']['Version'] == '10':
|
install_adblock()
|
||||||
if answer_config_classicshell:
|
if global_vars['OS']['Version'] == '10':
|
||||||
try_and_print(message='ClassicStart...',
|
if answer_config_classicshell:
|
||||||
function=config_classicstart, cs='Done')
|
try_and_print(message='ClassicStart...',
|
||||||
if answer_config_explorer_user:
|
function=config_classicstart, cs='Done')
|
||||||
try_and_print(message='Explorer...',
|
if answer_config_explorer_user:
|
||||||
function=config_explorer_user, cs='Done')
|
try_and_print(message='Explorer...',
|
||||||
if (not answer_config_browsers
|
function=config_explorer_user, cs='Done')
|
||||||
and not answer_config_classicshell
|
if (not answer_config_browsers
|
||||||
and not answer_config_explorer_user):
|
and not answer_config_classicshell
|
||||||
print_warning(' Skipped')
|
and not answer_config_explorer_user):
|
||||||
else:
|
print_warning(' Skipped')
|
||||||
if not answer_config_browsers:
|
else:
|
||||||
print_warning(' Skipped')
|
if not answer_config_browsers:
|
||||||
|
print_warning(' Skipped')
|
||||||
# Done
|
|
||||||
print_standard('\nDone.')
|
# Done
|
||||||
pause('Press Enter to exit...')
|
print_standard('\nDone.')
|
||||||
exit_script()
|
pause('Press Enter to exit...')
|
||||||
except SystemExit:
|
exit_script()
|
||||||
pass
|
except SystemExit:
|
||||||
except:
|
pass
|
||||||
major_exception()
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,52 +1,53 @@
|
||||||
# Wizard Kit: Copy user data to the system from a local or network source
|
# Wizard Kit: Copy user data to the system from a local or network source
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
sys.path.append(os.getcwd())
|
sys.path.append(os.getcwd())
|
||||||
from functions.data import *
|
from functions.data import *
|
||||||
from functions.repairs import *
|
from functions.repairs import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
os.system('title {}: Data 1'.format(KIT_NAME_FULL))
|
os.system('title {}: User Data Transfer Tool'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\Data 1.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\User Data Transfer.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
# Prep
|
# Prep
|
||||||
stay_awake()
|
stay_awake()
|
||||||
ticket_number = get_ticket_number()
|
os.system('cls')
|
||||||
os.system('cls')
|
print_info('{}: User Data Transfer Tool\n'.format(KIT_NAME_FULL))
|
||||||
folder_path = r'{}\Transfer'.format(KIT_NAME_SHORT)
|
ticket_number = get_ticket_number()
|
||||||
dest = select_destination(folder_path=folder_path,
|
folder_path = r'{}\Transfer'.format(KIT_NAME_SHORT)
|
||||||
prompt='Which disk are we transferring to?')
|
dest = select_destination(folder_path=folder_path,
|
||||||
source = select_source(ticket_number)
|
prompt='Which disk are we transferring to?')
|
||||||
items = scan_source(source, dest)
|
source = select_source(ticket_number)
|
||||||
|
items = scan_source(source, dest)
|
||||||
# Transfer
|
|
||||||
os.system('cls')
|
# Transfer
|
||||||
print_info('Transfer Details:\n')
|
os.system('cls')
|
||||||
show_info('Ticket:', ticket_number)
|
print_info('Transfer Details:\n')
|
||||||
show_info('Source:', source.path)
|
show_info('Ticket:', ticket_number)
|
||||||
show_info('Destination:', dest)
|
show_info('Source:', source.path)
|
||||||
|
show_info('Destination:', dest)
|
||||||
if (not ask('Proceed with transfer?')):
|
|
||||||
umount_backup_shares()
|
if (not ask('Proceed with transfer?')):
|
||||||
abort()
|
umount_backup_shares()
|
||||||
|
abort()
|
||||||
print_info('Transferring Data')
|
|
||||||
transfer_source(source, dest, items)
|
print_info('Transferring Data')
|
||||||
try_and_print(message='Removing extra files...',
|
transfer_source(source, dest, items)
|
||||||
function=cleanup_transfer, cs='Done')
|
try_and_print(message='Removing extra files...',
|
||||||
umount_backup_shares()
|
function=cleanup_transfer, cs='Done')
|
||||||
|
umount_backup_shares()
|
||||||
# Done
|
|
||||||
run_kvrt()
|
# Done
|
||||||
print_standard('\nDone.')
|
run_kvrt()
|
||||||
pause("Press Enter to exit...")
|
print_standard('\nDone.')
|
||||||
exit_script()
|
pause("Press Enter to exit...")
|
||||||
except SystemExit:
|
exit_script()
|
||||||
pass
|
except SystemExit:
|
||||||
except:
|
pass
|
||||||
major_exception()
|
except:
|
||||||
|
major_exception()
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,23 +1,24 @@
|
||||||
"-drp_dir:drivers"
|
"-drp_dir:drivers"
|
||||||
"-index_dir:indexes\SDI"
|
"-index_dir:indexes\SDI"
|
||||||
"-output_dir:indexes\SDI\txt"
|
"-output_dir:indexes\SDI\txt"
|
||||||
"-data_dir:tools\SDI"
|
"-data_dir:tools\SDI"
|
||||||
"-log_dir:logs"
|
"-log_dir:logs"
|
||||||
|
|
||||||
"-finish_cmd:"
|
"-finish_cmd:"
|
||||||
"-finishrb_cmd:"
|
"-finishrb_cmd:"
|
||||||
"-finish_upd_cmd:"
|
"-finish_upd_cmd:"
|
||||||
|
|
||||||
"-lang:English"
|
"-lang:English"
|
||||||
"-theme:YetAnotherSDI"
|
"-theme:YetAnotherSDI"
|
||||||
-hintdelay:250
|
-hintdelay:250
|
||||||
-license:1
|
-license:1
|
||||||
-scale:256
|
-scale:256
|
||||||
-filters:166
|
-wndsc:3
|
||||||
|
-filters:166
|
||||||
-port:50171
|
|
||||||
-downlimit:1
|
-port:50171
|
||||||
-uplimit:1
|
-downlimit:1
|
||||||
-connections:0
|
-uplimit:1
|
||||||
|
-connections:0
|
||||||
-expertmode -norestorepnt -novirusalerts -showdrpnames2 -onlyupdates -preservecfg
|
|
||||||
|
-expertmode -norestorepnt -showdrpnames2 -onlyupdates -preservecfg
|
||||||
|
|
@ -1,99 +1,99 @@
|
||||||
InfoPage="Computer;Summary"
|
InfoPage="Computer;Summary"
|
||||||
InfoPage="Computer;Computer Name"
|
InfoPage="Computer;Computer Name"
|
||||||
InfoPage="Computer;DMI"
|
InfoPage="Computer;DMI"
|
||||||
InfoPage="Computer;IPMI"
|
InfoPage="Computer;IPMI"
|
||||||
InfoPage="Computer;Overclock"
|
InfoPage="Computer;Overclock"
|
||||||
InfoPage="Computer;Power Management"
|
InfoPage="Computer;Power Management"
|
||||||
InfoPage="Computer;Portable Computer"
|
InfoPage="Computer;Portable Computer"
|
||||||
InfoPage="Motherboard;CPU"
|
InfoPage="Motherboard;CPU"
|
||||||
InfoPage="Motherboard;CPUID"
|
InfoPage="Motherboard;CPUID"
|
||||||
InfoPage="Motherboard;Motherboard"
|
InfoPage="Motherboard;Motherboard"
|
||||||
InfoPage="Motherboard;Memory"
|
InfoPage="Motherboard;Memory"
|
||||||
InfoPage="Motherboard;SPD"
|
InfoPage="Motherboard;SPD"
|
||||||
InfoPage="Motherboard;Chipset"
|
InfoPage="Motherboard;Chipset"
|
||||||
InfoPage="Motherboard;BIOS"
|
InfoPage="Motherboard;BIOS"
|
||||||
InfoPage="Motherboard;ACPI"
|
InfoPage="Motherboard;ACPI"
|
||||||
InfoPage="Operating System;Operating System"
|
InfoPage="Operating System;Operating System"
|
||||||
InfoPage="Operating System;Processes"
|
InfoPage="Operating System;Processes"
|
||||||
InfoPage="Operating System;System Drivers"
|
InfoPage="Operating System;System Drivers"
|
||||||
InfoPage="Operating System;Services"
|
InfoPage="Operating System;Services"
|
||||||
InfoPage="Operating System;AX Files"
|
InfoPage="Operating System;AX Files"
|
||||||
InfoPage="Operating System;DLL Files"
|
InfoPage="Operating System;DLL Files"
|
||||||
InfoPage="Operating System;Certificates"
|
InfoPage="Operating System;Certificates"
|
||||||
InfoPage="Operating System;UpTime"
|
InfoPage="Operating System;UpTime"
|
||||||
InfoPage="Server;Share"
|
InfoPage="Server;Share"
|
||||||
InfoPage="Server;Opened Files"
|
InfoPage="Server;Opened Files"
|
||||||
InfoPage="Server;Account Security"
|
InfoPage="Server;Account Security"
|
||||||
InfoPage="Server;Logon"
|
InfoPage="Server;Logon"
|
||||||
InfoPage="Server;Users"
|
InfoPage="Server;Users"
|
||||||
InfoPage="Server;Local Groups"
|
InfoPage="Server;Local Groups"
|
||||||
InfoPage="Server;Global Groups"
|
InfoPage="Server;Global Groups"
|
||||||
InfoPage="Display;Windows Video"
|
InfoPage="Display;Windows Video"
|
||||||
InfoPage="Display;PCI / AGP Video"
|
InfoPage="Display;PCI / AGP Video"
|
||||||
InfoPage="Display;GPU"
|
InfoPage="Display;GPU"
|
||||||
InfoPage="Display;Monitor"
|
InfoPage="Display;Monitor"
|
||||||
InfoPage="Display;Desktop"
|
InfoPage="Display;Desktop"
|
||||||
InfoPage="Display;Multi-Monitor"
|
InfoPage="Display;Multi-Monitor"
|
||||||
InfoPage="Display;Video Modes"
|
InfoPage="Display;Video Modes"
|
||||||
InfoPage="Display;OpenGL"
|
InfoPage="Display;OpenGL"
|
||||||
InfoPage="Display;GPGPU"
|
InfoPage="Display;GPGPU"
|
||||||
InfoPage="Display;Mantle"
|
InfoPage="Display;Mantle"
|
||||||
InfoPage="Display;Vulkan"
|
InfoPage="Display;Vulkan"
|
||||||
InfoPage="Display;Fonts"
|
InfoPage="Display;Fonts"
|
||||||
InfoPage="Multimedia;Windows Audio"
|
InfoPage="Multimedia;Windows Audio"
|
||||||
InfoPage="Multimedia;PCI / PnP Audio"
|
InfoPage="Multimedia;PCI / PnP Audio"
|
||||||
InfoPage="Multimedia;HD Audio"
|
InfoPage="Multimedia;HD Audio"
|
||||||
InfoPage="Multimedia;OpenAL"
|
InfoPage="Multimedia;OpenAL"
|
||||||
InfoPage="Multimedia;Audio Codecs"
|
InfoPage="Multimedia;Audio Codecs"
|
||||||
InfoPage="Multimedia;Video Codecs"
|
InfoPage="Multimedia;Video Codecs"
|
||||||
InfoPage="Multimedia;MCI"
|
InfoPage="Multimedia;MCI"
|
||||||
InfoPage="Multimedia;SAPI"
|
InfoPage="Multimedia;SAPI"
|
||||||
InfoPage="Storage;Windows Storage"
|
InfoPage="Storage;Windows Storage"
|
||||||
InfoPage="Storage;Logical Drives"
|
InfoPage="Storage;Logical Drives"
|
||||||
InfoPage="Storage;Physical Drives"
|
InfoPage="Storage;Physical Drives"
|
||||||
InfoPage="Storage;Optical Drives"
|
InfoPage="Storage;Optical Drives"
|
||||||
InfoPage="Storage;ASPI"
|
InfoPage="Storage;ASPI"
|
||||||
InfoPage="Storage;ATA"
|
InfoPage="Storage;ATA"
|
||||||
InfoPage="Storage;SMART"
|
InfoPage="Storage;SMART"
|
||||||
InfoPage="Network;Windows Network"
|
InfoPage="Network;Windows Network"
|
||||||
InfoPage="Network;PCI / PnP Network"
|
InfoPage="Network;PCI / PnP Network"
|
||||||
InfoPage="Network;RAS"
|
InfoPage="Network;RAS"
|
||||||
InfoPage="Network;Net Resources"
|
InfoPage="Network;Net Resources"
|
||||||
InfoPage="Network;IAM"
|
InfoPage="Network;IAM"
|
||||||
InfoPage="Network;Internet"
|
InfoPage="Network;Internet"
|
||||||
InfoPage="Network;Routes"
|
InfoPage="Network;Routes"
|
||||||
InfoPage="Network;IE Cookie"
|
InfoPage="Network;IE Cookie"
|
||||||
InfoPage="Network;Browser History"
|
InfoPage="Network;Browser History"
|
||||||
InfoPage="DirectX;DirectX Files"
|
InfoPage="DirectX;DirectX Files"
|
||||||
InfoPage="DirectX;DirectX Video"
|
InfoPage="DirectX;DirectX Video"
|
||||||
InfoPage="DirectX;DirectX Sound"
|
InfoPage="DirectX;DirectX Sound"
|
||||||
InfoPage="Devices;Windows Devices"
|
InfoPage="Devices;Windows Devices"
|
||||||
InfoPage="Devices;Physical Devices"
|
InfoPage="Devices;Physical Devices"
|
||||||
InfoPage="Devices;PCI Devices"
|
InfoPage="Devices;PCI Devices"
|
||||||
InfoPage="Devices;USB Devices"
|
InfoPage="Devices;USB Devices"
|
||||||
InfoPage="Devices;Device Resources"
|
InfoPage="Devices;Device Resources"
|
||||||
InfoPage="Devices;Input"
|
InfoPage="Devices;Input"
|
||||||
InfoPage="Devices;Printers"
|
InfoPage="Devices;Printers"
|
||||||
InfoPage="Software;Auto Start"
|
InfoPage="Software;Auto Start"
|
||||||
InfoPage="Software;Scheduled"
|
InfoPage="Software;Scheduled"
|
||||||
InfoPage="Software;Installed Programs"
|
InfoPage="Software;Installed Programs"
|
||||||
InfoPage="Software;Licenses"
|
InfoPage="Software;Licenses"
|
||||||
InfoPage="Software;File Types"
|
InfoPage="Software;File Types"
|
||||||
InfoPage="Software;Desktop Gadgets"
|
InfoPage="Software;Desktop Gadgets"
|
||||||
InfoPage="Security;Windows Security"
|
InfoPage="Security;Windows Security"
|
||||||
InfoPage="Security;Windows Update"
|
InfoPage="Security;Windows Update"
|
||||||
InfoPage="Security;Anti-Virus"
|
InfoPage="Security;Anti-Virus"
|
||||||
InfoPage="Security;Firewall"
|
InfoPage="Security;Firewall"
|
||||||
InfoPage="Security;Anti-Spyware"
|
InfoPage="Security;Anti-Spyware"
|
||||||
InfoPage="Security;Anti-Trojan"
|
InfoPage="Security;Anti-Trojan"
|
||||||
InfoPage="Config;Regional"
|
InfoPage="Config;Regional"
|
||||||
InfoPage="Config;Environment"
|
InfoPage="Config;Environment"
|
||||||
InfoPage="Config;Control Panel"
|
InfoPage="Config;Control Panel"
|
||||||
InfoPage="Config;Recycle Bin"
|
InfoPage="Config;Recycle Bin"
|
||||||
InfoPage="Config;System Files"
|
InfoPage="Config;System Files"
|
||||||
InfoPage="Config;System Folders"
|
InfoPage="Config;System Folders"
|
||||||
InfoPage="Config;Event Logs"
|
InfoPage="Config;Event Logs"
|
||||||
InfoPage="Database;Database Software"
|
InfoPage="Database;Database Software"
|
||||||
InfoPage="Database;BDE Drivers"
|
InfoPage="Database;BDE Drivers"
|
||||||
InfoPage="Database;ODBC Drivers"
|
InfoPage="Database;ODBC Drivers"
|
||||||
InfoPage="Database;ODBC Data Sources"
|
InfoPage="Database;ODBC Data Sources"
|
||||||
|
|
@ -1 +1 @@
|
||||||
InfoPage="Software;Installed Programs"
|
InfoPage="Software;Installed Programs"
|
||||||
|
|
@ -1 +1 @@
|
||||||
InfoPage="Software;Licenses"
|
InfoPage="Software;Licenses"
|
||||||
77
.cbin/_include/BleachBit/BleachBit.ini
Normal file
77
.cbin/_include/BleachBit/BleachBit.ini
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
[Portable]
|
||||||
|
|
||||||
|
[bleachbit]
|
||||||
|
auto_hide = False
|
||||||
|
auto_start = False
|
||||||
|
check_beta = False
|
||||||
|
check_online_updates = False
|
||||||
|
shred = False
|
||||||
|
exit_done = False
|
||||||
|
delete_confirmation = True
|
||||||
|
units_iec = True
|
||||||
|
update_winapp2 = False
|
||||||
|
first_start = True
|
||||||
|
version = 1.17
|
||||||
|
|
||||||
|
[hashpath]
|
||||||
|
|
||||||
|
[list/shred_drives]
|
||||||
|
|
||||||
|
[preserve_languages]
|
||||||
|
en = True
|
||||||
|
|
||||||
|
[tree]
|
||||||
|
adobe_reader = True
|
||||||
|
adobe_reader.cache = True
|
||||||
|
adobe_reader.tmp = True
|
||||||
|
amule = True
|
||||||
|
amule.tmp = True
|
||||||
|
chromium = True
|
||||||
|
chromium.cache = True
|
||||||
|
firefox = True
|
||||||
|
firefox.cache = True
|
||||||
|
gimp = True
|
||||||
|
gimp.tmp = True
|
||||||
|
google_chrome = True
|
||||||
|
google_chrome.cache = True
|
||||||
|
google_earth = True
|
||||||
|
google_earth.temporary_files = True
|
||||||
|
hippo_opensim_viewer = True
|
||||||
|
hippo_opensim_viewer.cache = True
|
||||||
|
internet_explorer = True
|
||||||
|
internet_explorer.temporary_files = True
|
||||||
|
java = True
|
||||||
|
java.cache = True
|
||||||
|
libreoffice = True
|
||||||
|
libreoffice.cache = True
|
||||||
|
liferea = True
|
||||||
|
liferea.cache = True
|
||||||
|
miro = True
|
||||||
|
miro.cache = True
|
||||||
|
openofficeorg = True
|
||||||
|
openofficeorg.cache = True
|
||||||
|
opera = True
|
||||||
|
opera.cache = True
|
||||||
|
pidgin = True
|
||||||
|
pidgin.cache = True
|
||||||
|
safari = True
|
||||||
|
safari.cache = True
|
||||||
|
seamonkey = True
|
||||||
|
seamonkey.cache = True
|
||||||
|
secondlife_viewer = True
|
||||||
|
secondlife_viewer.Cache = True
|
||||||
|
system = True
|
||||||
|
system.recycle_bin = True
|
||||||
|
system.tmp = True
|
||||||
|
thunderbird = True
|
||||||
|
thunderbird.cache = True
|
||||||
|
vuze = True
|
||||||
|
vuze.cache = True
|
||||||
|
vuze.tmp = True
|
||||||
|
yahoo_messenger = True
|
||||||
|
yahoo_messenger.cache = True
|
||||||
|
winapp2_windows = True
|
||||||
|
winapp2_windows.cbs_logs = True
|
||||||
|
winapp2_windows.cbs_logs_more = True
|
||||||
|
winapp2_windows.windows_cbs_logs_more = True
|
||||||
|
|
||||||
|
|
@ -1,56 +1,56 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252" ?>
|
<?xml version="1.0" encoding="Windows-1252" ?>
|
||||||
<NotepadPlus>
|
<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" />
|
<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" />
|
<History nbMaxFile="10" inSubMenu="no" customLength="-1" />
|
||||||
<GUIConfigs>
|
<GUIConfigs>
|
||||||
<GUIConfig name="ToolBar" visible="no">standard</GUIConfig>
|
<GUIConfig name="ToolBar" visible="no">standard</GUIConfig>
|
||||||
<GUIConfig name="StatusBar">hide</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="yes" quitOnEmpty="no" />
|
<GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" doubleClick2Close="no" vertical="no" multiLine="no" hide="yes" quitOnEmpty="no" />
|
||||||
<GUIConfig name="ScintillaViewsSplitter">vertical</GUIConfig>
|
<GUIConfig name="ScintillaViewsSplitter">vertical</GUIConfig>
|
||||||
<GUIConfig name="UserDefineDlg" position="undocked">hide</GUIConfig>
|
<GUIConfig name="UserDefineDlg" position="undocked">hide</GUIConfig>
|
||||||
<GUIConfig name="TabSetting" replaceBySpace="no" size="4" />
|
<GUIConfig name="TabSetting" replaceBySpace="yes" size="4" />
|
||||||
<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20080426">no</GUIConfig>
|
<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20080426">no</GUIConfig>
|
||||||
<GUIConfig name="Auto-detection">yes</GUIConfig>
|
<GUIConfig name="Auto-detection">yes</GUIConfig>
|
||||||
<GUIConfig name="CheckHistoryFiles">no</GUIConfig>
|
<GUIConfig name="CheckHistoryFiles">no</GUIConfig>
|
||||||
<GUIConfig name="TrayIcon">no</GUIConfig>
|
<GUIConfig name="TrayIcon">no</GUIConfig>
|
||||||
<GUIConfig name="MaitainIndent">yes</GUIConfig>
|
<GUIConfig name="MaitainIndent">yes</GUIConfig>
|
||||||
<GUIConfig name="TagsMatchHighLight" TagAttrHighLight="yes" HighLightNonHtmlZone="no">yes</GUIConfig>
|
<GUIConfig name="TagsMatchHighLight" TagAttrHighLight="yes" HighLightNonHtmlZone="no">yes</GUIConfig>
|
||||||
<GUIConfig name="RememberLastSession">no</GUIConfig>
|
<GUIConfig name="RememberLastSession">no</GUIConfig>
|
||||||
<GUIConfig name="DetectEncoding">yes</GUIConfig>
|
<GUIConfig name="DetectEncoding">yes</GUIConfig>
|
||||||
<GUIConfig name="NewDocDefaultSettings" format="0" encoding="4" lang="0" codepage="-1" openAnsiAsUTF8="yes" />
|
<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="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="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="Backup" action="0" useCustumDir="no" dir="" isSnapshotMode="no" snapshotBackupTiming="7000" />
|
||||||
<GUIConfig name="TaskList">yes</GUIConfig>
|
<GUIConfig name="TaskList">yes</GUIConfig>
|
||||||
<GUIConfig name="MRU">yes</GUIConfig>
|
<GUIConfig name="MRU">yes</GUIConfig>
|
||||||
<GUIConfig name="URL">2</GUIConfig>
|
<GUIConfig name="URL">2</GUIConfig>
|
||||||
<GUIConfig name="globalOverride" fg="no" bg="no" font="no" fontSize="no" bold="no" italic="no" underline="no" />
|
<GUIConfig name="globalOverride" fg="no" bg="no" font="no" fontSize="no" bold="no" italic="no" underline="no" />
|
||||||
<GUIConfig name="auto-completion" autoCAction="3" triggerFromNbChar="1" autoCIgnoreNumbers="yes" funcParams="yes" />
|
<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="auto-insert" parentheses="no" brackets="no" curlyBrackets="no" quotes="no" doubleQuotes="no" htmlXmlTag="no" />
|
||||||
<GUIConfig name="sessionExt"></GUIConfig>
|
<GUIConfig name="sessionExt"></GUIConfig>
|
||||||
<GUIConfig name="workspaceExt"></GUIConfig>
|
<GUIConfig name="workspaceExt"></GUIConfig>
|
||||||
<GUIConfig name="MenuBar">hide</GUIConfig>
|
<GUIConfig name="MenuBar">hide</GUIConfig>
|
||||||
<GUIConfig name="Caret" width="1" blinkRate="600" />
|
<GUIConfig name="Caret" width="1" blinkRate="600" />
|
||||||
<GUIConfig name="ScintillaGlobalSettings" enableMultiSelection="no" />
|
<GUIConfig name="ScintillaGlobalSettings" enableMultiSelection="no" />
|
||||||
<GUIConfig name="openSaveDir" value="0" defaultDirPath="" />
|
<GUIConfig name="openSaveDir" value="0" defaultDirPath="" />
|
||||||
<GUIConfig name="titleBar" short="no" />
|
<GUIConfig name="titleBar" short="no" />
|
||||||
<GUIConfig name="wordCharList" useDefault="yes" charsAdded="" />
|
<GUIConfig name="wordCharList" useDefault="yes" charsAdded="" />
|
||||||
<GUIConfig name="delimiterSelection" leftmostDelimiter="40" rightmostDelimiter="41" delimiterSelectionOnEntireDocument="no" />
|
<GUIConfig name="delimiterSelection" leftmostDelimiter="40" rightmostDelimiter="41" delimiterSelectionOnEntireDocument="no" />
|
||||||
<GUIConfig name="multiInst" setting="0" />
|
<GUIConfig name="multiInst" setting="0" />
|
||||||
<GUIConfig name="MISC" fileSwitcherWithoutExtColumn="no" backSlashIsEscapeCharacterForSql="yes" newStyleSaveDlg="no" isFolderDroppedOpenFiles="no" />
|
<GUIConfig name="MISC" fileSwitcherWithoutExtColumn="no" backSlashIsEscapeCharacterForSql="yes" newStyleSaveDlg="no" isFolderDroppedOpenFiles="no" />
|
||||||
<GUIConfig name="searchEngine" searchEngineChoice="1" searchEngineCustom="" />
|
<GUIConfig name="searchEngine" searchEngineChoice="1" searchEngineCustom="" />
|
||||||
<GUIConfig name="SmartHighLight" matchCase="no" wholeWordOnly="no" useFindSettings="no" onAnotherView="no">yes</GUIConfig>
|
<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="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">
|
<GUIConfig name="DockingManager" leftWidth="200" rightWidth="200" topHeight="200" bottomHeight="200">
|
||||||
<ActiveTabs cont="0" activeTab="-1" />
|
<ActiveTabs cont="0" activeTab="-1" />
|
||||||
<ActiveTabs cont="1" activeTab="-1" />
|
<ActiveTabs cont="1" activeTab="-1" />
|
||||||
<ActiveTabs cont="2" activeTab="-1" />
|
<ActiveTabs cont="2" activeTab="-1" />
|
||||||
<ActiveTabs cont="3" activeTab="-1" />
|
<ActiveTabs cont="3" activeTab="-1" />
|
||||||
</GUIConfig>
|
</GUIConfig>
|
||||||
</GUIConfigs>
|
</GUIConfigs>
|
||||||
<ProjectPanels>
|
<ProjectPanels>
|
||||||
<ProjectPanel id="0" workSpaceFile="" />
|
<ProjectPanel id="0" workSpaceFile="" />
|
||||||
<ProjectPanel id="1" workSpaceFile="" />
|
<ProjectPanel id="1" workSpaceFile="" />
|
||||||
<ProjectPanel id="2" workSpaceFile="" />
|
<ProjectPanel id="2" workSpaceFile="" />
|
||||||
</ProjectPanels>
|
</ProjectPanels>
|
||||||
</NotepadPlus>
|
</NotepadPlus>
|
||||||
139
.cbin/_include/XMPlay/xmplay.ini
Normal file
139
.cbin/_include/XMPlay/xmplay.ini
Normal file
|
|
@ -0,0 +1,139 @@
|
||||||
|
[XMPlay]
|
||||||
|
MixMode=56
|
||||||
|
AutoName=0
|
||||||
|
WriteSource=0
|
||||||
|
WriteSourceRes=1
|
||||||
|
WriteSepInst=0
|
||||||
|
WriteNoExt=0
|
||||||
|
WriteTitle=0
|
||||||
|
AutoAmp=1
|
||||||
|
RGain=0
|
||||||
|
RGainAmp=0
|
||||||
|
RGainLimit=0
|
||||||
|
Time=1
|
||||||
|
ShowTenths=1
|
||||||
|
TimeHours=1
|
||||||
|
Volume=90
|
||||||
|
LogVolume=1
|
||||||
|
Balance=50
|
||||||
|
Amplify=-1074017600
|
||||||
|
AmpReset=1
|
||||||
|
PanSep=50
|
||||||
|
Loop=0
|
||||||
|
LoopLimit=1
|
||||||
|
LoopLimitTime=0
|
||||||
|
DecayEnd=5
|
||||||
|
LoopList=1
|
||||||
|
ListTotal=0
|
||||||
|
UnloadLast=0
|
||||||
|
AutoAdvance=1
|
||||||
|
ListSort=0
|
||||||
|
FollowList=0
|
||||||
|
AutoRemove=0
|
||||||
|
Trim=0
|
||||||
|
NoMute=0
|
||||||
|
Fade=0
|
||||||
|
NetBuffer=5
|
||||||
|
NetPreBuffer=3
|
||||||
|
NetTimeout=10
|
||||||
|
RestrictRate=0
|
||||||
|
AutoReconnect=0
|
||||||
|
Proxy=1
|
||||||
|
ProxyConfig=
|
||||||
|
Dither=0
|
||||||
|
CrossFadeLen=0
|
||||||
|
CrossFadeChange=0
|
||||||
|
MODmode=0
|
||||||
|
MODtimeinfo=1
|
||||||
|
MODxfx=0
|
||||||
|
MODloop=1
|
||||||
|
MODloopreset=0
|
||||||
|
MODvirtchans=256
|
||||||
|
Mini=0
|
||||||
|
InTray=0
|
||||||
|
OnTop=259
|
||||||
|
MultiInstance=0
|
||||||
|
SaveClosePos=0
|
||||||
|
Bubbles=3
|
||||||
|
FadeBubbles=1
|
||||||
|
InfoMove=0
|
||||||
|
WindowLock=0
|
||||||
|
PanelPos=-268374016
|
||||||
|
ListFilenames=0
|
||||||
|
ListQueue=0
|
||||||
|
ListClick=1793
|
||||||
|
AutoSave=0
|
||||||
|
ListCols=-2146959349
|
||||||
|
Verify=1
|
||||||
|
NoDuplicates=0
|
||||||
|
ScanHTML=1
|
||||||
|
ArchiveLevel=2
|
||||||
|
SearchDrives=0
|
||||||
|
Random=3
|
||||||
|
DeadStop=0
|
||||||
|
Queue=0
|
||||||
|
QueueStop=0
|
||||||
|
QueuePlay=0
|
||||||
|
QueueToggle=1
|
||||||
|
SubDir=0
|
||||||
|
TitleNoExt=0
|
||||||
|
TitleSpaces=0
|
||||||
|
TitleSubsongs=0
|
||||||
|
TitleCUE=1
|
||||||
|
TitleScroll=1
|
||||||
|
TitleTray=3
|
||||||
|
Clipboard=0
|
||||||
|
AutoSet=0
|
||||||
|
InfoResize=1
|
||||||
|
InfoResizeLimit=500
|
||||||
|
InfoTextSize=0
|
||||||
|
InfoWidth=80
|
||||||
|
InfoList=15
|
||||||
|
InfoPaty=234
|
||||||
|
InfoPatmc=20
|
||||||
|
RestrictVis=0
|
||||||
|
RestrictVisW=290
|
||||||
|
RestrictVisH=218
|
||||||
|
SpectrumSpeed=1
|
||||||
|
VisSync=0
|
||||||
|
VisTextSize=0
|
||||||
|
VisRefresh=40
|
||||||
|
HelpTextSize=0
|
||||||
|
PanelOpen=0
|
||||||
|
InfoPos=00020000000200005D0300003E030000
|
||||||
|
VisSize=22010000DA000000
|
||||||
|
FindSize=0000000000000000C8000000
|
||||||
|
LibWidth=600
|
||||||
|
LibSort=2
|
||||||
|
LibMode=0
|
||||||
|
LibCols=0000000000000000010000000000E04102000000000050410300000000005041040000000000E040050000000000E04006000000000040410700000000000000080000000000C04009000000000000000A0000000000E0400B0000000000E0400C000000000000000D000000000000000E000000000000000F00000000000000
|
||||||
|
LibParseList=0
|
||||||
|
LibFilePath=0
|
||||||
|
LibAbrSize=1
|
||||||
|
LibInlineText=1
|
||||||
|
LibInfoTags=1
|
||||||
|
LibKeepOverridden=1
|
||||||
|
LibPlayTime=0
|
||||||
|
LibAvgCount=0
|
||||||
|
LibPlayReplace=0
|
||||||
|
UpdateCheck=0
|
||||||
|
UpdateTime=0
|
||||||
|
IgnoreTypes=avi mpg mpeg
|
||||||
|
FilePath=
|
||||||
|
WritePath=X:\
|
||||||
|
TitleForm=%?2{%2 - }%?1{%1|%0}
|
||||||
|
TitleFormList=
|
||||||
|
Find=
|
||||||
|
FindPlay=0
|
||||||
|
FindAutoList=0
|
||||||
|
FindIn=3
|
||||||
|
NoCheckDead=0
|
||||||
|
CurTrack=64
|
||||||
|
Info=197379
|
||||||
|
Skin=plugins\WAModern NightVision
|
||||||
|
External=464C414300666C6163202D54205449544C453D2531202D54204152544953543D2532202D5420414C42554D3D2533202D5420444154453D2534202D5420545241434B4E554D4245523D2535202D542047454E52453D2536202D5420434F4D4D454E543D2537202D6F20256F202D00666C616300404C414D45006C616D65202D2D616C742D707265736574207374616E64617264202D2D69676E6F72652D7461672D6572726F7273202D2D7474202531202D2D7461202532202D2D746C202533202D2D7479202534202D2D746E202535202D2D7467202536202D2D7463202537202D20256F006D703300864F4747454E43006F6767656E63202D74202531202D61202532202D6C202533202D64202534202D4E202535202D47202536202D6320636F6D6D656E743D2537202D6F20256F202D006F676700C800
|
||||||
|
DSP=FF000200100000000000000040410000004100008041000100280000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
PluginTypes=
|
||||||
|
Shortcuts=060000004F0018020C0000004F04180250000000500019025100000050041902500000001300450251000000130445025200000027004D035300000025004B0354000000240047035600000027044D035500000025044B03810000002100490380000000220051038200000023004F03700100002D005203710100002D045203900100005A022C027B0100005100100277010000BF0435025001000026004803580100002604480351010000280050035901000028045003540100002602480354010000280250035501000041021E02560100004902170260010000460221026401000046012102610100004600210262010000460421026301000046062102740100000D001C02750100002000390276010000BF0035027E010000BF023502720100002E005303730100002E045303000200006B004E02010200006D004A02070200006F003503080200006A003702010000004D003202020000004E003102030000004E0431020A00000073013E020B00000073053E0205000000780043020101000070003B020201000071003C020301000072003D020401000073003E020501000074003F0260020000750040020801000043022E02060100006800480207010000620050022101000064004B022201000066004D022301000065004C0224010000670047022501000069004902040000007B005802
|
||||||
|
DeviceMode=0000000080BB000002000000020000008A0200000000000003000000
|
||||||
|
Track1=0
|
||||||
1920
.cbin/_include/XYplorerFree/Data/XYplorer.ini
Normal file
1920
.cbin/_include/XYplorerFree/Data/XYplorer.ini
Normal file
File diff suppressed because it is too large
Load diff
1
.cbin/_include/_Drivers/Intel RST/SetupRST_13.x.txt
Normal file
1
.cbin/_include/_Drivers/Intel RST/SetupRST_13.x.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Broken. "requires" .NET 4.5 but fails to accept .NET 4.6 or newer (which we install).
|
||||||
7
.cbin/_include/_Office/365_32.xml
Normal file
7
.cbin/_include/_Office/365_32.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<Configuration>
|
||||||
|
<Add OfficeClientEdition="32" Channel="Current">
|
||||||
|
<Product ID="O365ProPlusRetail">
|
||||||
|
<Language ID="en-us" />
|
||||||
|
</Product>
|
||||||
|
</Add>
|
||||||
|
</Configuration>
|
||||||
7
.cbin/_include/_Office/365_64.xml
Normal file
7
.cbin/_include/_Office/365_64.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<Configuration>
|
||||||
|
<Add OfficeClientEdition="64" Channel="Current">
|
||||||
|
<Product ID="O365ProPlusRetail">
|
||||||
|
<Language ID="en-us" />
|
||||||
|
</Product>
|
||||||
|
</Add>
|
||||||
|
</Configuration>
|
||||||
7
.cbin/_include/_Office/hb_32.xml
Normal file
7
.cbin/_include/_Office/hb_32.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<Configuration>
|
||||||
|
<Add OfficeClientEdition="32" Channel="Current">
|
||||||
|
<Product ID="HomeBusinessRetail">
|
||||||
|
<Language ID="en-us" />
|
||||||
|
</Product>
|
||||||
|
</Add>
|
||||||
|
</Configuration>
|
||||||
7
.cbin/_include/_Office/hb_64.xml
Normal file
7
.cbin/_include/_Office/hb_64.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<Configuration>
|
||||||
|
<Add OfficeClientEdition="64" Channel="Current">
|
||||||
|
<Product ID="HomeBusinessRetail">
|
||||||
|
<Language ID="en-us" />
|
||||||
|
</Product>
|
||||||
|
</Add>
|
||||||
|
</Configuration>
|
||||||
7
.cbin/_include/_Office/hs_32.xml
Normal file
7
.cbin/_include/_Office/hs_32.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<Configuration>
|
||||||
|
<Add OfficeClientEdition="32" Channel="Current">
|
||||||
|
<Product ID="HomeStudentRetail">
|
||||||
|
<Language ID="en-us" />
|
||||||
|
</Product>
|
||||||
|
</Add>
|
||||||
|
</Configuration>
|
||||||
7
.cbin/_include/_Office/hs_64.xml
Normal file
7
.cbin/_include/_Office/hs_64.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<Configuration>
|
||||||
|
<Add OfficeClientEdition="64" Channel="Current">
|
||||||
|
<Product ID="HomeStudentRetail">
|
||||||
|
<Language ID="en-us" />
|
||||||
|
</Product>
|
||||||
|
</Add>
|
||||||
|
</Configuration>
|
||||||
22
.cbin/_include/_vcredists/InstallAll.bat
Normal file
22
.cbin/_include/_vcredists/InstallAll.bat
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
start "" /wait "2008sp1\x32\vcredist.exe" /qb! /norestart
|
||||||
|
start "" /wait "2008sp1\x64\vcredist.exe" /qb! /norestart
|
||||||
|
|
||||||
|
start "" /wait "2010\x32\vcredist.exe" /passive /norestart
|
||||||
|
start "" /wait "2010\x64\vcredist.exe" /passive /norestart
|
||||||
|
|
||||||
|
start "" /wait "2012u4\x32\vcredist.exe" /passive /norestart
|
||||||
|
start "" /wait "2012u4\x64\vcredist.exe" /passive /norestart
|
||||||
|
|
||||||
|
start "" /wait "2013\x32\vcredist.exe" /install /passive /norestart
|
||||||
|
start "" /wait "2013\x64\vcredist.exe" /install /passive /norestart
|
||||||
|
|
||||||
|
start "" /wait "2015u3\x32\vcredist.exe" /install /passive /norestart
|
||||||
|
start "" /wait "2015u3\x64\vcredist.exe" /install /passive /norestart
|
||||||
|
|
||||||
|
start "" /wait "2017\x32\vcredist.exe" /install /passive /norestart
|
||||||
|
start "" /wait "2017\x64\vcredist.exe" /install /passive /norestart
|
||||||
|
|
||||||
|
endlocal
|
||||||
48
.gitignore
vendored
48
.gitignore
vendored
|
|
@ -1,19 +1,39 @@
|
||||||
**/__pycache__/*
|
**/__pycache__/*
|
||||||
.bin/tmp
|
*.bak
|
||||||
.bin/ConEmu/
|
|
||||||
.bin/python/
|
|
||||||
.bin/7-Zip/
|
|
||||||
.bin/NotepadPlusPlus/
|
|
||||||
.cbin/
|
|
||||||
*.exe
|
*.exe
|
||||||
.bin/HWiNFO/HWiNFO*.ini
|
.bin/7-Zip/
|
||||||
.bin/ProcessKiller/
|
|
||||||
.bin/SysinternalsSuite/
|
|
||||||
.bin/XMPlay/
|
|
||||||
.bin/AIDA64/
|
.bin/AIDA64/
|
||||||
.bin/BleachBit/
|
.bin/BleachBit/
|
||||||
.bin/erunt/
|
|
||||||
.bin/Everything/
|
|
||||||
.bin/ProduKey/
|
|
||||||
.bin/ClassicStartSkin/
|
.bin/ClassicStartSkin/
|
||||||
.bin/curl/
|
.bin/ConEmu/
|
||||||
|
.bin/Erunt/
|
||||||
|
.bin/Everything/
|
||||||
|
.bin/FastCopy/
|
||||||
|
.bin/HWiNFO/HWiNFO*.ini
|
||||||
|
.bin/NotepadPlusPlus/
|
||||||
|
.bin/ProcessKiller/
|
||||||
|
.bin/ProduKey/
|
||||||
|
.bin/Python/
|
||||||
|
.bin/Tmp/
|
||||||
|
.bin/XMPlay/
|
||||||
|
.bin/_Drivers/SDIO/
|
||||||
|
.cbin/*.7z
|
||||||
|
.cbin/AIDA64/
|
||||||
|
.cbin/Autoruns/
|
||||||
|
.cbin/BleachBit-Portable/
|
||||||
|
.cbin/BlueScreenView/
|
||||||
|
.cbin/Caffeine/
|
||||||
|
.cbin/Du/
|
||||||
|
.cbin/Everything/
|
||||||
|
.cbin/FirefoxExtensions/
|
||||||
|
.cbin/IObitUninstallerPortable/
|
||||||
|
.cbin/ProduKey/
|
||||||
|
.cbin/TestDisk/
|
||||||
|
.cbin/TreeSizeFree-Portable/
|
||||||
|
.cbin/XMPlay/
|
||||||
|
.cbin/XYplorerFree/
|
||||||
|
.cbin/_Drivers/
|
||||||
|
.cbin/_Office/
|
||||||
|
.cbin/_vcredists/
|
||||||
|
.cbin/wimlib/
|
||||||
|
OUT*/
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=https://support.amd.com/en-us/download
|
URL=https://support.amd.com/en-us/download
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=https://ftp.dell.com/browse_for_drivers/
|
URL=https://ftp.dell.com/browse_for_drivers/
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=https://downloads.dell.com/published/Pages/index.html
|
URL=https://downloads.dell.com/published/Pages/index.html
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://support.dell.com/
|
URL=http://support.dell.com/
|
||||||
IDList=
|
IDList=
|
||||||
HotKey=0
|
HotKey=0
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
IDList=
|
IDList=
|
||||||
URL=http://www.majorgeeks.com/files/details/device_remover_543c.html
|
URL=http://www.majorgeeks.com/files/details/device_remover_543c.html
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,11
|
Prop3=19,11
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
IDList=
|
IDList=
|
||||||
URL=https://www.wagnardsoft.com/
|
URL=https://www.wagnardsoft.com/
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://support.hp.com/us-en/drivers
|
URL=http://support.hp.com/us-en/drivers
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,11
|
Prop3=19,11
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
IDList=
|
IDList=
|
||||||
URL=https://www.intel.com/content/www/us/en/support/detect.html
|
URL=https://www.intel.com/content/www/us/en/support/detect.html
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=https://www.nvidia.com/Download/index.aspx?lang=en-us
|
URL=https://www.nvidia.com/Download/index.aspx?lang=en-us
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
IDList=
|
IDList=
|
||||||
URL=http://www.samsung.com/semiconductor/minisite/ssd/download/tools.html
|
URL=http://www.samsung.com/semiconductor/minisite/ssd/download/tools.html
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,11
|
Prop3=19,11
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=https://www.backblaze.com/gen/install_backblaze
|
URL=https://www.backblaze.com/gen/install_backblaze-af9duk
|
||||||
IDList=
|
IDList=
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
Windows Registry Editor Version 5.00
|
Windows Registry Editor Version 5.00
|
||||||
|
|
||||||
;Delete entries acording to http://support.microsoft.com/kb/314060
|
;Delete entries acording to http://support.microsoft.com/kb/314060
|
||||||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}]
|
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}]
|
||||||
"UpperFilters"=-
|
"UpperFilters"=-
|
||||||
"LowerFilters"=-
|
"LowerFilters"=-
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
IDList=
|
IDList=
|
||||||
URL=http://www.nirsoft.net/outlook_office_software.html
|
URL=http://www.nirsoft.net/outlook_office_software.html
|
||||||
HotKey=0
|
HotKey=0
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
IDList=
|
IDList=
|
||||||
URL=http://www.nirsoft.net/password_recovery_tools.html
|
URL=http://www.nirsoft.net/password_recovery_tools.html
|
||||||
HotKey=0
|
HotKey=0
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
IDList=
|
IDList=
|
||||||
URL=http://live.sysinternals.com/
|
URL=http://live.sysinternals.com/
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://kb.eset.com/esetkb/index?page=content&id=SOLN146
|
URL=http://kb.eset.com/esetkb/index?page=content&id=SOLN146
|
||||||
IDList=
|
IDList=
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://www.avg.com/us-en/utilities
|
URL=http://www.avg.com/us-en/utilities
|
||||||
IDList=
|
IDList=
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://files.avast.com/iavs9x/avastclear.exe
|
URL=http://files.avast.com/iavs9x/avastclear.exe
|
||||||
IDList=
|
IDList=
|
||||||
HotKey=0
|
HotKey=0
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://dlpro.antivir.com/package/regcleaner/win32/en/avira_registry_cleaner_en.zip
|
URL=http://dlpro.antivir.com/package/regcleaner/win32/en/avira_registry_cleaner_en.zip
|
||||||
IDList=
|
IDList=
|
||||||
HotKey=0
|
HotKey=0
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://download.eset.com/special/ESETUninstaller.exe
|
URL=http://download.eset.com/special/ESETUninstaller.exe
|
||||||
IDList=
|
IDList=
|
||||||
HotKey=0
|
HotKey=0
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://media.kaspersky.com/utilities/ConsumerUtilities/kavremvr.exe
|
URL=http://media.kaspersky.com/utilities/ConsumerUtilities/kavremvr.exe
|
||||||
IDList=
|
IDList=
|
||||||
HotKey=0
|
HotKey=0
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://www.malwarebytes.org/mbam-clean.exe
|
URL=http://www.malwarebytes.org/mbam-clean.exe
|
||||||
IDList=
|
IDList=
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,2
|
Prop3=19,2
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=http://download.mcafee.com/products/licensed/cust_support_patches/MCPR.exe
|
URL=http://download.mcafee.com/products/licensed/cust_support_patches/MCPR.exe
|
||||||
IDList=
|
IDList=
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[{000214A0-0000-0000-C000-000000000046}]
|
[{000214A0-0000-0000-C000-000000000046}]
|
||||||
Prop3=19,1
|
Prop3=19,1
|
||||||
[InternetShortcut]
|
[InternetShortcut]
|
||||||
URL=ftp://ftp.symantec.com/public/english_us_canada/removal_tools/Norton_Removal_Tool.exe
|
URL=ftp://ftp.symantec.com/public/english_us_canada/removal_tools/Norton_Removal_Tool.exe
|
||||||
IDList=
|
IDList=
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=PyScript
|
|
||||||
set L_PATH=Scripts
|
|
||||||
set L_ITEM=activate.py
|
|
||||||
set L_ARGS=
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
63
Build Kit.cmd
Normal file
63
Build Kit.cmd
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
:: Wizard Kit: Build Tool Launcher ::
|
||||||
|
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
:Init
|
||||||
|
setlocal
|
||||||
|
title Wizard Kit: Build Tool
|
||||||
|
call :CheckFlags %*
|
||||||
|
|
||||||
|
:LaunchPrep
|
||||||
|
rem Verifies the environment before launching item
|
||||||
|
if not exist ".bin\Scripts\build_kit.ps1" (goto ErrorBuildKitMissing)
|
||||||
|
|
||||||
|
:PrepNewKit
|
||||||
|
rem Copy base files to a new folder OUT\%KIT_NAME_FULL%
|
||||||
|
robocopy /e . OUT /xd .git .root_items OUT /xf .gitignore "Build Kit.cmd" ConEmu.png
|
||||||
|
robocopy /e .root_items OUT
|
||||||
|
copy ConEmu.png OUT\.bin\ConEmu\
|
||||||
|
mkdir OUT\.cbin >nul 2>&1
|
||||||
|
attrib +h OUT\.bin >nul 2>&1
|
||||||
|
attrib +h OUT\.cbin >nul 2>&1
|
||||||
|
|
||||||
|
:Launch
|
||||||
|
rem Calls the Launch.cmd script using the variables defined above
|
||||||
|
set "file=OUT\.bin\Scripts\build_kit.ps1"
|
||||||
|
powershell -executionpolicy bypass -noprofile -file %file% || goto ErrorUnknown
|
||||||
|
goto Exit
|
||||||
|
|
||||||
|
:: Functions ::
|
||||||
|
:CheckFlags
|
||||||
|
rem Loops through all arguments to check for accepted flags
|
||||||
|
set DEBUG=
|
||||||
|
for %%f in (%*) do (
|
||||||
|
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
||||||
|
)
|
||||||
|
@exit /b 0
|
||||||
|
|
||||||
|
:: Errors ::
|
||||||
|
:ErrorBuildKitMissing
|
||||||
|
echo.
|
||||||
|
echo ERROR: build_kit.ps1 script not found.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:ErrorUnknown
|
||||||
|
echo.
|
||||||
|
echo ERROR: Encountered an unknown error.
|
||||||
|
goto Abort
|
||||||
|
|
||||||
|
:Abort
|
||||||
|
color 4e
|
||||||
|
echo Aborted.
|
||||||
|
echo.
|
||||||
|
echo Press any key to exit...
|
||||||
|
pause>nul
|
||||||
|
color
|
||||||
|
rem Set errorlevel to 1 by calling color incorrectly
|
||||||
|
color 00
|
||||||
|
goto Exit
|
||||||
|
|
||||||
|
:: Cleanup and exit ::
|
||||||
|
:Exit
|
||||||
|
endlocal
|
||||||
|
exit /b %errorlevel%
|
||||||
BIN
ConEmu.png
Normal file
BIN
ConEmu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 113 KiB |
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Console
|
|
||||||
set L_PATH=TestDisk
|
|
||||||
set L_ITEM=photorec_win.exe
|
|
||||||
set L_ARGS=
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Console
|
|
||||||
set L_PATH=TestDisk
|
|
||||||
set L_ITEM=qphotorec_win.exe
|
|
||||||
set L_ARGS=
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Console
|
|
||||||
set L_PATH=TestDisk
|
|
||||||
set L_ITEM=testdisk_win.exe
|
|
||||||
set L_ARGS=
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,127 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
call "%bin%\Scripts\init_client_dir.cmd" /Info /Transfer
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Program
|
|
||||||
set L_PATH=FastCopy
|
|
||||||
set L_ITEM=FastCopy.exe
|
|
||||||
set L_ARGS=/logfile=%log_dir%\FastCopy.log /cmd=noexist_only /utf8 /skip_empty_dir /linkdest /exclude=$RECYCLE.BIN;$Recycle.Bin;.AppleDB;.AppleDesktop;.AppleDouble;.com.apple.timemachine.supported;.dbfseventsd;.DocumentRevisions-V100*;.DS_Store;.fseventsd;.PKInstallSandboxManager;.Spotlight*;.SymAV*;.symSchedScanLockxz;.TemporaryItems;.Trash*;.vol;.VolumeIcon.icns;desktop.ini;Desktop?DB;Desktop?DF;hiberfil.sys;lost+found;Network?Trash?Folder;pagefile.sys;Recycled;RECYCLER;System?Volume?Information;Temporary?Items;Thumbs.db /to=%client_dir%\Transfer_%iso_date%\
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,127 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
call "%bin%\Scripts\init_client_dir.cmd" /Info /Transfer
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Program
|
|
||||||
set L_PATH=FastCopy
|
|
||||||
set L_ITEM=FastCopy.exe
|
|
||||||
set L_ARGS=/logfile=%log_dir%\FastCopy.log /cmd=noexist_only /utf8 /skip_empty_dir /linkdest /exclude=$RECYCLE.BIN;$Recycle.Bin;.AppleDB;.AppleDesktop;.AppleDouble;.com.apple.timemachine.supported;.dbfseventsd;.DocumentRevisions-V100*;.DS_Store;.fseventsd;.PKInstallSandboxManager;.Spotlight*;.SymAV*;.symSchedScanLockxz;.TemporaryItems;.Trash*;.vol;.VolumeIcon.icns;desktop.ini;Desktop?DB;Desktop?DF;hiberfil.sys;lost+found;Network?Trash?Folder;pagefile.sys;Recycled;RECYCLER;System?Volume?Information;Temporary?Items;Thumbs.db /to=%client_dir%\Transfer_%iso_date%\
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,129 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
call "%bin%\Scripts\init_client_dir.cmd" /Quarantine
|
|
||||||
set "q_dir=%client_dir%\Quarantine\KVRT"
|
|
||||||
mkdir "%q_dir%">nul 2>&1
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Program
|
|
||||||
set L_PATH=KVRT
|
|
||||||
set L_ITEM=KVRT.exe
|
|
||||||
set L_ARGS=-accepteula -d %q_dir% -processlevel 3 -dontcryptsupportinfo -fixednames
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=PyScript
|
|
||||||
set L_PATH=Scripts
|
|
||||||
set L_ITEM=transferred_keys.py
|
|
||||||
set L_ARGS=
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=PyScript
|
|
||||||
set L_PATH=Scripts
|
|
||||||
set L_ITEM=user_data_transfer.py
|
|
||||||
set L_ARGS=
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Program
|
|
||||||
set L_PATH=XYplorerFree
|
|
||||||
set L_ITEM=XYplorerFree.exe
|
|
||||||
set L_ARGS=/exp /win=max %userprofile%
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=True
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
:: Wizard Kit: Launcher Script ::
|
|
||||||
::
|
|
||||||
:: This script works by setting env variables and then calling Launch.cmd
|
|
||||||
:: which inherits the variables. This bypasses batch file argument parsing
|
|
||||||
:: which is awful.
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
:Init
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
title Wizard Kit: Launcher
|
|
||||||
call :CheckFlags %*
|
|
||||||
call :FindBin
|
|
||||||
call :SetTitle Launcher
|
|
||||||
|
|
||||||
:DefineLaunch
|
|
||||||
:: Set L_TYPE to one of these options:
|
|
||||||
:: Console, Folder, Office, Program, PSScript, or PyScript
|
|
||||||
:: Set L_PATH to the path to the program folder
|
|
||||||
:: NOTE: Launch.cmd will test for L_PATH in the following order:
|
|
||||||
:: 1: %cbin%\L_PATH.7z (which will be extracted to %bin%\L_PATH)
|
|
||||||
:: 2: %bin%\L_PATH
|
|
||||||
:: 3. %L_PATH% (i.e. treat L_PATH as an absolute path)
|
|
||||||
:: Set L_ITEM to one of the following:
|
|
||||||
:: 1. The filename of the item to launch
|
|
||||||
:: 2. The Office product to install
|
|
||||||
:: 3. '.' to open extracted folder
|
|
||||||
:: Set L_ARGS to include any necessary arguments (if any)
|
|
||||||
:: Set L_7ZIP to include any necessary arguments for extraction
|
|
||||||
:: Set L_CHCK to True to have Launch.cmd to stay open if an error is encountered
|
|
||||||
:: Set L_ELEV to True to launch with elevated permissions
|
|
||||||
:: Set L_NCMD to True to stay in the native console window
|
|
||||||
:: Set L_WAIT to True to have the script wait until L_ITEM has comlpeted
|
|
||||||
set L_TYPE=Program
|
|
||||||
set L_PATH=XYplorerFree
|
|
||||||
set L_ITEM=XYplorerFree.exe
|
|
||||||
set L_ARGS=/exp /win=max %userprofile%
|
|
||||||
set L_7ZIP=
|
|
||||||
set L_CHCK=True
|
|
||||||
set L_ELEV=
|
|
||||||
set L_NCMD=True
|
|
||||||
set L_WAIT=
|
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
:: Do not edit anything below this line! ::
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
|
|
||||||
:LaunchPrep
|
|
||||||
rem Verifies the environment before launching item
|
|
||||||
if not defined bin (goto ErrorNoBin)
|
|
||||||
if not exist "%bin%\Scripts\Launch.cmd" (goto ErrorLaunchCMDMissing)
|
|
||||||
|
|
||||||
:Launch
|
|
||||||
rem Calls the Launch.cmd script using the variables defined above
|
|
||||||
call "%bin%\Scripts\Launch.cmd" || goto ErrorLaunchCMD
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Functions ::
|
|
||||||
:CheckFlags
|
|
||||||
rem Loops through all arguments to check for accepted flags
|
|
||||||
set DEBUG=
|
|
||||||
for %%f in (%*) do (
|
|
||||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
||||||
)
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:FindBin
|
|
||||||
rem Checks the current directory and all parents for the ".bin" folder
|
|
||||||
rem NOTE: Has not been tested for UNC paths
|
|
||||||
set bin=
|
|
||||||
pushd "%~dp0"
|
|
||||||
:FindBinInner
|
|
||||||
if exist ".bin" (goto FindBinDone)
|
|
||||||
if "%~d0\" == "%cd%" (popd & @exit /b 1)
|
|
||||||
cd ..
|
|
||||||
goto FindBinInner
|
|
||||||
:FindBinDone
|
|
||||||
set "bin=%cd%\.bin"
|
|
||||||
set "cbin=%cd%\.cbin"
|
|
||||||
popd
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:SetTitle
|
|
||||||
rem Sets title using KIT_NAME_FULL from settings\main.py
|
|
||||||
set "SETTINGS=%bin%\Scripts\settings\main.py"
|
|
||||||
for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_FULL %SETTINGS%`) do (
|
|
||||||
set "_v=%%f"
|
|
||||||
set "_v=!_v:*'=!"
|
|
||||||
set "KIT_NAME_FULL=!_v:~0,-1!"
|
|
||||||
)
|
|
||||||
set "window_title=%*"
|
|
||||||
if not defined window_title set "window_title=Launcher"
|
|
||||||
set "window_title=%KIT_NAME_FULL%: %window_title%"
|
|
||||||
title %window_title%
|
|
||||||
@exit /b 0
|
|
||||||
|
|
||||||
:: Errors ::
|
|
||||||
:ErrorLaunchCMD
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd did not run correctly. Try using the /DEBUG flag?
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorLaunchCMDMissing
|
|
||||||
echo.
|
|
||||||
echo ERROR: Launch.cmd script not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:ErrorNoBin
|
|
||||||
echo.
|
|
||||||
echo ERROR: ".bin" folder not found.
|
|
||||||
goto Abort
|
|
||||||
|
|
||||||
:Abort
|
|
||||||
color 4e
|
|
||||||
echo Aborted.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause>nul
|
|
||||||
color
|
|
||||||
rem Set errorlevel to 1 by calling color incorrectly
|
|
||||||
color 00
|
|
||||||
goto Exit
|
|
||||||
|
|
||||||
:: Cleanup and exit ::
|
|
||||||
:Exit
|
|
||||||
endlocal
|
|
||||||
exit /b %errorlevel%
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue