New folder layout
* Main ideas * Match WizardKit layout * Keep original folders clean * Build work is now done in $Root\BUILD * $Temp is now set to $Root\BUILD\Temp * New iso files are put in $Root\OUT_PE
This commit is contained in:
parent
1b84b1dd91
commit
1b00c1c9a3
22 changed files with 5931 additions and 5933 deletions
|
|
@ -10,11 +10,11 @@ $Host.UI.RawUI.WindowTitle = "Wizard Kit: Windows PE Build Tool"
|
||||||
$WD = $(Split-Path $MyInvocation.MyCommand.Path)
|
$WD = $(Split-Path $MyInvocation.MyCommand.Path)
|
||||||
$Bin = (Get-Item $WD -Force).Parent.FullName
|
$Bin = (Get-Item $WD -Force).Parent.FullName
|
||||||
$Root = (Get-Item $Bin -Force).Parent.FullName
|
$Root = (Get-Item $Bin -Force).Parent.FullName
|
||||||
$Temp = "$Bin\tmp"
|
$Build = "$Root\BUILD"
|
||||||
|
$Temp = "$Build\Temp"
|
||||||
$Date = Get-Date -UFormat "%Y-%m-%d"
|
$Date = Get-Date -UFormat "%Y-%m-%d"
|
||||||
$Host.UI.RawUI.BackgroundColor = "Black"
|
$Host.UI.RawUI.BackgroundColor = "Black"
|
||||||
$Host.UI.RawUI.ForegroundColor = "White"
|
$Host.UI.RawUI.ForegroundColor = "White"
|
||||||
# $ProgressPreference = "silentlyContinue"
|
|
||||||
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
||||||
$DISM = "{0}\DISM.exe" -f $Env:DISMRoot
|
$DISM = "{0}\DISM.exe" -f $Env:DISMRoot
|
||||||
|
|
||||||
|
|
@ -40,8 +40,8 @@ function Abort {
|
||||||
}
|
}
|
||||||
function MakeClean {
|
function MakeClean {
|
||||||
$Folders = @(
|
$Folders = @(
|
||||||
"$Root\Mount",
|
"$Build\Mount",
|
||||||
"$Root\PEFiles")
|
"$Build\PEFiles")
|
||||||
$Clean = $false
|
$Clean = $false
|
||||||
foreach ($f in $Folders) {
|
foreach ($f in $Folders) {
|
||||||
if (Test-Path $f) {
|
if (Test-Path $f) {
|
||||||
|
|
@ -185,17 +185,17 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Start-Process -FilePath "$HostSystem32\msiexec.exe" -ArgumentList $ArgumentList -Wait
|
Start-Process -FilePath "$HostSystem32\msiexec.exe" -ArgumentList $ArgumentList -Wait
|
||||||
$SevenZip = "$Temp\7zi\Files\7-Zip\7z.exe"
|
$SevenZip = "$Temp\7zi\Files\7-Zip\7z.exe"
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\7z-extra.7z", "-o$Root\WK\amd64\7-Zip",
|
"e", "$Temp\7z-extra.7z", "-o$Build\bin\amd64\7-Zip",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"x64\7za.exe", "*.txt")
|
"x64\7za.exe", "*.txt")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\7z-extra.7z", "-o$Root\WK\x86\7-Zip",
|
"e", "$Temp\7z-extra.7z", "-o$Build\bin\x86\7-Zip",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"7za.exe", "*.txt")
|
"7za.exe", "*.txt")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\7z*" -Recurse
|
Remove-Item "$Temp\7z*" -Recurse
|
||||||
$SevenZip = "$Root\WK\x86\7-Zip\7za.exe"
|
$SevenZip = "$Build\bin\x86\7-Zip\7za.exe"
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||||
|
|
@ -205,11 +205,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: BlueScreenView"
|
Write-Host "Extracting: BlueScreenView"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\bluescreenview64.zip", "-o$Root\WK\amd64\BlueScreenView",
|
"x", "$Temp\bluescreenview64.zip", "-o$Build\bin\amd64\BlueScreenView",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\bluescreenview32.zip", "-o$Root\WK\x86\BlueScreenView",
|
"x", "$Temp\bluescreenview32.zip", "-o$Build\bin\x86\BlueScreenView",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\bluescreenview*"
|
Remove-Item "$Temp\bluescreenview*"
|
||||||
|
|
@ -222,19 +222,19 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: ConEmu"
|
Write-Host "Extracting: ConEmu"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\ConEmuPack.7z", "-o$Root\WK\amd64\ConEmu",
|
"x", "$Temp\ConEmuPack.7z", "-o$Build\bin\amd64\ConEmu",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Root\WK\amd64\ConEmu\ConEmu.exe"
|
Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.exe"
|
||||||
Remove-Item "$Root\WK\amd64\ConEmu\ConEmu.map"
|
Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.map"
|
||||||
Move-Item "$Root\WK\amd64\ConEmu\ConEmu64.exe" "$Root\WK\amd64\ConEmu\ConEmu.exe" -Force
|
Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.exe" "$Build\bin\amd64\ConEmu\ConEmu.exe" -Force
|
||||||
Move-Item "$Root\WK\amd64\ConEmu\ConEmu64.map" "$Root\WK\amd64\ConEmu\ConEmu.map" -Force
|
Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.map" "$Build\bin\amd64\ConEmu\ConEmu.map" -Force
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\ConEmuPack.7z", "-o$Root\WK\x86\ConEmu",
|
"x", "$Temp\ConEmuPack.7z", "-o$Build\bin\x86\ConEmu",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Root\WK\x86\ConEmu\ConEmu64.exe"
|
Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.exe"
|
||||||
Remove-Item "$Root\WK\x86\ConEmu\ConEmu64.map"
|
Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.map"
|
||||||
Remove-Item "$Temp\ConEmuPack*"
|
Remove-Item "$Temp\ConEmuPack*"
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
|
|
@ -245,12 +245,12 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: FastCopy"
|
Write-Host "Extracting: FastCopy"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\fastcopy64.zip", "-o$Root\WK\amd64\FastCopy",
|
"x", "$Temp\fastcopy64.zip", "-o$Build\bin\amd64\FastCopy",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"-x!setup.exe", "-x!*.dll")
|
"-x!setup.exe", "-x!*.dll")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\fastcopy32.zip", "-o$Root\WK\x86\FastCopy",
|
"e", "$Temp\fastcopy32.zip", "-o$Build\bin\x86\FastCopy",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"-x!setup.exe", "-x!*.dll")
|
"-x!setup.exe", "-x!*.dll")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
|
|
@ -264,12 +264,12 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: Killer Network Driver"
|
Write-Host "Extracting: Killer Network Driver"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\killerinf.zip", "-o$Root\Drivers\amd64\Killer",
|
"e", "$Temp\killerinf.zip", "-o$Build\Drivers\amd64\Killer",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"Production\Windows10-x64\Eth\*")
|
"Production\Windows10-x64\Eth\*")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\killerinf.zip", "-o$Root\Drivers\x86\Killer",
|
"e", "$Temp\killerinf.zip", "-o$Build\Drivers\x86\Killer",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"Production\Windows10-x86\Eth\*")
|
"Production\Windows10-x86\Eth\*")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
|
|
@ -283,16 +283,16 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: HWiNFO"
|
Write-Host "Extracting: HWiNFO"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\hwinfo64.zip", "-o$Root\WK\amd64\HWiNFO",
|
"e", "$Temp\hwinfo64.zip", "-o$Build\bin\amd64\HWiNFO",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO64.exe")
|
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO64.exe")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\hwinfo32.zip", "-o$Root\WK\x86\HWiNFO",
|
"e", "$Temp\hwinfo32.zip", "-o$Build\bin\x86\HWiNFO",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO32.exe")
|
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO32.exe")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\hwinfo*"
|
Remove-Item "$Temp\hwinfo*"
|
||||||
Move-Item "$Root\WK\amd64\HWiNFO\HWiNFO64.exe" "$Root\WK\amd64\HWiNFO\HWiNFO.exe" -Force
|
Move-Item "$Build\bin\amd64\HWiNFO\HWiNFO64.exe" "$Build\bin\amd64\HWiNFO\HWiNFO.exe" -Force
|
||||||
Move-Item "$Root\WK\x86\HWiNFO\HWiNFO32.exe" "$Root\WK\x86\HWiNFO\HWiNFO.exe" -Force
|
Move-Item "$Build\bin\x86\HWiNFO\HWiNFO32.exe" "$Build\bin\x86\HWiNFO\HWiNFO.exe" -Force
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||||
|
|
@ -302,16 +302,16 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: Notepad++"
|
Write-Host "Extracting: Notepad++"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\npp_amd64.7z", "-o$Root\WK\amd64\NotepadPlusPlus",
|
"x", "$Temp\npp_amd64.7z", "-o$Build\bin\amd64\NotepadPlusPlus",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\npp_x86.7z", "-o$Root\WK\x86\NotepadPlusPlus",
|
"x", "$Temp\npp_x86.7z", "-o$Build\bin\x86\NotepadPlusPlus",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\npp*"
|
Remove-Item "$Temp\npp*"
|
||||||
Move-Item "$Root\WK\amd64\NotepadPlusPlus\notepad++.exe" "$Root\WK\amd64\NotepadPlusPlus\notepadplusplus.exe" -Force
|
Move-Item "$Build\bin\amd64\NotepadPlusPlus\notepad++.exe" "$Build\bin\amd64\NotepadPlusPlus\notepadplusplus.exe" -Force
|
||||||
Move-Item "$Root\WK\x86\NotepadPlusPlus\notepad++.exe" "$Root\WK\x86\NotepadPlusPlus\notepadplusplus.exe" -Force
|
Move-Item "$Build\bin\x86\NotepadPlusPlus\notepad++.exe" "$Build\bin\x86\NotepadPlusPlus\notepadplusplus.exe" -Force
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||||
|
|
@ -321,13 +321,13 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: NT Password Editor"
|
Write-Host "Extracting: NT Password Editor"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\ntpwed.zip", ('-o"{0}\WK\amd64\NT Password Editor"' -f $Root),
|
"e", "$Temp\ntpwed.zip", ('-o"{0}\bin\amd64\NT Password Editor"' -f $Build),
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"ntpwedit64.exe", "*.txt")
|
"ntpwedit64.exe", "*.txt")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Move-Item "$Root\WK\amd64\NT Password Editor\ntpwedit64.exe" "$Root\WK\amd64\NT Password Editor\ntpwedit.exe" -Force
|
Move-Item "$Build\bin\amd64\NT Password Editor\ntpwedit64.exe" "$Build\bin\amd64\NT Password Editor\ntpwedit.exe" -Force
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"e", "$Temp\ntpwed.zip", ('-o"{0}\WK\x86\NT Password Editor"' -f $Root),
|
"e", "$Temp\ntpwed.zip", ('-o"{0}\bin\x86\NT Password Editor"' -f $Build),
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||||
"ntpwedit.exe", "*.txt")
|
"ntpwedit.exe", "*.txt")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
|
|
@ -341,21 +341,21 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: PhotoRec / TestDisk"
|
Write-Host "Extracting: PhotoRec / TestDisk"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\testdisk64.zip", "-o$Root\WK\amd64\TestDisk",
|
"x", "$Temp\testdisk64.zip", "-o$Build\bin\amd64\TestDisk",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
# Remove destination since Move-Item -Force can't handle this recursive merge
|
# Remove destination since Move-Item -Force can't handle this recursive merge
|
||||||
Remove-Item "$Root\WK\amd64\TestDisk" -Recurse -Force
|
Remove-Item "$Build\bin\amd64\TestDisk" -Recurse -Force 2>&1 | Out-Null
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Move-Item "$Root\WK\amd64\TestDisk\testdisk-7.1-WIP\*" "$Root\WK\amd64\TestDisk" -Force
|
Move-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\amd64\TestDisk" -Force
|
||||||
Remove-Item "$Root\WK\amd64\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
Remove-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\testdisk32.zip", "-o$Root\WK\x86\TestDisk",
|
"x", "$Temp\testdisk32.zip", "-o$Build\bin\x86\TestDisk",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
# Remove destination since Move-Item -Force can't handle this recursive merge
|
# Remove destination since Move-Item -Force can't handle this recursive merge
|
||||||
Remove-Item "$Root\WK\x86\TestDisk" -Recurse -Force
|
Remove-Item "$Build\bin\x86\TestDisk" -Recurse -Force 2>&1 | Out-Null
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Move-Item "$Root\WK\x86\TestDisk\testdisk-7.1-WIP\*" "$Root\WK\x86\TestDisk" -Force
|
Move-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\x86\TestDisk" -Force
|
||||||
Remove-Item "$Root\WK\x86\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
Remove-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
||||||
Remove-Item "$Temp\testdisk*"
|
Remove-Item "$Temp\testdisk*"
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
|
|
@ -366,11 +366,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: Prime95"
|
Write-Host "Extracting: Prime95"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\prime95_64.zip", "-o$Root\WK\amd64\Prime95",
|
"x", "$Temp\prime95_64.zip", "-o$Build\bin\amd64\Prime95",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\prime95_32.zip", "-o$Root\WK\x86\Prime95",
|
"x", "$Temp\prime95_32.zip", "-o$Build\bin\x86\Prime95",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\prime95*"
|
Remove-Item "$Temp\prime95*"
|
||||||
|
|
@ -382,11 +382,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
# ProduKey
|
# ProduKey
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\produkey64.zip", "-o$Root\WK\amd64\ProduKey",
|
"x", "$Temp\produkey64.zip", "-o$Build\bin\amd64\ProduKey",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\produkey32.zip", "-o$Root\WK\x86\ProduKey",
|
"x", "$Temp\produkey32.zip", "-o$Build\bin\x86\ProduKey",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\produkey*"
|
Remove-Item "$Temp\produkey*"
|
||||||
|
|
@ -399,11 +399,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: Python (x64)"
|
Write-Host "Extracting: Python (x64)"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\python64.zip", "-o$Root\WK\amd64\python",
|
"x", "$Temp\python64.zip", "-o$Build\bin\amd64\python",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\psutil64.whl", "-o$Root\WK\amd64\python",
|
"x", "$Temp\psutil64.whl", "-o$Build\bin\amd64\python",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
|
|
||||||
|
|
@ -416,11 +416,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: Python (x32)"
|
Write-Host "Extracting: Python (x32)"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\python32.zip", "-o$Root\WK\x86\python",
|
"x", "$Temp\python32.zip", "-o$Build\bin\x86\python",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\psutil32.whl", "-o$Root\WK\x86\python",
|
"x", "$Temp\psutil32.whl", "-o$Build\bin\x86\python",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
|
|
||||||
|
|
@ -435,11 +435,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Write-Host "Extracting: Q-Dir"
|
Write-Host "Extracting: Q-Dir"
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\qdir64.zip", "-o$Root\WK\amd64",
|
"x", "$Temp\qdir64.zip", "-o$Build\bin\amd64",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\qdir32.zip", "-o$Root\WK\x86",
|
"x", "$Temp\qdir32.zip", "-o$Build\bin\x86",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\qdir*"
|
Remove-Item "$Temp\qdir*"
|
||||||
|
|
@ -451,11 +451,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
# wimlib-imagex
|
# wimlib-imagex
|
||||||
try {
|
try {
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\wimlib64.zip", "-o$Root\WK\amd64\wimlib",
|
"x", "$Temp\wimlib64.zip", "-o$Build\bin\amd64\wimlib",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @(
|
$ArgumentList = @(
|
||||||
"x", "$Temp\wimlib32.zip", "-o$Root\WK\x86\wimlib",
|
"x", "$Temp\wimlib32.zip", "-o$Build\bin\x86\wimlib",
|
||||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
Remove-Item "$Temp\wimlib*"
|
Remove-Item "$Temp\wimlib*"
|
||||||
|
|
@ -467,9 +467,9 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
|
|
||||||
## Build ##
|
## Build ##
|
||||||
foreach ($Arch in @("amd64", "x86")) {
|
foreach ($Arch in @("amd64", "x86")) {
|
||||||
$Drivers = "$Root\Drivers\$Arch"
|
$Drivers = "$Build\Drivers\$Arch"
|
||||||
$Mount = "$Root\Mount"
|
$Mount = "$Build\Mount"
|
||||||
$PEFiles = "$Root\PEFiles\$Arch"
|
$PEFiles = "$Build\PEFiles\$Arch"
|
||||||
|
|
||||||
# Copy WinPE files
|
# Copy WinPE files
|
||||||
Write-Host "Copying files..."
|
Write-Host "Copying files..."
|
||||||
|
|
@ -520,8 +520,8 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
|
|
||||||
# Add tools
|
# Add tools
|
||||||
Write-Host "Copying tools..."
|
Write-Host "Copying tools..."
|
||||||
Copy-Item -Path "$Root\WK\$Arch" -Destination "$Mount\.bin" -Recurse -Force
|
Copy-Item -Path "$Build\bin\$Arch" -Destination "$Mount\.bin" -Recurse -Force
|
||||||
Copy-Item -Path "$Root\WK\_include\*" -Destination "$Mount\.bin" -Recurse -Force
|
Copy-Item -Path "$Root\.pe_items\_include\*" -Destination "$Mount\.bin" -Recurse -Force
|
||||||
if ($Arch -eq "amd64") {
|
if ($Arch -eq "amd64") {
|
||||||
$DestIni = "$Mount\.bin\HWiNFO\HWiNFO64.INI"
|
$DestIni = "$Mount\.bin\HWiNFO\HWiNFO64.INI"
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -529,11 +529,11 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
}
|
}
|
||||||
Move-Item -Path "$Mount\.bin\HWiNFO\HWiNFO.INI" -Destination $DestIni -Force
|
Move-Item -Path "$Mount\.bin\HWiNFO\HWiNFO.INI" -Destination $DestIni -Force
|
||||||
Copy-Item -Path "$Root\WinPE.jpg" -Destination "$Mount\.bin\ConEmu\ConEmu.jpg" -Recurse -Force
|
Copy-Item -Path "$Root\WinPE.jpg" -Destination "$Mount\.bin\ConEmu\ConEmu.jpg" -Recurse -Force
|
||||||
Copy-Item -Path "$Root\Scripts" -Destination "$Mount\.bin\Scripts" -Recurse -Force
|
Copy-Item -Path "$Bin\Scripts" -Destination "$Mount\.bin\Scripts" -Recurse -Force
|
||||||
|
|
||||||
# Add System32 items
|
# Add System32 items
|
||||||
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
||||||
Copy-Item -Path "$Root\System32\*" -Destination "$Mount\Windows\System32" -Recurse -Force
|
Copy-Item -Path "$Root\.pe_items\System32\*" -Destination "$Mount\Windows\System32" -Recurse -Force
|
||||||
$ArgumentList = @("/f", "$Mount\Windows\System32\winpe.jpg", "/a")
|
$ArgumentList = @("/f", "$Mount\Windows\System32\winpe.jpg", "/a")
|
||||||
Start-Process -FilePath "$HostSystem32\takeown.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath "$HostSystem32\takeown.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
$ArgumentList = @("$Mount\Windows\System32\winpe.jpg", "/grant", "Administrators:F")
|
$ArgumentList = @("$Mount\Windows\System32\winpe.jpg", "/grant", "Administrators:F")
|
||||||
|
|
@ -583,10 +583,15 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
Dismount-WindowsImage -Path $Mount -Save
|
Dismount-WindowsImage -Path $Mount -Save
|
||||||
|
|
||||||
# Create ISO
|
# Create ISO
|
||||||
$ArgumentList = @("/iso", $PEFiles, "$Root\wk-winpe-$Date-$Arch.iso")
|
New-Item -Type Directory "$Root\OUT_PE" 2>&1 | Out-Null
|
||||||
|
$ArgumentList = @("/iso", $PEFiles, "$Root\OUT_PE\wk-winpe-$Date-$Arch.iso")
|
||||||
$Cmd = "{0}\MakeWinPEMedia.cmd" -f $Env:WinPERoot
|
$Cmd = "{0}\MakeWinPEMedia.cmd" -f $Env:WinPERoot
|
||||||
Start-Process -FilePath $Cmd -ArgumentList $ArgumentList -NoNewWindow -Wait
|
Start-Process -FilePath $Cmd -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## Cleanup ##
|
||||||
|
Remove-Item -Path "$Build\Mount" -Recurse -Force
|
||||||
|
Remove-Item -Path "$Build\PEFiles" -Recurse -Force
|
||||||
|
|
||||||
## Done ##
|
## Done ##
|
||||||
Pop-Location
|
Pop-Location
|
||||||
|
|
|
||||||
|
|
@ -1,153 +1,153 @@
|
||||||
# Wizard Kit PE: Functions - Backup
|
# Wizard Kit PE: Functions - Backup
|
||||||
|
|
||||||
from functions.disk import *
|
from functions.disk import *
|
||||||
|
|
||||||
# Regex
|
# Regex
|
||||||
REGEX_BAD_PATH_NAMES = re.compile(
|
REGEX_BAD_PATH_NAMES = re.compile(
|
||||||
r'([<>:"/\\\|\?\*]'
|
r'([<>:"/\\\|\?\*]'
|
||||||
r'|^(CON|PRN|AUX|NUL|COM\d*|LPT\d*)$)'
|
r'|^(CON|PRN|AUX|NUL|COM\d*|LPT\d*)$)'
|
||||||
r'|^\s+'
|
r'|^\s+'
|
||||||
r'|[\s\.]+$',
|
r'|[\s\.]+$',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
|
|
||||||
def backup_partition(disk, partition):
|
def backup_partition(disk, partition):
|
||||||
if par['Image Exists'] or par['Number'] in disk['Bad Partitions']:
|
if par['Image Exists'] or par['Number'] in disk['Bad Partitions']:
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['wimlib-imagex'],
|
global_vars['Tools']['wimlib-imagex'],
|
||||||
'capture'
|
'capture'
|
||||||
'{}:\\'.format(par['Letter']),
|
'{}:\\'.format(par['Letter']),
|
||||||
par['Image Path'],
|
par['Image Path'],
|
||||||
par['Image Name'], # Image name
|
par['Image Name'], # Image name
|
||||||
par['Image Name'], # Image description
|
par['Image Name'], # Image description
|
||||||
' --compress=none',
|
' --compress=none',
|
||||||
]
|
]
|
||||||
dest_dir = re.sub(r'(.*)\\.*$', r'\1', par['Image Path'], re.IGNORECASE)
|
dest_dir = re.sub(r'(.*)\\.*$', r'\1', par['Image Path'], re.IGNORECASE)
|
||||||
os.makedirs(dest_dir, exist_ok=True)
|
os.makedirs(dest_dir, exist_ok=True)
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def fix_path(path):
|
def fix_path(path):
|
||||||
return REGEX_BAD_PATH_NAMES.sub('_', path)
|
return REGEX_BAD_PATH_NAMES.sub('_', path)
|
||||||
|
|
||||||
def prep_disk_for_backup(destination, disk, ticket_number):
|
def prep_disk_for_backup(destination, disk, ticket_number):
|
||||||
disk['Clobber Risk'] = []
|
disk['Clobber Risk'] = []
|
||||||
width = len(str(len(disk['Partitions'])))
|
width = len(str(len(disk['Partitions'])))
|
||||||
|
|
||||||
# Get partition totals
|
# Get partition totals
|
||||||
disk['Bad Partitions'] = [par['Number'] for par in disk['Partitions']
|
disk['Bad Partitions'] = [par['Number'] for par in disk['Partitions']
|
||||||
if is_bad_partition(partition)]
|
if is_bad_partition(partition)]
|
||||||
num_valid_partitions = len(disk['Partitions']) - len(disk['Bad Partitions'])
|
num_valid_partitions = len(disk['Partitions']) - len(disk['Bad Partitions'])
|
||||||
disk['Valid Partitions'] = num_valid_partitions
|
disk['Valid Partitions'] = num_valid_partitions
|
||||||
if disk['Valid Partitions'] <= 0:
|
if disk['Valid Partitions'] <= 0:
|
||||||
print_error('ERROR: No partitions can be backed up for this disk')
|
print_error('ERROR: No partitions can be backed up for this disk')
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# Prep partitions
|
# Prep partitions
|
||||||
for par in disk['Partitions']:
|
for par in disk['Partitions']:
|
||||||
display = 'Partition {num:>{width}}:\t{size} {fs}'.format(
|
display = 'Partition {num:>{width}}:\t{size} {fs}'.format(
|
||||||
num = par['Number'],
|
num = par['Number'],
|
||||||
width = width,
|
width = width,
|
||||||
size = par['Size'],
|
size = par['Size'],
|
||||||
fs = par['FileSystem'])
|
fs = par['FileSystem'])
|
||||||
|
|
||||||
if par['Number'] in disk['Bad Partitions']:
|
if par['Number'] in disk['Bad Partitions']:
|
||||||
# Set display string using partition description & OS type
|
# Set display string using partition description & OS type
|
||||||
display = ' * {display}\t\t{q}{name}{q}\t{desc} ({os})'.format(
|
display = ' * {display}\t\t{q}{name}{q}\t{desc} ({os})'.format(
|
||||||
display = display,
|
display = display,
|
||||||
q = '"' if par['Name'] != '' else '',
|
q = '"' if par['Name'] != '' else '',
|
||||||
name = par['Name'],
|
name = par['Name'],
|
||||||
desc = par['Description'],
|
desc = par['Description'],
|
||||||
os = par['OS'])
|
os = par['OS'])
|
||||||
display = '{YELLOW}{display}{CLEAR}'.format(
|
display = '{YELLOW}{display}{CLEAR}'.format(
|
||||||
display=display, **COLORS)
|
display=display, **COLORS)
|
||||||
else:
|
else:
|
||||||
# Update info for WIM capturing
|
# Update info for WIM capturing
|
||||||
par['Image Name'] = par['Name'] if par['Name'] else 'Unknown'
|
par['Image Name'] = par['Name'] if par['Name'] else 'Unknown'
|
||||||
if 'IP' in destination:
|
if 'IP' in destination:
|
||||||
par['Image Path'] = r'\\{}\{}\{}'.format(
|
par['Image Path'] = r'\\{}\{}\{}'.format(
|
||||||
destination['IP'], destination['Share'], ticket_number)
|
destination['IP'], destination['Share'], ticket_number)
|
||||||
else:
|
else:
|
||||||
par['Image Path'] = r'{}:\{}'.format(
|
par['Image Path'] = r'{}:\{}'.format(
|
||||||
ticket_number, destination['Letter'])
|
ticket_number, destination['Letter'])
|
||||||
par['Image Path'] += r'\{}_{}.wim'.format(
|
par['Image Path'] += r'\{}_{}.wim'.format(
|
||||||
par['Number'], par['Image Name'])
|
par['Number'], par['Image Name'])
|
||||||
par['Image Path'] = fix_path(par['Image Path'])
|
par['Image Path'] = fix_path(par['Image Path'])
|
||||||
|
|
||||||
# Check for existing backups
|
# Check for existing backups
|
||||||
par['Image Exists'] = os.path.exists(par['Image Path'])
|
par['Image Exists'] = os.path.exists(par['Image Path'])
|
||||||
if par['Image Exists']:
|
if par['Image Exists']:
|
||||||
disk['Clobber Risk'].append(par['Number'])
|
disk['Clobber Risk'].append(par['Number'])
|
||||||
display = '{} + {}'.format(COLORS['BLUE'], display)
|
display = '{} + {}'.format(COLORS['BLUE'], display)
|
||||||
else:
|
else:
|
||||||
display = '{} {}'.format(COLORS['CLEAR'], display)
|
display = '{} {}'.format(COLORS['CLEAR'], display)
|
||||||
|
|
||||||
# Append rest of Display String for valid/clobber partitions
|
# Append rest of Display String for valid/clobber partitions
|
||||||
display += ' (Used: {used})\t{q}{name}{q}{CLEAR}'.format(
|
display += ' (Used: {used})\t{q}{name}{q}{CLEAR}'.format(
|
||||||
used = par['Used Space'],
|
used = par['Used Space'],
|
||||||
q = '"' if par['Name'] != '' else '',
|
q = '"' if par['Name'] != '' else '',
|
||||||
name = par['Name'],
|
name = par['Name'],
|
||||||
**COLORS)
|
**COLORS)
|
||||||
# For all partitions
|
# For all partitions
|
||||||
par['Display String'] = display
|
par['Display String'] = display
|
||||||
|
|
||||||
# Set description for bad partitions
|
# Set description for bad partitions
|
||||||
warnings = '\n'
|
warnings = '\n'
|
||||||
if disk['Bad Partitions']:
|
if disk['Bad Partitions']:
|
||||||
warnings += '{} * Unsupported filesystem{}\n'.format(
|
warnings += '{} * Unsupported filesystem{}\n'.format(
|
||||||
COLORS['YELLOW'], COLORS['CLEAR'])
|
COLORS['YELLOW'], COLORS['CLEAR'])
|
||||||
if disk['Clobber Risk']:
|
if disk['Clobber Risk']:
|
||||||
warnings += '{} + Backup exists on {}{}\n'.format(
|
warnings += '{} + Backup exists on {}{}\n'.format(
|
||||||
COLORS['BLUE'], destination['Name'], COLORS['CLEAR'])
|
COLORS['BLUE'], destination['Name'], COLORS['CLEAR'])
|
||||||
if disk['Bad Partitions'] or disk['Clobber Risk']:
|
if disk['Bad Partitions'] or disk['Clobber Risk']:
|
||||||
warnings += '\n{}Marked partition(s) will NOT be backed up.{}\n'.format(
|
warnings += '\n{}Marked partition(s) will NOT be backed up.{}\n'.format(
|
||||||
COLORS['YELLOW'], COLORS['CLEAR'])
|
COLORS['YELLOW'], COLORS['CLEAR'])
|
||||||
disk['Backup Warnings'] = warnings
|
disk['Backup Warnings'] = warnings
|
||||||
|
|
||||||
def select_backup_destination(auto_select=True):
|
def select_backup_destination(auto_select=True):
|
||||||
# Build menu
|
# Build menu
|
||||||
destinations = [s for s in BACKUP_SERVERS if s['Mounted']]
|
destinations = [s for s in BACKUP_SERVERS if s['Mounted']]
|
||||||
actions = [
|
actions = [
|
||||||
{'Name': 'Main Menu', 'Letter': 'M'},
|
{'Name': 'Main Menu', 'Letter': 'M'},
|
||||||
]
|
]
|
||||||
|
|
||||||
# Size check
|
# Size check
|
||||||
for dest in destinations:
|
for dest in destinations:
|
||||||
if 'IP' in dest:
|
if 'IP' in dest:
|
||||||
dest['Usage'] = shutil.disk_usage(r'\\{IP}\{Share}'.format(**dest))
|
dest['Usage'] = shutil.disk_usage(r'\\{IP}\{Share}'.format(**dest))
|
||||||
else:
|
else:
|
||||||
dest['Usage'] = shutil.disk_usage('{}:\\'.format(dest['Letter']))
|
dest['Usage'] = shutil.disk_usage('{}:\\'.format(dest['Letter']))
|
||||||
dest['Free Space'] = human_readable_size(dest['Usage'].free)
|
dest['Free Space'] = human_readable_size(dest['Usage'].free)
|
||||||
dest['Display Name'] = '{Name} ({Free Space} available)'.format(**dest)
|
dest['Display Name'] = '{Name} ({Free Space} available)'.format(**dest)
|
||||||
|
|
||||||
# Bail
|
# Bail
|
||||||
if not destinations:
|
if not destinations:
|
||||||
print_warning('No backup destinations found.')
|
print_warning('No backup destinations found.')
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# Skip menu?
|
# Skip menu?
|
||||||
if len(destinations) == 1 and auto_select:
|
if len(destinations) == 1 and auto_select:
|
||||||
return destinations[0]
|
return destinations[0]
|
||||||
|
|
||||||
selection = menu_select(
|
selection = menu_select(
|
||||||
title = 'Where are we backing up to?',
|
title = 'Where are we backing up to?',
|
||||||
main_entries = destinations,
|
main_entries = destinations,
|
||||||
action_entries = actions)
|
action_entries = actions)
|
||||||
if selection == 'M':
|
if selection == 'M':
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
else:
|
else:
|
||||||
return destinations[int(selection)-1]
|
return destinations[int(selection)-1]
|
||||||
|
|
||||||
def verify_wim_backup(partition):
|
def verify_wim_backup(partition):
|
||||||
if not os.path.exists(partition['Image Path']):
|
if not os.path.exists(partition['Image Path']):
|
||||||
raise PathNotFoundError
|
raise PathNotFoundError
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['wimlib-imagex'],
|
global_vars['Tools']['wimlib-imagex'],
|
||||||
'verify',
|
'verify',
|
||||||
partition['Image Path'],
|
partition['Image Path'],
|
||||||
' --nocheck',
|
' --nocheck',
|
||||||
]
|
]
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
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,366 +1,366 @@
|
||||||
# Wizard Kit PE: Functions - Disk
|
# Wizard Kit PE: Functions - Disk
|
||||||
|
|
||||||
from functions.common import *
|
from functions.common import *
|
||||||
import partition_uids
|
import partition_uids
|
||||||
|
|
||||||
# Regex
|
# Regex
|
||||||
REGEX_BAD_PARTITION = re.compile(r'(RAW|Unknown)', re.IGNORECASE)
|
REGEX_BAD_PARTITION = re.compile(r'(RAW|Unknown)', re.IGNORECASE)
|
||||||
REGEX_DISK_GPT = re.compile(
|
REGEX_DISK_GPT = re.compile(
|
||||||
r'Disk ID: {[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+}',
|
r'Disk ID: {[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+}',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
REGEX_DISK_MBR = re.compile(r'Disk ID: [A-Z0-9]+', re.IGNORECASE)
|
REGEX_DISK_MBR = re.compile(r'Disk ID: [A-Z0-9]+', re.IGNORECASE)
|
||||||
REGEX_DISK_RAW = re.compile(r'Disk ID: 00000000', re.IGNORECASE)
|
REGEX_DISK_RAW = re.compile(r'Disk ID: 00000000', re.IGNORECASE)
|
||||||
|
|
||||||
def assign_volume_letters():
|
def assign_volume_letters():
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
for vol in get_volumes():
|
for vol in get_volumes():
|
||||||
script.write('select volume {}\n'.format(vol['Number']))
|
script.write('select volume {}\n'.format(vol['Number']))
|
||||||
script.write('assign\n')
|
script.write('assign\n')
|
||||||
|
|
||||||
# Remove current letters
|
# Remove current letters
|
||||||
remove_volume_letters()
|
remove_volume_letters()
|
||||||
|
|
||||||
# Run script
|
# Run script
|
||||||
try:
|
try:
|
||||||
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_boot_mode():
|
def get_boot_mode():
|
||||||
boot_mode = 'Legacy'
|
boot_mode = 'Legacy'
|
||||||
try:
|
try:
|
||||||
reg_key = winreg.OpenKey(
|
reg_key = winreg.OpenKey(
|
||||||
winreg.HKEY_LOCAL_MACHINE, r'System\CurrentControlSet\Control')
|
winreg.HKEY_LOCAL_MACHINE, r'System\CurrentControlSet\Control')
|
||||||
reg_value = winreg.QueryValueEx(reg_key, 'PEFirmwareType')[0]
|
reg_value = winreg.QueryValueEx(reg_key, 'PEFirmwareType')[0]
|
||||||
if reg_value == 2:
|
if reg_value == 2:
|
||||||
boot_mode = 'UEFI'
|
boot_mode = 'UEFI'
|
||||||
except:
|
except:
|
||||||
boot_mode = 'Unknown'
|
boot_mode = 'Unknown'
|
||||||
|
|
||||||
return boot_mode
|
return boot_mode
|
||||||
|
|
||||||
def get_disk_details(disk):
|
def get_disk_details(disk):
|
||||||
details = {}
|
details = {}
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
script.write('select disk {}\n'.format(disk['Number']))
|
script.write('select disk {}\n'.format(disk['Number']))
|
||||||
script.write('detail disk\n')
|
script.write('detail disk\n')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Run script
|
# Run script
|
||||||
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
output = output.stdout.decode().strip()
|
output = output.stdout.decode().strip()
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# Remove empty lines
|
# Remove empty lines
|
||||||
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
||||||
# Set disk name
|
# Set disk name
|
||||||
details['Name'] = tmp[4]
|
details['Name'] = tmp[4]
|
||||||
# Split each line on ':' skipping those without ':'
|
# Split each line on ':' skipping those without ':'
|
||||||
tmp = [s.split(':') for s in tmp if ':' in s]
|
tmp = [s.split(':') for s in tmp if ':' in s]
|
||||||
# Add key/value pairs to the details variable and return dict
|
# Add key/value pairs to the details variable and return dict
|
||||||
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
||||||
|
|
||||||
return details
|
return details
|
||||||
|
|
||||||
def get_disks():
|
def get_disks():
|
||||||
disks = []
|
disks = []
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
script.write('list disk\n')
|
script.write('list disk\n')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Run script
|
# Run script
|
||||||
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
output = output.stdout.decode().strip()
|
output = output.stdout.decode().strip()
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# Append disk numbers
|
# Append disk numbers
|
||||||
for tmp in re.findall(r'Disk (\d+)\s+\w+\s+(\d+\s+\w+)', output):
|
for tmp in re.findall(r'Disk (\d+)\s+\w+\s+(\d+\s+\w+)', output):
|
||||||
num = tmp[0]
|
num = tmp[0]
|
||||||
size = human_readable_size(tmp[1])
|
size = human_readable_size(tmp[1])
|
||||||
disks.append({'Number': num, 'Size': size})
|
disks.append({'Number': num, 'Size': size})
|
||||||
|
|
||||||
return disks
|
return disks
|
||||||
|
|
||||||
def get_partition_details(disk, partition):
|
def get_partition_details(disk, partition):
|
||||||
details = {}
|
details = {}
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
script.write('select disk {}\n'.format(disk['Number']))
|
script.write('select disk {}\n'.format(disk['Number']))
|
||||||
script.write('select partition {}\n'.format(partition['Number']))
|
script.write('select partition {}\n'.format(partition['Number']))
|
||||||
script.write('detail partition\n')
|
script.write('detail partition\n')
|
||||||
|
|
||||||
# Diskpart details
|
# Diskpart details
|
||||||
try:
|
try:
|
||||||
# Run script
|
# Run script
|
||||||
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
output = output.stdout.decode().strip()
|
output = output.stdout.decode().strip()
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# Get volume letter or RAW status
|
# Get volume letter or RAW status
|
||||||
tmp = re.search(r'Volume\s+\d+\s+(\w|RAW)\s+', output)
|
tmp = re.search(r'Volume\s+\d+\s+(\w|RAW)\s+', output)
|
||||||
if tmp:
|
if tmp:
|
||||||
if tmp.group(1).upper() == 'RAW':
|
if tmp.group(1).upper() == 'RAW':
|
||||||
details['FileSystem'] = RAW
|
details['FileSystem'] = RAW
|
||||||
else:
|
else:
|
||||||
details['Letter'] = tmp.group(1)
|
details['Letter'] = tmp.group(1)
|
||||||
# Remove empty lines from output
|
# Remove empty lines from output
|
||||||
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
||||||
# Split each line on ':' skipping those without ':'
|
# Split each line on ':' skipping those without ':'
|
||||||
tmp = [s.split(':') for s in tmp if ':' in s]
|
tmp = [s.split(':') for s in tmp if ':' in s]
|
||||||
# Add key/value pairs to the details variable and return dict
|
# Add key/value pairs to the details variable and return dict
|
||||||
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
||||||
|
|
||||||
# Get MBR type / GPT GUID for extra details on "Unknown" partitions
|
# Get MBR type / GPT GUID for extra details on "Unknown" partitions
|
||||||
guid = partition_uids.lookup_guid(details['Type'])
|
guid = partition_uids.lookup_guid(details['Type'])
|
||||||
if guid:
|
if guid:
|
||||||
details.update({
|
details.update({
|
||||||
'Description': guid.get('Description', ''),
|
'Description': guid.get('Description', ''),
|
||||||
'OS': guid.get('OS', '')})
|
'OS': guid.get('OS', '')})
|
||||||
|
|
||||||
if 'Letter' in details:
|
if 'Letter' in details:
|
||||||
# Disk usage
|
# Disk usage
|
||||||
tmp = shutil.disk_usage('{}:\\'.format(details['Letter']))
|
tmp = shutil.disk_usage('{}:\\'.format(details['Letter']))
|
||||||
details['Used Space'] = human_readable_size(tmp.used)
|
details['Used Space'] = human_readable_size(tmp.used)
|
||||||
|
|
||||||
# fsutil details
|
# fsutil details
|
||||||
cmd = [
|
cmd = [
|
||||||
'fsutil',
|
'fsutil',
|
||||||
'fsinfo',
|
'fsinfo',
|
||||||
'volumeinfo',
|
'volumeinfo',
|
||||||
'{}:'.format(details['Letter'])
|
'{}:'.format(details['Letter'])
|
||||||
]
|
]
|
||||||
try:
|
try:
|
||||||
output = run_program(cmd)
|
output = run_program(cmd)
|
||||||
output = output.stdout.decode().strip()
|
output = output.stdout.decode().strip()
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# Remove empty lines from output
|
# Remove empty lines from output
|
||||||
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
||||||
# Add "Feature" lines
|
# Add "Feature" lines
|
||||||
details['File System Features'] = [s.strip() for s in tmp
|
details['File System Features'] = [s.strip() for s in tmp
|
||||||
if ':' not in s]
|
if ':' not in s]
|
||||||
# Split each line on ':' skipping those without ':'
|
# Split each line on ':' skipping those without ':'
|
||||||
tmp = [s.split(':') for s in tmp if ':' in s]
|
tmp = [s.split(':') for s in tmp if ':' in s]
|
||||||
# Add key/value pairs to the details variable and return dict
|
# Add key/value pairs to the details variable and return dict
|
||||||
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
||||||
|
|
||||||
# Set Volume Name
|
# Set Volume Name
|
||||||
details['Name'] = details.get('Volume Name', '')
|
details['Name'] = details.get('Volume Name', '')
|
||||||
|
|
||||||
# Set FileSystem Type
|
# Set FileSystem Type
|
||||||
if details.get('FileSystem', '') != 'RAW':
|
if details.get('FileSystem', '') != 'RAW':
|
||||||
details['FileSystem'] = details.get('File System Name', 'Unknown')
|
details['FileSystem'] = details.get('File System Name', 'Unknown')
|
||||||
|
|
||||||
return details
|
return details
|
||||||
|
|
||||||
def get_partitions(disk):
|
def get_partitions(disk):
|
||||||
partitions = []
|
partitions = []
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
script.write('select disk {}\n'.format(disk['Number']))
|
script.write('select disk {}\n'.format(disk['Number']))
|
||||||
script.write('list partition\n')
|
script.write('list partition\n')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Run script
|
# Run script
|
||||||
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
output = output.stdout.decode().strip()
|
output = output.stdout.decode().strip()
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# Append partition numbers
|
# Append partition numbers
|
||||||
regex = r'Partition\s+(\d+)\s+\w+\s+(\d+\s+\w+)\s+'
|
regex = r'Partition\s+(\d+)\s+\w+\s+(\d+\s+\w+)\s+'
|
||||||
for tmp in re.findall(regex, output, re.IGNORECASE):
|
for tmp in re.findall(regex, output, re.IGNORECASE):
|
||||||
num = tmp[0]
|
num = tmp[0]
|
||||||
size = human_readable_size(tmp[1])
|
size = human_readable_size(tmp[1])
|
||||||
partitions.append({'Number': num, 'Size': size})
|
partitions.append({'Number': num, 'Size': size})
|
||||||
|
|
||||||
return partitions
|
return partitions
|
||||||
|
|
||||||
def get_table_type(disk):
|
def get_table_type(disk):
|
||||||
part_type = 'Unknown'
|
part_type = 'Unknown'
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
script.write('select disk {}\n'.format(disk['Number']))
|
script.write('select disk {}\n'.format(disk['Number']))
|
||||||
script.write('uniqueid disk\n')
|
script.write('uniqueid disk\n')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
output = output.stdout.decode().strip()
|
output = output.stdout.decode().strip()
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if REGEX_DISK_GPT.search(output):
|
if REGEX_DISK_GPT.search(output):
|
||||||
part_type = 'GPT'
|
part_type = 'GPT'
|
||||||
elif REGEX_DISK_MBR.search(output):
|
elif REGEX_DISK_MBR.search(output):
|
||||||
part_type = 'MBR'
|
part_type = 'MBR'
|
||||||
elif REGEX_DISK_RAW.search(output):
|
elif REGEX_DISK_RAW.search(output):
|
||||||
part_type = 'RAW'
|
part_type = 'RAW'
|
||||||
else:
|
else:
|
||||||
part_type = 'Unknown
|
part_type = 'Unknown
|
||||||
|
|
||||||
return part_type
|
return part_type
|
||||||
|
|
||||||
def get_volumes():
|
def get_volumes():
|
||||||
vols = []
|
vols = []
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
script.write('list volume\n')
|
script.write('list volume\n')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Run script
|
# Run script
|
||||||
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
output = run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
output = output.stdout.decode().strip()
|
output = output.stdout.decode().strip()
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# Append volume numbers
|
# Append volume numbers
|
||||||
for tmp in re.findall(r'Volume (\d+)\s+([A-Za-z]?)\s+', output):
|
for tmp in re.findall(r'Volume (\d+)\s+([A-Za-z]?)\s+', output):
|
||||||
vols.append({'Number': tmp[0], 'Letter': tmp[1]})
|
vols.append({'Number': tmp[0], 'Letter': tmp[1]})
|
||||||
|
|
||||||
return vols
|
return vols
|
||||||
|
|
||||||
def is_bad_partition(par):
|
def is_bad_partition(par):
|
||||||
return 'Letter' not in par or REGEX_BAD_PARTITION.search(par['FileSystem'])
|
return 'Letter' not in par or REGEX_BAD_PARTITION.search(par['FileSystem'])
|
||||||
|
|
||||||
def prep_disk_for_formatting(disk=None):
|
def prep_disk_for_formatting(disk=None):
|
||||||
disk['Format Warnings'] = '\n'
|
disk['Format Warnings'] = '\n'
|
||||||
width = len(str(len(disk['Partitions'])))
|
width = len(str(len(disk['Partitions'])))
|
||||||
|
|
||||||
# Bail early
|
# Bail early
|
||||||
if disk is None:
|
if disk is None:
|
||||||
raise Exception('Disk not provided.')
|
raise Exception('Disk not provided.')
|
||||||
|
|
||||||
# Set boot method and partition table type
|
# Set boot method and partition table type
|
||||||
disk['Use GPT'] = True
|
disk['Use GPT'] = True
|
||||||
if (get_boot_mode() == 'UEFI'):
|
if (get_boot_mode() == 'UEFI'):
|
||||||
if (not ask("Setup Windows to use UEFI booting?")):
|
if (not ask("Setup Windows to use UEFI booting?")):
|
||||||
disk['Use GPT'] = False
|
disk['Use GPT'] = False
|
||||||
else:
|
else:
|
||||||
if (ask("Setup Windows to use BIOS/Legacy booting?")):
|
if (ask("Setup Windows to use BIOS/Legacy booting?")):
|
||||||
disk['Use GPT'] = False
|
disk['Use GPT'] = False
|
||||||
|
|
||||||
# Set Display and Warning Strings
|
# Set Display and Warning Strings
|
||||||
if len(disk['Partitions']) == 0:
|
if len(disk['Partitions']) == 0:
|
||||||
disk['Format Warnings'] += 'No partitions found\n'
|
disk['Format Warnings'] += 'No partitions found\n'
|
||||||
for partition in disk['Partitions']:
|
for partition in disk['Partitions']:
|
||||||
display = ' Partition {num:>{width}}:\t{size} {fs}'.format(
|
display = ' Partition {num:>{width}}:\t{size} {fs}'.format(
|
||||||
num = partition['Number'],
|
num = partition['Number'],
|
||||||
width = width,
|
width = width,
|
||||||
size = partition['Size'],
|
size = partition['Size'],
|
||||||
fs = partition['FileSystem'])
|
fs = partition['FileSystem'])
|
||||||
|
|
||||||
if is_bad_partition(partition):
|
if is_bad_partition(partition):
|
||||||
# Set display string using partition description & OS type
|
# Set display string using partition description & OS type
|
||||||
display += '\t\t{q}{name}{q}\t{desc} ({os})'.format(
|
display += '\t\t{q}{name}{q}\t{desc} ({os})'.format(
|
||||||
display = display,
|
display = display,
|
||||||
q = '"' if partition['Name'] != '' else '',
|
q = '"' if partition['Name'] != '' else '',
|
||||||
name = partition['Name'],
|
name = partition['Name'],
|
||||||
desc = partition['Description'],
|
desc = partition['Description'],
|
||||||
os = partition['OS'])
|
os = partition['OS'])
|
||||||
else:
|
else:
|
||||||
# List space used instead of partition description & OS type
|
# List space used instead of partition description & OS type
|
||||||
display += ' (Used: {used})\t{q}{name}{q}'.format(
|
display += ' (Used: {used})\t{q}{name}{q}'.format(
|
||||||
used = partition['Used Space'],
|
used = partition['Used Space'],
|
||||||
q = '"' if partition['Name'] != '' else '',
|
q = '"' if partition['Name'] != '' else '',
|
||||||
name = partition['Name'])
|
name = partition['Name'])
|
||||||
# For all partitions
|
# For all partitions
|
||||||
partition['Display String'] = display
|
partition['Display String'] = display
|
||||||
|
|
||||||
def reassign_volume_letter(letter, new_letter='I'):
|
def reassign_volume_letter(letter, new_letter='I'):
|
||||||
if not letter:
|
if not letter:
|
||||||
# Ignore
|
# Ignore
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
# Run script
|
# Run script
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
script.write('select volume {}\n'.format(letter))
|
script.write('select volume {}\n'.format(letter))
|
||||||
script.write('remove noerr\n')
|
script.write('remove noerr\n')
|
||||||
script.write('assign letter={}\n'.format(new_letter))
|
script.write('assign letter={}\n'.format(new_letter))
|
||||||
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
return new_letter
|
return new_letter
|
||||||
|
|
||||||
def remove_volume_letters(keep=None):
|
def remove_volume_letters(keep=None):
|
||||||
if not keep:
|
if not keep:
|
||||||
keep = ''
|
keep = ''
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
for vol in get_volumes():
|
for vol in get_volumes():
|
||||||
if vol['Letter'].upper() != keep.upper():
|
if vol['Letter'].upper() != keep.upper():
|
||||||
script.write('select volume {}\n'.format(vol['Number']))
|
script.write('select volume {}\n'.format(vol['Number']))
|
||||||
script.write('remove noerr\n')
|
script.write('remove noerr\n')
|
||||||
|
|
||||||
# Run script
|
# Run script
|
||||||
try:
|
try:
|
||||||
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def scan_disks():
|
def scan_disks():
|
||||||
"""Get details about the attached disks"""
|
"""Get details about the attached disks"""
|
||||||
disks = get_disks()
|
disks = get_disks()
|
||||||
|
|
||||||
# Get disk details
|
# Get disk details
|
||||||
for disk in disks:
|
for disk in disks:
|
||||||
# Get partition style
|
# Get partition style
|
||||||
disk['Table'] = get_table_type(disk)
|
disk['Table'] = get_table_type(disk)
|
||||||
|
|
||||||
# Get disk name/model and physical details
|
# Get disk name/model and physical details
|
||||||
disk.update(get_disk_details(disk))
|
disk.update(get_disk_details(disk))
|
||||||
|
|
||||||
# Get partition info for disk
|
# Get partition info for disk
|
||||||
disk['Partitions'] = get_partitions(disk)
|
disk['Partitions'] = get_partitions(disk)
|
||||||
|
|
||||||
for partition in disk['Partitions']:
|
for partition in disk['Partitions']:
|
||||||
# Get partition details
|
# Get partition details
|
||||||
partition.update(get_partition_details(disk, partition))
|
partition.update(get_partition_details(disk, partition))
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
return disks
|
return disks
|
||||||
|
|
||||||
def select_disk(title='Which disk?', disks):
|
def select_disk(title='Which disk?', disks):
|
||||||
"""Select a disk from the attached disks"""
|
"""Select a disk from the attached disks"""
|
||||||
# Build menu
|
# Build menu
|
||||||
disk_options = []
|
disk_options = []
|
||||||
for disk in disks:
|
for disk in disks:
|
||||||
display_name = '{Size}\t[{Table}] ({Type}) {Name}'.format(**disk)
|
display_name = '{Size}\t[{Table}] ({Type}) {Name}'.format(**disk)
|
||||||
pwidth=len(str(len(disk['Partitions'])))
|
pwidth=len(str(len(disk['Partitions'])))
|
||||||
for partition in disk['Partitions']:
|
for partition in disk['Partitions']:
|
||||||
# Main text
|
# Main text
|
||||||
p_name = 'Partition {num:>{width}}: {size} ({fs})'.format(
|
p_name = 'Partition {num:>{width}}: {size} ({fs})'.format(
|
||||||
num = partition['Number'],
|
num = partition['Number'],
|
||||||
width = pwidth,
|
width = pwidth,
|
||||||
size = partition['Size'],
|
size = partition['Size'],
|
||||||
fs = partition['FileSystem'])
|
fs = partition['FileSystem'])
|
||||||
if partition['Name']:
|
if partition['Name']:
|
||||||
p_name += '\t"{}"'.format(partition['Name'])
|
p_name += '\t"{}"'.format(partition['Name'])
|
||||||
|
|
||||||
# Show unsupported partition(s)
|
# Show unsupported partition(s)
|
||||||
if is_bad_partition(partition):
|
if is_bad_partition(partition):
|
||||||
p_display_name = '{YELLOW}{display}{CLEAR}'.format(
|
p_display_name = '{YELLOW}{display}{CLEAR}'.format(
|
||||||
display=p_name, **COLORS)
|
display=p_name, **COLORS)
|
||||||
|
|
||||||
display_name += '\n\t\t\t{}'.format(display_name)
|
display_name += '\n\t\t\t{}'.format(display_name)
|
||||||
if not disk['Partitions']:
|
if not disk['Partitions']:
|
||||||
display_name += '\n\t\t\t{}No partitions found.{}'.format(
|
display_name += '\n\t\t\t{}No partitions found.{}'.format(
|
||||||
COLORS['YELLOW'], COLORS['CLEAR'])
|
COLORS['YELLOW'], COLORS['CLEAR'])
|
||||||
|
|
||||||
disk_options.append({'Name': display_name, 'Disk': disk})
|
disk_options.append({'Name': display_name, 'Disk': disk})
|
||||||
actions = [
|
actions = [
|
||||||
{'Name': 'Main Menu', 'Letter': 'M'},
|
{'Name': 'Main Menu', 'Letter': 'M'},
|
||||||
]
|
]
|
||||||
|
|
||||||
# Menu loop
|
# Menu loop
|
||||||
selection = menu_select(
|
selection = menu_select(
|
||||||
title = title,
|
title = title,
|
||||||
main_entries = disk_options,
|
main_entries = disk_options,
|
||||||
action_entries = actions)
|
action_entries = actions)
|
||||||
|
|
||||||
if (selection.isnumeric()):
|
if (selection.isnumeric()):
|
||||||
return disk_options[int(selection)-1]['Disk']
|
return disk_options[int(selection)-1]['Disk']
|
||||||
elif (selection == 'M'):
|
elif (selection == 'M'):
|
||||||
raise GeneralAbort
|
raise GeneralAbort
|
||||||
|
|
||||||
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 PE: Functions - PARTITION UIDs
|
# Wizard Kit PE: 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,225 +1,225 @@
|
||||||
# Wizard Kit PE: Functions - Windows Setup
|
# Wizard Kit PE: Functions - Windows Setup
|
||||||
|
|
||||||
from functions.data import *
|
from functions.data import *
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
DISKPART_SCRIPT = r'{}\diskpart.script'.format(global_vars['Env']['TMP'])
|
DISKPART_SCRIPT = r'{}\diskpart.script'.format(global_vars['Env']['TMP'])
|
||||||
WINDOWS_VERSIONS = [
|
WINDOWS_VERSIONS = [
|
||||||
{'Name': 'Windows 7 Home Basic',
|
{'Name': 'Windows 7 Home Basic',
|
||||||
'Image File': 'Win7',
|
'Image File': 'Win7',
|
||||||
'Image Name': 'Windows 7 HOMEBASIC'},
|
'Image Name': 'Windows 7 HOMEBASIC'},
|
||||||
{'Name': 'Windows 7 Home Premium',
|
{'Name': 'Windows 7 Home Premium',
|
||||||
'Image File': 'Win7',
|
'Image File': 'Win7',
|
||||||
'Image Name': 'Windows 7 HOMEPREMIUM'},
|
'Image Name': 'Windows 7 HOMEPREMIUM'},
|
||||||
{'Name': 'Windows 7 Professional',
|
{'Name': 'Windows 7 Professional',
|
||||||
'Image File': 'Win7',
|
'Image File': 'Win7',
|
||||||
'Image Name': 'Windows 7 PROFESSIONAL'},
|
'Image Name': 'Windows 7 PROFESSIONAL'},
|
||||||
{'Name': 'Windows 7 Ultimate',
|
{'Name': 'Windows 7 Ultimate',
|
||||||
'Image File': 'Win7',
|
'Image File': 'Win7',
|
||||||
'Image Name': 'Windows 7 ULTIMATE'},
|
'Image Name': 'Windows 7 ULTIMATE'},
|
||||||
|
|
||||||
{'Name': 'Windows 8.1',
|
{'Name': 'Windows 8.1',
|
||||||
'Image File': 'Win8',
|
'Image File': 'Win8',
|
||||||
'Image Name': 'Windows 8.1',
|
'Image Name': 'Windows 8.1',
|
||||||
'CRLF': True},
|
'CRLF': True},
|
||||||
{'Name': 'Windows 8.1 Pro',
|
{'Name': 'Windows 8.1 Pro',
|
||||||
'Image File': 'Win8',
|
'Image File': 'Win8',
|
||||||
'Image Name': 'Windows 8.1 Pro'},
|
'Image Name': 'Windows 8.1 Pro'},
|
||||||
|
|
||||||
{'Name': 'Windows 10 Home',
|
{'Name': 'Windows 10 Home',
|
||||||
'Image File': 'Win10',
|
'Image File': 'Win10',
|
||||||
'Image Name': 'Windows 10 Home',
|
'Image Name': 'Windows 10 Home',
|
||||||
'CRLF': True},
|
'CRLF': True},
|
||||||
{'Name': 'Windows 10 Pro',
|
{'Name': 'Windows 10 Pro',
|
||||||
'Image File': 'Win10',
|
'Image File': 'Win10',
|
||||||
'Image Name': 'Windows 10 Pro'},
|
'Image Name': 'Windows 10 Pro'},
|
||||||
]
|
]
|
||||||
|
|
||||||
def find_windows_image(windows_version):
|
def find_windows_image(windows_version):
|
||||||
"""Search for a Windows source image file, returns dict.
|
"""Search for a Windows source image file, returns dict.
|
||||||
|
|
||||||
Searches on local disks and then the WINDOWS_SERVER share."""
|
Searches on local disks and then the WINDOWS_SERVER share."""
|
||||||
image = {}
|
image = {}
|
||||||
imagefile = windows_version['Image File']
|
imagefile = windows_version['Image File']
|
||||||
imagename = windows_version['Image Name']
|
imagename = windows_version['Image Name']
|
||||||
|
|
||||||
# Search local source
|
# Search local source
|
||||||
for d in psutil.disk_partitions():
|
for d in psutil.disk_partitions():
|
||||||
for ext in ['esd', 'wim', 'swm']:
|
for ext in ['esd', 'wim', 'swm']:
|
||||||
path = '{}images\{}.{}'.format(d.mountpoint, imagefile, ext)
|
path = '{}images\{}.{}'.format(d.mountpoint, imagefile, ext)
|
||||||
if os.path.isfile(path) and wim_contains_image(path, imagename):
|
if os.path.isfile(path) and wim_contains_image(path, imagename):
|
||||||
image['Path'] = path
|
image['Path'] = path
|
||||||
image['Source'] = letter
|
image['Source'] = letter
|
||||||
if ext == 'swm':
|
if ext == 'swm':
|
||||||
image['Glob'] = '--ref="{}*.swm"'.format(image['Path'][:-4])
|
image['Glob'] = '--ref="{}*.swm"'.format(image['Path'][:-4])
|
||||||
break
|
break
|
||||||
|
|
||||||
# Check for network source
|
# Check for network source
|
||||||
if not image:
|
if not image:
|
||||||
mount_windows_share()
|
mount_windows_share()
|
||||||
if not WINDOWS_SERVER['Mounted']:
|
if not WINDOWS_SERVER['Mounted']:
|
||||||
return None
|
return None
|
||||||
for ext in ['esd', 'wim', 'swm']:
|
for ext in ['esd', 'wim', 'swm']:
|
||||||
path = r'\\{}\{}\images\{}.ext'.format(
|
path = r'\\{}\{}\images\{}.ext'.format(
|
||||||
WINDOWS_SERVER['IP'], WINDOWS_SERVER['Share'], imagefile, ext)
|
WINDOWS_SERVER['IP'], WINDOWS_SERVER['Share'], imagefile, ext)
|
||||||
if os.path.isfile(path) and wim_contains_image(path, imagename):
|
if os.path.isfile(path) and wim_contains_image(path, imagename):
|
||||||
image['Path'] = path
|
image['Path'] = path
|
||||||
image['Source'] = None
|
image['Source'] = None
|
||||||
if ext == 'swm':
|
if ext == 'swm':
|
||||||
image['Glob'] = '--ref="{}*.swm"'.format(image['Path'][:-4])
|
image['Glob'] = '--ref="{}*.swm"'.format(image['Path'][:-4])
|
||||||
break
|
break
|
||||||
|
|
||||||
# Display image to be used (if any) and return
|
# Display image to be used (if any) and return
|
||||||
if image:
|
if image:
|
||||||
print_info('Using image: {}'.format(image['Path']))
|
print_info('Using image: {}'.format(image['Path']))
|
||||||
return image
|
return image
|
||||||
else:
|
else:
|
||||||
print_error('Failed to find Windows source image for {}'.format(
|
print_error('Failed to find Windows source image for {}'.format(
|
||||||
windows_version['Name']))
|
windows_version['Name']))
|
||||||
raise GeneralAbort
|
raise GeneralAbort
|
||||||
|
|
||||||
def format_disk(disk, use_gpt):
|
def format_disk(disk, use_gpt):
|
||||||
"""Format disk for use as a Windows OS disk."""
|
"""Format disk for use as a Windows OS disk."""
|
||||||
if use_gpt:
|
if use_gpt:
|
||||||
format_gpt(disk)
|
format_gpt(disk)
|
||||||
else:
|
else:
|
||||||
format_mbr(disk)
|
format_mbr(disk)
|
||||||
|
|
||||||
def format_gpt(disk):
|
def format_gpt(disk):
|
||||||
"""Format disk for use as a Windows OS disk using the GPT layout."""
|
"""Format disk for use as a Windows OS disk using the GPT layout."""
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
# Partition table
|
# Partition table
|
||||||
script.write('select disk {}\n'.format(disk['Number']))
|
script.write('select disk {}\n'.format(disk['Number']))
|
||||||
script.write('clean\n')
|
script.write('clean\n')
|
||||||
script.write('convert gpt\n')
|
script.write('convert gpt\n')
|
||||||
|
|
||||||
# System partition
|
# System partition
|
||||||
# NOTE: ESP needs to be >= 260 for Advanced Format 4K disks
|
# NOTE: ESP needs to be >= 260 for Advanced Format 4K disks
|
||||||
script.write('create partition efi size=500\n')
|
script.write('create partition efi size=500\n')
|
||||||
script.write('format quick fs=fat32 label="System"\n')
|
script.write('format quick fs=fat32 label="System"\n')
|
||||||
script.write('assign letter="S"\n')
|
script.write('assign letter="S"\n')
|
||||||
|
|
||||||
# Microsoft Reserved (MSR) partition
|
# Microsoft Reserved (MSR) partition
|
||||||
script.write('create partition msr size=128\n')
|
script.write('create partition msr size=128\n')
|
||||||
|
|
||||||
# Windows partition
|
# Windows partition
|
||||||
script.write('create partition primary\n')
|
script.write('create partition primary\n')
|
||||||
script.write('format quick fs=ntfs label="Windows"\n')
|
script.write('format quick fs=ntfs label="Windows"\n')
|
||||||
script.write('assign letter="W"\n')
|
script.write('assign letter="W"\n')
|
||||||
|
|
||||||
# Recovery Tools partition
|
# Recovery Tools partition
|
||||||
script.write('shrink minimum=500\n')
|
script.write('shrink minimum=500\n')
|
||||||
script.write('create partition primary\n')
|
script.write('create partition primary\n')
|
||||||
script.write('format quick fs=ntfs label="Recovery Tools"\n')
|
script.write('format quick fs=ntfs label="Recovery Tools"\n')
|
||||||
script.write('assign letter="T"\n')
|
script.write('assign letter="T"\n')
|
||||||
script.write('set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"\n')
|
script.write('set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"\n')
|
||||||
script.write('gpt attributes=0x8000000000000001\n')
|
script.write('gpt attributes=0x8000000000000001\n')
|
||||||
|
|
||||||
# Run script
|
# Run script
|
||||||
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
def format_mbr(disk):
|
def format_mbr(disk):
|
||||||
"""Format disk for use as a Windows OS disk using the MBR layout."""
|
"""Format disk for use as a Windows OS disk using the MBR layout."""
|
||||||
with open(DISKPART_SCRIPT, 'w') as script:
|
with open(DISKPART_SCRIPT, 'w') as script:
|
||||||
# Partition table
|
# Partition table
|
||||||
script.write('select disk {}\n'.format(disk['Number']))
|
script.write('select disk {}\n'.format(disk['Number']))
|
||||||
script.write('clean\n')
|
script.write('clean\n')
|
||||||
|
|
||||||
# System partition
|
# System partition
|
||||||
script.write('create partition primary size=100\n')
|
script.write('create partition primary size=100\n')
|
||||||
script.write('format fs=ntfs quick label="System Reserved"\n')
|
script.write('format fs=ntfs quick label="System Reserved"\n')
|
||||||
script.write('active\n')
|
script.write('active\n')
|
||||||
script.write('assign letter="S"\n')
|
script.write('assign letter="S"\n')
|
||||||
|
|
||||||
# Windows partition
|
# Windows partition
|
||||||
script.write('create partition primary\n')
|
script.write('create partition primary\n')
|
||||||
script.write('format fs=ntfs quick label="Windows"\n')
|
script.write('format fs=ntfs quick label="Windows"\n')
|
||||||
script.write('assign letter="W"\n')
|
script.write('assign letter="W"\n')
|
||||||
|
|
||||||
# Recovery Tools partition
|
# Recovery Tools partition
|
||||||
script.write('shrink minimum=500\n')
|
script.write('shrink minimum=500\n')
|
||||||
script.write('create partition primary\n')
|
script.write('create partition primary\n')
|
||||||
script.write('format quick fs=ntfs label="Recovery"\n')
|
script.write('format quick fs=ntfs label="Recovery"\n')
|
||||||
script.write('assign letter="T"\n')
|
script.write('assign letter="T"\n')
|
||||||
script.write('set id=27\n')
|
script.write('set id=27\n')
|
||||||
|
|
||||||
# Run script
|
# Run script
|
||||||
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
run_program(['diskpart', '/s', DISKPART_SCRIPT])
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
def mount_windows_share():
|
def mount_windows_share():
|
||||||
"""Mount the Windows images share unless labeled as already mounted."""
|
"""Mount the Windows images share unless labeled as already mounted."""
|
||||||
if WINDOWS_SERVER['Mounted']:
|
if WINDOWS_SERVER['Mounted']:
|
||||||
# Blindly skip if we mounted earlier
|
# Blindly skip if we mounted earlier
|
||||||
continue
|
continue
|
||||||
|
|
||||||
mount_network_share(WINDOWS_SERVER)
|
mount_network_share(WINDOWS_SERVER)
|
||||||
|
|
||||||
def select_windows_version():
|
def select_windows_version():
|
||||||
actions = [
|
actions = [
|
||||||
{'Name': 'Main Menu', 'Letter': 'M'},
|
{'Name': 'Main Menu', 'Letter': 'M'},
|
||||||
]
|
]
|
||||||
|
|
||||||
# Menu loop
|
# Menu loop
|
||||||
selection = menu_select(
|
selection = menu_select(
|
||||||
title = 'Which version of Windows are we installing?',
|
title = 'Which version of Windows are we installing?',
|
||||||
main_entries = WINDOWS_VERSIONS,
|
main_entries = WINDOWS_VERSIONS,
|
||||||
action_entries = actions)
|
action_entries = actions)
|
||||||
|
|
||||||
if selection.isnumeric():
|
if selection.isnumeric():
|
||||||
return WINDOWS_VERSIONS[int(selection)-1]
|
return WINDOWS_VERSIONS[int(selection)-1]
|
||||||
elif selection == 'M':
|
elif selection == 'M':
|
||||||
raise GeneralAbort
|
raise GeneralAbort
|
||||||
|
|
||||||
def setup_windows(windows_image, windows_version):
|
def setup_windows(windows_image, windows_version):
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['wimlib-imagex'],
|
global_vars['Tools']['wimlib-imagex'],
|
||||||
'apply',
|
'apply',
|
||||||
windows_image['Path'],
|
windows_image['Path'],
|
||||||
windows_version['Image Name'],
|
windows_version['Image Name'],
|
||||||
'W:\\']
|
'W:\\']
|
||||||
if 'Glob' in windows_image:
|
if 'Glob' in windows_image:
|
||||||
cmd.extend(windows_image['Glob'])
|
cmd.extend(windows_image['Glob'])
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def setup_windows_re(windows_version, windows_letter='W', tools_letter='T'):
|
def setup_windows_re(windows_version, windows_letter='W', tools_letter='T'):
|
||||||
win = r'{}:\Windows'.format(windows_letter)
|
win = r'{}:\Windows'.format(windows_letter)
|
||||||
winre = r'{}\System32\Recovery\WinRE.wim'.format(win)
|
winre = r'{}\System32\Recovery\WinRE.wim'.format(win)
|
||||||
dest = r'{}:\Recovery\WindowsRE'.format(tools_letter)
|
dest = r'{}:\Recovery\WindowsRE'.format(tools_letter)
|
||||||
|
|
||||||
# Copy WinRE.wim
|
# Copy WinRE.wim
|
||||||
os.makedirs(dest, exist_ok=True)
|
os.makedirs(dest, exist_ok=True)
|
||||||
shutil.copy(winre, r'{}\WinRE.wim'.format(dest))
|
shutil.copy(winre, r'{}\WinRE.wim'.format(dest))
|
||||||
|
|
||||||
# Set location
|
# Set location
|
||||||
cmd = [
|
cmd = [
|
||||||
r'{}\System32\ReAgentc.exe'.format(win),
|
r'{}\System32\ReAgentc.exe'.format(win),
|
||||||
'/setreimage',
|
'/setreimage',
|
||||||
'/path', dest,
|
'/path', dest,
|
||||||
'/target', win]
|
'/target', win]
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def update_boot_partition(system_letter='S', windows_letter='W', mode='ALL'):
|
def update_boot_partition(system_letter='S', windows_letter='W', mode='ALL'):
|
||||||
cmd = [
|
cmd = [
|
||||||
r'{}:\Windows\System32\bcdboot.exe'.format(windows_letter),
|
r'{}:\Windows\System32\bcdboot.exe'.format(windows_letter),
|
||||||
r'{}:\Windows'.format(windows_letter),
|
r'{}:\Windows'.format(windows_letter),
|
||||||
'/s', '{}:'.format(system_letter),
|
'/s', '{}:'.format(system_letter),
|
||||||
'/f', mode]
|
'/f', mode]
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
|
|
||||||
def wim_contains_image(filename, imagename):
|
def wim_contains_image(filename, imagename):
|
||||||
cmd = [
|
cmd = [
|
||||||
global_vars['Tools']['wimlib-imagex'],
|
global_vars['Tools']['wimlib-imagex'],
|
||||||
'info',
|
'info',
|
||||||
filename,
|
filename,
|
||||||
imagename]
|
imagename]
|
||||||
try:
|
try:
|
||||||
run_program(cmd)
|
run_program(cmd)
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
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,380 +1,380 @@
|
||||||
# Wizard Kit PE: Menus
|
# Wizard Kit PE: Menus
|
||||||
|
|
||||||
from functions.backup import *
|
from functions.backup import *
|
||||||
from functions.disk import *
|
from functions.disk import *
|
||||||
from functions.windows_setup import *
|
from functions.windows_setup import *
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
FAST_COPY_PE_ARGS = [
|
FAST_COPY_PE_ARGS = [
|
||||||
'/cmd=noexist_only',
|
'/cmd=noexist_only',
|
||||||
'/utf8',
|
'/utf8',
|
||||||
'/skip_empty_dir',
|
'/skip_empty_dir',
|
||||||
'/linkdest',
|
'/linkdest',
|
||||||
'/no_ui',
|
'/no_ui',
|
||||||
'/auto_close',
|
'/auto_close',
|
||||||
'/exclude={}'.format(';'.join(FAST_COPY_EXCLUDES)),
|
'/exclude={}'.format(';'.join(FAST_COPY_EXCLUDES)),
|
||||||
]
|
]
|
||||||
PE_TOOLS = {
|
PE_TOOLS = {
|
||||||
'BlueScreenView': {
|
'BlueScreenView': {
|
||||||
'Path': r'BlueScreenView\BlueScreenView.exe',
|
'Path': r'BlueScreenView\BlueScreenView.exe',
|
||||||
},
|
},
|
||||||
'FastCopy': {
|
'FastCopy': {
|
||||||
'Path': r'FastCopy\FastCopy.exe',
|
'Path': r'FastCopy\FastCopy.exe',
|
||||||
'Args': FAST_COPY_PE_ARGS,
|
'Args': FAST_COPY_PE_ARGS,
|
||||||
},
|
},
|
||||||
'HWiNFO': {
|
'HWiNFO': {
|
||||||
'Path': r'HWiNFO\HWiNFO.exe',
|
'Path': r'HWiNFO\HWiNFO.exe',
|
||||||
},
|
},
|
||||||
'NT Password Editor': {
|
'NT Password Editor': {
|
||||||
'Path': r'NT Password Editor\ntpwedit.exe',
|
'Path': r'NT Password Editor\ntpwedit.exe',
|
||||||
},
|
},
|
||||||
'Notepad++': {
|
'Notepad++': {
|
||||||
'Path': r'NotepadPlusPlus\NotepadPlusPlus.exe',
|
'Path': r'NotepadPlusPlus\NotepadPlusPlus.exe',
|
||||||
},
|
},
|
||||||
'PhotoRec': {
|
'PhotoRec': {
|
||||||
'Path': r'TestDisk\photorec_win.exe',
|
'Path': r'TestDisk\photorec_win.exe',
|
||||||
'Args': ['-new_console:n'],
|
'Args': ['-new_console:n'],
|
||||||
},
|
},
|
||||||
'Prime95': {
|
'Prime95': {
|
||||||
'Path': r'Prime95\prime95.exe',
|
'Path': r'Prime95\prime95.exe',
|
||||||
},
|
},
|
||||||
'ProduKey': {
|
'ProduKey': {
|
||||||
'Path': r'ProduKey\ProduKey.exe',
|
'Path': r'ProduKey\ProduKey.exe',
|
||||||
},
|
},
|
||||||
'Q-Dir': {
|
'Q-Dir': {
|
||||||
'Path': r'Q-Dir\Q-Dir.exe',
|
'Path': r'Q-Dir\Q-Dir.exe',
|
||||||
},
|
},
|
||||||
'TestDisk': {
|
'TestDisk': {
|
||||||
'Path': r'TestDisk\testdisk_win.exe',
|
'Path': r'TestDisk\testdisk_win.exe',
|
||||||
'Args': ['-new_console:n'],
|
'Args': ['-new_console:n'],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
def menu_backup():
|
def menu_backup():
|
||||||
"""Take backup images of partition(s) in the WIM format."""
|
"""Take backup images of partition(s) in the WIM format."""
|
||||||
errors = False
|
errors = False
|
||||||
other_results = {
|
other_results = {
|
||||||
'Error': {
|
'Error': {
|
||||||
'CalledProcessError': 'Unknown Error',
|
'CalledProcessError': 'Unknown Error',
|
||||||
'PathNotFoundError': 'Missing',
|
'PathNotFoundError': 'Missing',
|
||||||
},
|
},
|
||||||
'Warning': {
|
'Warning': {
|
||||||
'GenericAbort': 'Skipped',
|
'GenericAbort': 'Skipped',
|
||||||
'GenericRepair': 'Repaired',
|
'GenericRepair': 'Repaired',
|
||||||
}}
|
}}
|
||||||
set_title('{}: Backup Menu'.format(KIT_NAME_FULL))
|
set_title('{}: Backup Menu'.format(KIT_NAME_FULL))
|
||||||
|
|
||||||
# Set ticket Number
|
# Set ticket Number
|
||||||
clear_screen()
|
clear_screen()
|
||||||
ticket_number = get_ticket_number()
|
ticket_number = get_ticket_number()
|
||||||
|
|
||||||
# Mount backup shares
|
# Mount backup shares
|
||||||
mount_backup_shares()
|
mount_backup_shares()
|
||||||
|
|
||||||
# Select destination
|
# Select destination
|
||||||
destination = select_backup_destination()
|
destination = select_backup_destination()
|
||||||
|
|
||||||
# Scan disks
|
# Scan disks
|
||||||
try_and_print(
|
try_and_print(
|
||||||
message = 'Assigning letters...',
|
message = 'Assigning letters...',
|
||||||
function = assign_volume_letters,
|
function = assign_volume_letters,
|
||||||
other_results = other_results)
|
other_results = other_results)
|
||||||
result = try_and_print(
|
result = try_and_print(
|
||||||
message = 'Getting disk info...',
|
message = 'Getting disk info...',
|
||||||
function = scan_disks,
|
function = scan_disks,
|
||||||
other_results = other_results)
|
other_results = other_results)
|
||||||
if result['CS']:
|
if result['CS']:
|
||||||
disks = result['Out']
|
disks = result['Out']
|
||||||
else:
|
else:
|
||||||
print_error('ERROR: No disks found.')
|
print_error('ERROR: No disks found.')
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# Select disk to backup
|
# Select disk to backup
|
||||||
disk = select_disk('For which disk are we creating backups?', disks)
|
disk = select_disk('For which disk are we creating backups?', disks)
|
||||||
if not disk:
|
if not disk:
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# "Prep" disk
|
# "Prep" disk
|
||||||
prep_disk_for_backup(destination, disk, ticket_number)
|
prep_disk_for_backup(destination, disk, ticket_number)
|
||||||
|
|
||||||
# Display details for backup task
|
# Display details for backup task
|
||||||
clear_screen()
|
clear_screen()
|
||||||
print_info('Create Backup - Details:\n')
|
print_info('Create Backup - Details:\n')
|
||||||
show_info(message='Ticket:', info=ticket_number)
|
show_info(message='Ticket:', info=ticket_number)
|
||||||
show_info(
|
show_info(
|
||||||
message = 'Source:',
|
message = 'Source:',
|
||||||
info = '[{Table}] ({Type}) {Name} {Size}'.format(**disk),
|
info = '[{Table}] ({Type}) {Name} {Size}'.format(**disk),
|
||||||
)
|
)
|
||||||
show_info(
|
show_info(
|
||||||
message = 'Destination:',
|
message = 'Destination:',
|
||||||
info = destination.get('Display Name', destination['Name']),
|
info = destination.get('Display Name', destination['Name']),
|
||||||
)
|
)
|
||||||
for par in disk['Partitions']:
|
for par in disk['Partitions']:
|
||||||
show_info(message='', info=par['Display String'], width=20)
|
show_info(message='', info=par['Display String'], width=20)
|
||||||
print_standard(disk['Backup Warnings'])
|
print_standard(disk['Backup Warnings'])
|
||||||
|
|
||||||
# Ask to proceed
|
# Ask to proceed
|
||||||
if (not ask('Proceed with backup?')):
|
if (not ask('Proceed with backup?')):
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# Backup partition(s)
|
# Backup partition(s)
|
||||||
print_info('\n\nStarting task.\n')
|
print_info('\n\nStarting task.\n')
|
||||||
for par in disk['Partitions']:
|
for par in disk['Partitions']:
|
||||||
result = try_and_print(
|
result = try_and_print(
|
||||||
message = 'Partition {} Backup...'.format(par['Number']),
|
message = 'Partition {} Backup...'.format(par['Number']),
|
||||||
function = backup_partition,
|
function = backup_partition,
|
||||||
other_results = other_results,
|
other_results = other_results,
|
||||||
disk = disk,
|
disk = disk,
|
||||||
partition = par)
|
partition = par)
|
||||||
if not result['CS']:
|
if not result['CS']:
|
||||||
errors = True
|
errors = True
|
||||||
par['Error'] = result['Error']
|
par['Error'] = result['Error']
|
||||||
|
|
||||||
# Verify backup(s)
|
# Verify backup(s)
|
||||||
if disk['Valid Partitions']:
|
if disk['Valid Partitions']:
|
||||||
print_info('\n\n Verifying backup images(s)\n')
|
print_info('\n\n Verifying backup images(s)\n')
|
||||||
for par in disk['Partitions']:
|
for par in disk['Partitions']:
|
||||||
if par['Number'] in disk['Bad Partitions']:
|
if par['Number'] in disk['Bad Partitions']:
|
||||||
continue # Skip verification
|
continue # Skip verification
|
||||||
result = try_and_print(
|
result = try_and_print(
|
||||||
message = 'Partition {} Image...'.format(par['Number']),
|
message = 'Partition {} Image...'.format(par['Number']),
|
||||||
function = verify_wim_backup,
|
function = verify_wim_backup,
|
||||||
other_results = other_results,
|
other_results = other_results,
|
||||||
partition = par)
|
partition = par)
|
||||||
if not result['CS']:
|
if not result['CS']:
|
||||||
errors = True
|
errors = True
|
||||||
par['Error'] = result['Error']
|
par['Error'] = result['Error']
|
||||||
|
|
||||||
# Print summary
|
# Print summary
|
||||||
if errors:
|
if errors:
|
||||||
print_warning('\nErrors were encountered and are detailed below.')
|
print_warning('\nErrors were encountered and are detailed below.')
|
||||||
for par in [p for p in disk['Partitions'] if 'Error' in p]:
|
for par in [p for p in disk['Partitions'] if 'Error' in p]:
|
||||||
print_standard(' Partition {} Error:'.format(par['Number']))
|
print_standard(' Partition {} Error:'.format(par['Number']))
|
||||||
if hasattr(par['Error'], 'stderr'):
|
if hasattr(par['Error'], 'stderr'):
|
||||||
try:
|
try:
|
||||||
par['Error'] = par['Error'].stderr.decode()
|
par['Error'] = par['Error'].stderr.decode()
|
||||||
except:
|
except:
|
||||||
# Deal with badly formatted error message
|
# Deal with badly formatted error message
|
||||||
pass
|
pass
|
||||||
if isinstance(par['Error'], basestring):
|
if isinstance(par['Error'], basestring):
|
||||||
print_error('\t{}'.format(par['Error']))
|
print_error('\t{}'.format(par['Error']))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
par['Error'] = par['Error'].splitlines()
|
par['Error'] = par['Error'].splitlines()
|
||||||
par['Error'] = [line.strip() for line in par['Error']]
|
par['Error'] = [line.strip() for line in par['Error']]
|
||||||
par['Error'] = [line for line in par['Error'] if line]
|
par['Error'] = [line for line in par['Error'] if line]
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
for line in par['Error']:
|
for line in par['Error']:
|
||||||
print_error('\t{}'.format(line))
|
print_error('\t{}'.format(line))
|
||||||
time.sleep(30)
|
time.sleep(30)
|
||||||
else:
|
else:
|
||||||
print_success('\nNo errors were encountered during imaging.')
|
print_success('\nNo errors were encountered during imaging.')
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
pause('\nPress Enter to return to main menu... ')
|
pause('\nPress Enter to return to main menu... ')
|
||||||
|
|
||||||
def menu_root():
|
def menu_root():
|
||||||
menus = [
|
menus = [
|
||||||
{'Name': 'Create Backups', 'Menu': menu_backup},
|
{'Name': 'Create Backups', 'Menu': menu_backup},
|
||||||
{'Name': 'Setup Windows', 'Menu': menu_setup},
|
{'Name': 'Setup Windows', 'Menu': menu_setup},
|
||||||
{'Name': 'Misc Tools', 'Menu': menu_tools},
|
{'Name': 'Misc Tools', 'Menu': menu_tools},
|
||||||
]
|
]
|
||||||
actions = [
|
actions = [
|
||||||
{'Name': 'Command Prompt', 'Letter': 'C'},
|
{'Name': 'Command Prompt', 'Letter': 'C'},
|
||||||
{'Name': 'Reboot', 'Letter': 'R'},
|
{'Name': 'Reboot', 'Letter': 'R'},
|
||||||
{'Name': 'Shutdown', 'Letter': 'S'},
|
{'Name': 'Shutdown', 'Letter': 'S'},
|
||||||
]
|
]
|
||||||
|
|
||||||
# Main loop
|
# Main loop
|
||||||
while True:
|
while True:
|
||||||
set_title(KIT_NAME_FULL)
|
set_title(KIT_NAME_FULL)
|
||||||
selection = menu_select(
|
selection = menu_select(
|
||||||
title = 'Main Menu',
|
title = 'Main Menu',
|
||||||
main_entries = menus,
|
main_entries = menus,
|
||||||
action_entries = actions,
|
action_entries = actions,
|
||||||
secret_exit = True)
|
secret_exit = True)
|
||||||
|
|
||||||
if (selection.isnumeric()):
|
if (selection.isnumeric()):
|
||||||
try:
|
try:
|
||||||
menus[int(selection)-1]['Menu']()
|
menus[int(selection)-1]['Menu']()
|
||||||
except AbortError:
|
except AbortError:
|
||||||
pass
|
pass
|
||||||
elif (selection == 'C'):
|
elif (selection == 'C'):
|
||||||
run_program(['cmd', '-new_console:n'], check=False)
|
run_program(['cmd', '-new_console:n'], check=False)
|
||||||
elif (selection == 'R'):
|
elif (selection == 'R'):
|
||||||
run_program(['wpeutil', 'reboot'])
|
run_program(['wpeutil', 'reboot'])
|
||||||
elif (selection == 'S'):
|
elif (selection == 'S'):
|
||||||
run_program(['wpeutil', 'shutdown'])
|
run_program(['wpeutil', 'shutdown'])
|
||||||
else:
|
else:
|
||||||
exit_script()
|
exit_script()
|
||||||
|
|
||||||
def menu_setup():
|
def menu_setup():
|
||||||
"""Format a disk (MBR/GPT), apply a Windows image, and setup boot files."""
|
"""Format a disk (MBR/GPT), apply a Windows image, and setup boot files."""
|
||||||
errors = False
|
errors = False
|
||||||
set_title('{}: Setup Menu'.format(KIT_NAME_FULL))
|
set_title('{}: Setup Menu'.format(KIT_NAME_FULL))
|
||||||
|
|
||||||
# Set ticket ID
|
# Set ticket ID
|
||||||
clear_screen()
|
clear_screen()
|
||||||
ticket_number = get_ticket_number()
|
ticket_number = get_ticket_number()
|
||||||
|
|
||||||
# Select the version of Windows to apply
|
# Select the version of Windows to apply
|
||||||
windows_version = select_windows_version()
|
windows_version = select_windows_version()
|
||||||
|
|
||||||
# Find Windows image
|
# Find Windows image
|
||||||
windows_image = find_windows_image(windows_version)
|
windows_image = find_windows_image(windows_version)
|
||||||
|
|
||||||
# Scan disks
|
# Scan disks
|
||||||
try_and_print(
|
try_and_print(
|
||||||
message = 'Assigning letters...',
|
message = 'Assigning letters...',
|
||||||
function = assign_volume_letters,
|
function = assign_volume_letters,
|
||||||
other_results = other_results)
|
other_results = other_results)
|
||||||
result = try_and_print(
|
result = try_and_print(
|
||||||
message = 'Getting disk info...',
|
message = 'Getting disk info...',
|
||||||
function = scan_disks,
|
function = scan_disks,
|
||||||
other_results = other_results)
|
other_results = other_results)
|
||||||
if result['CS']:
|
if result['CS']:
|
||||||
disks = result['Out']
|
disks = result['Out']
|
||||||
else:
|
else:
|
||||||
print_error('ERROR: No disks found.')
|
print_error('ERROR: No disks found.')
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# Select disk to use as the OS disk
|
# Select disk to use as the OS disk
|
||||||
dest_disk = select_disk('To which disk are we installing Windows?', disks)
|
dest_disk = select_disk('To which disk are we installing Windows?', disks)
|
||||||
if not disk:
|
if not disk:
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# "Prep" disk
|
# "Prep" disk
|
||||||
prep_disk_for_formatting(dest_disk)
|
prep_disk_for_formatting(dest_disk)
|
||||||
|
|
||||||
# Display details for setup task
|
# Display details for setup task
|
||||||
clear_screen()
|
clear_screen()
|
||||||
print_info('Setup Windows - Details:\n')
|
print_info('Setup Windows - Details:\n')
|
||||||
show_info(message='Ticket:', info=ticket_number)
|
show_info(message='Ticket:', info=ticket_number)
|
||||||
show_info(message='Installing:', info=windows_version['Name'])
|
show_info(message='Installing:', info=windows_version['Name'])
|
||||||
show_info(
|
show_info(
|
||||||
message = 'Boot Method:',
|
message = 'Boot Method:',
|
||||||
info = 'UEFI (GPT)' if dest_disk['Use GPT'] else 'Legacy (MBR)')
|
info = 'UEFI (GPT)' if dest_disk['Use GPT'] else 'Legacy (MBR)')
|
||||||
show_info(message='Using Image:', info=windows_version['Path'])
|
show_info(message='Using Image:', info=windows_version['Path'])
|
||||||
print_warning(' ERASING: \t[{Table}] ({Type}) {Name} {Size}\n'.format(
|
print_warning(' ERASING: \t[{Table}] ({Type}) {Name} {Size}\n'.format(
|
||||||
**dest_disk))
|
**dest_disk))
|
||||||
for par in dest_disk['Partitions']:
|
for par in dest_disk['Partitions']:
|
||||||
print_warning(par['Display String'])
|
print_warning(par['Display String'])
|
||||||
print_warning(dest_disk['Format Warnings'])
|
print_warning(dest_disk['Format Warnings'])
|
||||||
|
|
||||||
if (not ask('Is this correct?')):
|
if (not ask('Is this correct?')):
|
||||||
raise GeneralAbort
|
raise GeneralAbort
|
||||||
|
|
||||||
# Safety check
|
# Safety check
|
||||||
print_standard('\nSAFETY CHECK')
|
print_standard('\nSAFETY CHECK')
|
||||||
print_warning('All data will be DELETED from the '
|
print_warning('All data will be DELETED from the '
|
||||||
'disk & partition(s) listed above.')
|
'disk & partition(s) listed above.')
|
||||||
print_warning('This is irreversible and will lead '
|
print_warning('This is irreversible and will lead '
|
||||||
'to {CLEAR}{RED}DATA LOSS.'.format(**COLORS))
|
'to {CLEAR}{RED}DATA LOSS.'.format(**COLORS))
|
||||||
if (not ask('Asking again to confirm, is this correct?')):
|
if (not ask('Asking again to confirm, is this correct?')):
|
||||||
raise GeneralAbort
|
raise GeneralAbort
|
||||||
|
|
||||||
# Remove volume letters so S, T, & W can be used below
|
# Remove volume letters so S, T, & W can be used below
|
||||||
remove_volume_letters(keep=windows_image['Source'])
|
remove_volume_letters(keep=windows_image['Source'])
|
||||||
new_letter = reassign_volume_letter(letter=windows_image['Source'])
|
new_letter = reassign_volume_letter(letter=windows_image['Source'])
|
||||||
if new_letter:
|
if new_letter:
|
||||||
windows_image['Source'] = new_letter
|
windows_image['Source'] = new_letter
|
||||||
|
|
||||||
# Format and partition disk
|
# Format and partition disk
|
||||||
result = try_and_print(
|
result = try_and_print(
|
||||||
message = 'Formatting disk...',
|
message = 'Formatting disk...',
|
||||||
function = format_disk,
|
function = format_disk,
|
||||||
other_results = other_results,
|
other_results = other_results,
|
||||||
disk = dest_disk,
|
disk = dest_disk,
|
||||||
use_gpt = dest_disk['Use GPT'])
|
use_gpt = dest_disk['Use GPT'])
|
||||||
if not result['CS']:
|
if not result['CS']:
|
||||||
# We need to crash as the disk is in an unknown state
|
# We need to crash as the disk is in an unknown state
|
||||||
print_error('ERROR: Failed to format disk.')
|
print_error('ERROR: Failed to format disk.')
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# Apply Image
|
# Apply Image
|
||||||
result = try_and_print(
|
result = try_and_print(
|
||||||
message = 'Applying image...',
|
message = 'Applying image...',
|
||||||
function = setup_windows,
|
function = setup_windows,
|
||||||
other_results = other_results,
|
other_results = other_results,
|
||||||
windows_image = windows_image,
|
windows_image = windows_image,
|
||||||
windows_version = windows_version)
|
windows_version = windows_version)
|
||||||
if not result['CS']:
|
if not result['CS']:
|
||||||
# We need to crash as the disk is in an unknown state
|
# We need to crash as the disk is in an unknown state
|
||||||
print_error('ERROR: Failed to apply image.')
|
print_error('ERROR: Failed to apply image.')
|
||||||
raise GenericAbort
|
raise GenericAbort
|
||||||
|
|
||||||
# Create Boot files
|
# Create Boot files
|
||||||
try_and_print(
|
try_and_print(
|
||||||
message = 'Updating boot files...',
|
message = 'Updating boot files...',
|
||||||
function = update_boot_partition,
|
function = update_boot_partition,
|
||||||
other_results = other_results)
|
other_results = other_results)
|
||||||
|
|
||||||
# Setup WinRE
|
# Setup WinRE
|
||||||
try_and_print(
|
try_and_print(
|
||||||
message = 'Updating recovery tools...',
|
message = 'Updating recovery tools...',
|
||||||
function = setup_windows_re,
|
function = setup_windows_re,
|
||||||
other_results = other_results,
|
other_results = other_results,
|
||||||
windows_version = windows_version)
|
windows_version = windows_version)
|
||||||
|
|
||||||
# Print summary
|
# Print summary
|
||||||
print_standard('\nDone.')
|
print_standard('\nDone.')
|
||||||
pause('\nPress Enter to return to main menu... ')
|
pause('\nPress Enter to return to main menu... ')
|
||||||
|
|
||||||
def menu_tools():
|
def menu_tools():
|
||||||
tools = [k for k in sorted(PE_TOOLS.keys())]
|
tools = [k for k in sorted(PE_TOOLS.keys())]
|
||||||
actions = [{'Name': 'Main Menu', 'Letter': 'M'},]
|
actions = [{'Name': 'Main Menu', 'Letter': 'M'},]
|
||||||
set_title(KIT_NAME_FULL)
|
set_title(KIT_NAME_FULL)
|
||||||
|
|
||||||
# Menu loop
|
# Menu loop
|
||||||
while True:
|
while True:
|
||||||
selection = menu_select(
|
selection = menu_select(
|
||||||
title = 'Tools Menu',
|
title = 'Tools Menu',
|
||||||
main_entries = tools,
|
main_entries = tools,
|
||||||
action_entries = actions)
|
action_entries = actions)
|
||||||
if (selection.isnumeric()):
|
if (selection.isnumeric()):
|
||||||
tool = tools[int(selection)-1]
|
tool = tools[int(selection)-1]
|
||||||
cmd = [PE_TOOLS[tool]['Path']] + PE_TOOLS[tool].get('Args', [])
|
cmd = [PE_TOOLS[tool]['Path']] + PE_TOOLS[tool].get('Args', [])
|
||||||
if tool == 'Blue Screen View':
|
if tool == 'Blue Screen View':
|
||||||
# Select path to scan
|
# Select path to scan
|
||||||
minidump_path = select_minidump_path()
|
minidump_path = select_minidump_path()
|
||||||
if minidump_path:
|
if minidump_path:
|
||||||
cmd.extend(['/MiniDumpFolder', minidump_path])
|
cmd.extend(['/MiniDumpFolder', minidump_path])
|
||||||
try:
|
try:
|
||||||
popen_program(cmd)
|
popen_program(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
print_error('Failed to run {prog}'.format(prog=tool['Name']))
|
print_error('Failed to run {prog}'.format(prog=tool['Name']))
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
pause()
|
pause()
|
||||||
elif (selection == 'M'):
|
elif (selection == 'M'):
|
||||||
break
|
break
|
||||||
|
|
||||||
def select_minidump_path():
|
def select_minidump_path():
|
||||||
dumps = []
|
dumps = []
|
||||||
|
|
||||||
# Assign volume letters first
|
# Assign volume letters first
|
||||||
assign_volume_letters()
|
assign_volume_letters()
|
||||||
|
|
||||||
# Search for minidumps
|
# Search for minidumps
|
||||||
tmp = run_program('mountvol')
|
tmp = run_program('mountvol')
|
||||||
tmp = [d for d in re.findall(r'.*([A-Za-z]):\\', tmp.stdout.decode())]
|
tmp = [d for d in re.findall(r'.*([A-Za-z]):\\', tmp.stdout.decode())]
|
||||||
# Remove RAMDisk letter
|
# Remove RAMDisk letter
|
||||||
if 'X' in tmp:
|
if 'X' in tmp:
|
||||||
tmp.remove('X')
|
tmp.remove('X')
|
||||||
for disk in tmp:
|
for disk in tmp:
|
||||||
if os.path.exists('{}:\\Windows\\MiniDump'.format(disk)):
|
if os.path.exists('{}:\\Windows\\MiniDump'.format(disk)):
|
||||||
dumps.append({'Name': '{}:\\Windows\\MiniDump'.format(disk)})
|
dumps.append({'Name': '{}:\\Windows\\MiniDump'.format(disk)})
|
||||||
|
|
||||||
# Check results before showing menu
|
# Check results before showing menu
|
||||||
if len(dumps) == 0:
|
if len(dumps) == 0:
|
||||||
print_error(' No BSoD / MiniDump paths found')
|
print_error(' No BSoD / MiniDump paths found')
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Menu
|
# Menu
|
||||||
selection = menu_select(
|
selection = menu_select(
|
||||||
title = 'Which BSoD / MiniDump path are we scanning?',
|
title = 'Which BSoD / MiniDump path are we scanning?',
|
||||||
main_entries = dumps)
|
main_entries = dumps)
|
||||||
return dumps[int(selection) - 1]['Name']
|
return dumps[int(selection) - 1]['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,68 +1,68 @@
|
||||||
# Wizard Kit PE: Settings - Main / Branding
|
# Wizard Kit PE: 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 PE'
|
KIT_NAME_FULL='Wizard Kit PE'
|
||||||
KIT_NAME_SHORT='WKPE'
|
KIT_NAME_SHORT='WKPE'
|
||||||
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_MESSAGE='Please let 2Shirt know by opening an issue on GitHub'
|
SUPPORT_MESSAGE='Please let 2Shirt know by opening an issue on GitHub'
|
||||||
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,0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
|
'RegEntry': r'0x10001,0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
|
||||||
'Share': '/srv/ClientInfo',
|
'Share': '/srv/ClientInfo',
|
||||||
'User': 'upload',
|
'User': 'upload',
|
||||||
}
|
}
|
||||||
OFFICE_SERVER = {
|
OFFICE_SERVER = {
|
||||||
'IP': OFFICE_SERVER_IP,
|
'IP': OFFICE_SERVER_IP,
|
||||||
'Name': 'ServerOne',
|
'Name': 'ServerOne',
|
||||||
'Mounted': False,
|
'Mounted': False,
|
||||||
'Share': 'Office',
|
'Share': 'Office',
|
||||||
'User': 'restore',
|
'User': 'restore',
|
||||||
'Pass': 'Abracadabra',
|
'Pass': 'Abracadabra',
|
||||||
}
|
}
|
||||||
QUICKBOOKS_SERVER = {
|
QUICKBOOKS_SERVER = {
|
||||||
'IP': QUICKBOOKS_SERVER_IP,
|
'IP': QUICKBOOKS_SERVER_IP,
|
||||||
'Name': 'ServerOne',
|
'Name': 'ServerOne',
|
||||||
'Mounted': False,
|
'Mounted': False,
|
||||||
'Share': 'QuickBooks',
|
'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.")
|
||||||
|
|
@ -1,55 +1,55 @@
|
||||||
# Wizard Kit PE: Settings - Tools
|
# Wizard Kit PE: Settings - Tools
|
||||||
|
|
||||||
TOOLS = {
|
TOOLS = {
|
||||||
# NOTE: BinDir will be prepended to these paths at runtime
|
# NOTE: BinDir will be prepended to these paths at runtime
|
||||||
'AIDA64': {
|
'AIDA64': {
|
||||||
'32': r'AIDA64\aida64.exe'},
|
'32': r'AIDA64\aida64.exe'},
|
||||||
'AutoRuns': {
|
'AutoRuns': {
|
||||||
'32': r'Autoruns\autoruns.exe',
|
'32': r'Autoruns\autoruns.exe',
|
||||||
'64': r'Autoruns\autoruns64.exe'},
|
'64': r'Autoruns\autoruns64.exe'},
|
||||||
'BleachBit': {
|
'BleachBit': {
|
||||||
'32': r'BleachBit\bleachbit_console.exe'},
|
'32': r'BleachBit\bleachbit_console.exe'},
|
||||||
'Caffeine': {
|
'Caffeine': {
|
||||||
'32': r'Caffeine\caffeine.exe'},
|
'32': r'Caffeine\caffeine.exe'},
|
||||||
'Du': {
|
'Du': {
|
||||||
'32': r'Du\du.exe',
|
'32': r'Du\du.exe',
|
||||||
'64': r'Du\du64.exe'},
|
'64': r'Du\du64.exe'},
|
||||||
'ERUNT': {
|
'ERUNT': {
|
||||||
'32': r'ERUNT\ERUNT.EXE'},
|
'32': r'ERUNT\ERUNT.EXE'},
|
||||||
'Everything': {
|
'Everything': {
|
||||||
'32': r'Everything\Everything.exe',
|
'32': r'Everything\Everything.exe',
|
||||||
'64': r'Everything\Everything64.exe'},
|
'64': r'Everything\Everything64.exe'},
|
||||||
'FastCopy': {
|
'FastCopy': {
|
||||||
'32': r'FastCopy\FastCopy.exe',
|
'32': r'FastCopy\FastCopy.exe',
|
||||||
'64': r'FastCopy\FastCopy64.exe'},
|
'64': r'FastCopy\FastCopy64.exe'},
|
||||||
'HitmanPro': {
|
'HitmanPro': {
|
||||||
'32': r'HitmanPro\HitmanPro.exe',
|
'32': r'HitmanPro\HitmanPro.exe',
|
||||||
'64': r'HitmanPro\HitmanPro64.exe'},
|
'64': r'HitmanPro\HitmanPro64.exe'},
|
||||||
'HWiNFO': {
|
'HWiNFO': {
|
||||||
'32': r'HWiNFO\HWiNFO.exe',
|
'32': r'HWiNFO\HWiNFO.exe',
|
||||||
'64': r'HWiNFO\HWiNFO64.exe'},
|
'64': r'HWiNFO\HWiNFO64.exe'},
|
||||||
'KVRT': {
|
'KVRT': {
|
||||||
'32': r'KVRT\KVRT.exe'},
|
'32': r'KVRT\KVRT.exe'},
|
||||||
'NotepadPlusPlus': {
|
'NotepadPlusPlus': {
|
||||||
'32': r'NotepadPlusPlus\notepadplusplus.exe'},
|
'32': r'NotepadPlusPlus\notepadplusplus.exe'},
|
||||||
'ProduKey': {
|
'ProduKey': {
|
||||||
'32': r'ProduKey\ProduKey.exe',
|
'32': r'ProduKey\ProduKey.exe',
|
||||||
'64': r'ProduKey\ProduKey64.exe'},
|
'64': r'ProduKey\ProduKey64.exe'},
|
||||||
'PuTTY-PSFTP': {
|
'PuTTY-PSFTP': {
|
||||||
'32': r'PuTTY\PSFTP.EXE'},
|
'32': r'PuTTY\PSFTP.EXE'},
|
||||||
'RKill': {
|
'RKill': {
|
||||||
'32': r'RKill\RKill.exe'},
|
'32': r'RKill\RKill.exe'},
|
||||||
'SevenZip': {
|
'SevenZip': {
|
||||||
'32': r'7-Zip\7za.exe',
|
'32': r'7-Zip\7za.exe',
|
||||||
'64': r'7-Zip\7za64.exe'},
|
'64': r'7-Zip\7za64.exe'},
|
||||||
'TDSSKiller': {
|
'TDSSKiller': {
|
||||||
'32': r'TDSSKiller\TDSSKiller.exe'},
|
'32': r'TDSSKiller\TDSSKiller.exe'},
|
||||||
'wimlib-imagex': {
|
'wimlib-imagex': {
|
||||||
'32': r'wimlib\x32\wimlib-imagex.exe',
|
'32': r'wimlib\x32\wimlib-imagex.exe',
|
||||||
'64': r'wimlib\x64\wimlib-imagex.exe'},
|
'64': r'wimlib\x64\wimlib-imagex.exe'},
|
||||||
'XMPlay': {
|
'XMPlay': {
|
||||||
'32': r'XMPlay\xmplay.exe'},
|
'32': r'XMPlay\xmplay.exe'},
|
||||||
}
|
}
|
||||||
|
|
||||||
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,23 +1,23 @@
|
||||||
# Wizard Kit PE: Root Menu
|
# Wizard Kit PE: Root Menu
|
||||||
|
|
||||||
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.winpe_menus import *
|
from functions.winpe_menus import *
|
||||||
init_global_vars()
|
init_global_vars()
|
||||||
set_title('{}: Root Menu'.format(KIT_NAME_FULL))
|
set_title('{}: Root Menu'.format(KIT_NAME_FULL))
|
||||||
global_vars['LogFile'] = r'{LogDir}\WinPE.log'.format(**global_vars)
|
global_vars['LogFile'] = r'{LogDir}\WinPE.log'.format(**global_vars)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
menu_root()
|
menu_root()
|
||||||
except GenericAbort:
|
except GenericAbort:
|
||||||
# pause('Press Enter to return to main menu... ')
|
# pause('Press Enter to return to main menu... ')
|
||||||
pass
|
pass
|
||||||
except SystemExit:
|
except SystemExit:
|
||||||
pass
|
pass
|
||||||
except:
|
except:
|
||||||
major_exception()
|
major_exception()
|
||||||
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -1,10 +1,3 @@
|
||||||
**/__pycache__/*
|
**/__pycache__/*
|
||||||
*.bak
|
BUILD
|
||||||
*.iso
|
OUT_PE
|
||||||
.bin/tmp
|
|
||||||
Drivers
|
|
||||||
Logs
|
|
||||||
Mount
|
|
||||||
PEFiles
|
|
||||||
WK/amd64/
|
|
||||||
WK/x86/
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[LaunchApp]
|
[LaunchApp]
|
||||||
[LaunchApps]
|
[LaunchApps]
|
||||||
wpeinit
|
wpeinit
|
||||||
wpeutil updatebootinfo
|
wpeutil updatebootinfo
|
||||||
cd /d "%SystemDrive%\.bin"
|
cd /d "%SystemDrive%\.bin"
|
||||||
"%SystemDrive%\.bin\ConEmu\ConEmu.exe", /cmd cmd /k cd "%SystemDrive%\.bin" & python "%SystemDrive%\.bin\Scripts\menu.py"
|
"%SystemDrive%\.bin\ConEmu\ConEmu.exe", /cmd cmd /k cd "%SystemDrive%\.bin" & python "%SystemDrive%\.bin\Scripts\menu.py"
|
||||||
2
.pe_items/System32/menu.cmd
Normal file
2
.pe_items/System32/menu.cmd
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
@echo off
|
||||||
|
python "%SystemDrive%\.bin\Scripts\menu.py"
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
[CPU-Z]
|
[CPU-Z]
|
||||||
VERSION=1.7.7.0
|
VERSION=1.7.7.0
|
||||||
TextFontName=
|
TextFontName=
|
||||||
TextFontSize=14
|
TextFontSize=14
|
||||||
TextFontColor=000080
|
TextFontColor=000080
|
||||||
LabelFontName=
|
LabelFontName=
|
||||||
LabelFontSize=14
|
LabelFontSize=14
|
||||||
ACPI=1
|
ACPI=1
|
||||||
PCI=1
|
PCI=1
|
||||||
MaxPCIBus=256
|
MaxPCIBus=256
|
||||||
DMI=1
|
DMI=1
|
||||||
Sensor=1
|
Sensor=1
|
||||||
SMBus=1
|
SMBus=1
|
||||||
Display=1
|
Display=1
|
||||||
UseDisplayAPI=1
|
UseDisplayAPI=1
|
||||||
BusClock=1
|
BusClock=1
|
||||||
Chipset=1
|
Chipset=1
|
||||||
SPD=1
|
SPD=1
|
||||||
XOC=0
|
XOC=0
|
||||||
CheckUpdates=0
|
CheckUpdates=0
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -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="no" quitOnEmpty="no" />
|
<GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" doubleClick2Close="no" vertical="no" multiLine="no" hide="no" quitOnEmpty="no" />
|
||||||
<GUIConfig name="ScintillaViewsSplitter">vertical</GUIConfig>
|
<GUIConfig name="ScintillaViewsSplitter">vertical</GUIConfig>
|
||||||
<GUIConfig name="UserDefineDlg" position="undocked">hide</GUIConfig>
|
<GUIConfig name="UserDefineDlg" position="undocked">hide</GUIConfig>
|
||||||
<GUIConfig name="TabSetting" replaceBySpace="yes" 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="yes" fontSize="no" bold="no" italic="no" underline="no" />
|
<GUIConfig name="globalOverride" fg="no" bg="no" font="yes" fontSize="no" bold="no" italic="no" underline="no" />
|
||||||
<GUIConfig name="auto-completion" autoCAction="3" triggerFromNbChar="1" autoCIgnoreNumbers="yes" funcParams="yes" />
|
<GUIConfig name="auto-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>
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
start "" %SystemDrive%\.bin\NotepadPlusPlus\notepadplusplus.exe %2 %3 %4 %5 %6 %7 %8 %9
|
start "" %SystemDrive%\.bin\NotepadPlusPlus\notepadplusplus.exe %2 %3 %4 %5 %6 %7 %8 %9
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,68 +1,68 @@
|
||||||
[Start]
|
[Start]
|
||||||
m_lang_id=1
|
m_lang_id=1
|
||||||
QDir_Id=0
|
QDir_Id=0
|
||||||
useColorStart=1
|
useColorStart=1
|
||||||
Als=12
|
Als=12
|
||||||
designe_mode=2
|
designe_mode=2
|
||||||
showCmd=3
|
showCmd=3
|
||||||
StartCrash=0
|
StartCrash=0
|
||||||
default_tab=
|
default_tab=
|
||||||
Max=1
|
Max=1
|
||||||
show_ext_in_type=1
|
show_ext_in_type=1
|
||||||
title_info=1
|
title_info=1
|
||||||
adresbar_style=1
|
adresbar_style=1
|
||||||
useTreeColor=1
|
useTreeColor=1
|
||||||
useColor=1
|
useColor=1
|
||||||
[Favoriten]
|
[Favoriten]
|
||||||
Ordner=.\Favoriten\
|
Ordner=.\Favoriten\
|
||||||
[Q]
|
[Q]
|
||||||
Link=.\Favoriten\Quick-Link\
|
Link=.\Favoriten\Quick-Link\
|
||||||
[Q-Dir]
|
[Q-Dir]
|
||||||
Lizenz=1
|
Lizenz=1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Vorschau]
|
[Vorschau]
|
||||||
Filter=*.avi;*.bmp;*.gif;*.ico;*.jpeg;*.jpg;*.mp*;*.pdf;*.png;*.wm*;
|
Filter=*.avi;*.bmp;*.gif;*.ico;*.jpeg;*.jpg;*.mp*;*.pdf;*.png;*.wm*;
|
||||||
[Filter2]
|
[Filter2]
|
||||||
0=#Hidden=1=-1=1=1=-1=0
|
0=#Hidden=1=-1=1=1=-1=0
|
||||||
1=*.zip;*.rar;*.gz;*.7z;=1=00AA00=-1=1=-1=0
|
1=*.zip;*.rar;*.gz;*.7z;=1=00AA00=-1=1=-1=0
|
||||||
2=*.mp*;*.avi;*.wma;=1=DD0058=-1=1=-1=0
|
2=*.mp*;*.avi;*.wma;=1=DD0058=-1=1=-1=0
|
||||||
3=#DIR=1=008800=-1=1=-1=0
|
3=#DIR=1=008800=-1=1=-1=0
|
||||||
4=*.jpg;*.jpeg;*.png,*.gif;*.bmp;*.ico=1=BB00BB=-1=1=-1=0
|
4=*.jpg;*.jpeg;*.png,*.gif;*.bmp;*.ico=1=BB00BB=-1=1=-1=0
|
||||||
5=*.html;*.htm;*.url=1=456789=-1=1=-1=0
|
5=*.html;*.htm;*.url=1=456789=-1=1=-1=0
|
||||||
6=*.pl;*.cgi;*.php;*.pdf;*.doc;*.rtf;*.xls=1=BB8844=-1=1=-1=0
|
6=*.pl;*.cgi;*.php;*.pdf;*.doc;*.rtf;*.xls=1=BB8844=-1=1=-1=0
|
||||||
7=*.cpp;*.hpp;*.h=1=DD0058=-1=1=-1=0
|
7=*.cpp;*.hpp;*.h=1=DD0058=-1=1=-1=0
|
||||||
8=*.exe;*.dll;*.bat=1=FF0000=-1=1=-1=0
|
8=*.exe;*.dll;*.bat=1=FF0000=-1=1=-1=0
|
||||||
9=*=1=0000BB=-1=1=-1=0
|
9=*=1=0000BB=-1=1=-1=0
|
||||||
10=#BG=1=-1=-1=1=-1=0
|
10=#BG=1=-1=-1=1=-1=0
|
||||||
11=#BG-A=1=-1=-1=1=-1=0
|
11=#BG-A=1=-1=-1=1=-1=0
|
||||||
[Ordner]
|
[Ordner]
|
||||||
Filter=
|
Filter=
|
||||||
[Column_OS_6.1_Ploder1]
|
[Column_OS_6.1_Ploder1]
|
||||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||||
Spatlen_291=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%00%00%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%EE%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0E%00%00%00%69%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%91%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0C%00%00%00%46%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%00%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-563719693|772
|
Spatlen_291=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%00%00%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%EE%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0E%00%00%00%69%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%91%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0C%00%00%00%46%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%00%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-563719693|772
|
||||||
[Column_OS_6.1_Ploder2]
|
[Column_OS_6.1_Ploder2]
|
||||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||||
[Column_OS_6.1_Ploder3]
|
[Column_OS_6.1_Ploder3]
|
||||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||||
[Column_OS_6.1_Ploder4]
|
[Column_OS_6.1_Ploder4]
|
||||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||||
[Programs_State]
|
[Programs_State]
|
||||||
Disable=0
|
Disable=0
|
||||||
[Quick-Links]
|
[Quick-Links]
|
||||||
WK=%systemdrive%/WK
|
WK=%systemdrive%/WK
|
||||||
[Options]
|
[Options]
|
||||||
Start=7
|
Start=7
|
||||||
[X-Size]
|
[X-Size]
|
||||||
mode=1
|
mode=1
|
||||||
dig=0
|
dig=0
|
||||||
fld_size=1
|
fld_size=1
|
||||||
ths_sep=1
|
ths_sep=1
|
||||||
type=0
|
type=0
|
||||||
precent=1
|
precent=1
|
||||||
ff_cnt=1
|
ff_cnt=1
|
||||||
block_no_focus=1
|
block_no_focus=1
|
||||||
nosort_fld_size=1
|
nosort_fld_size=1
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
@echo off
|
|
||||||
python "%SystemDrive%\.bin\Scripts\menu.py"
|
|
||||||
Loading…
Reference in a new issue