mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-14 22:55:52 -06:00
b2dc605098
* Update applications.json Fake app add made by linux fanboy * Compile Winutil * Update screen-install.png (#1464) * Compile Winutil * Update files (#1487) - Add detections for whether the image to be processed by MicroWin is Windows 10 or later - Add procedure to clear the indexes ComboBox (WinForms term) every time an ISO is specified Co-authored-by: Chris Titus <contact@christitus.com> * Lots of changes to Invoke-WPFFixesUpdate (#1467) * Add Guilded into Communication Tab (#1059) * Add Guilded into Communication Tab * Remove Choco Package due to there is no Chocolatey packages * : Add ZeroTier One to utilities menu (#1061) * Update applications.json (#1063) Update to add [SuperF4 - Stefan Sundin](https://stefansundin.github.io/superf4/), as mentioned in #374 [Choco - SuperF4](https://community.chocolatey.org/packages/superf4) maintained by Xav83. [WinGet - SuperF4](https://winstall.app/apps/StefanSundin.Superf4) SuperF4 and Winget package published by Stefan Sundin. * Update inputXML.xaml (#1062) Updated inputXML.xaml to account for addition of the SuperF4 software. * Added AIMP music player (#1064) * Add Ventoy (Chocolatey Only Package) & .NET Core Runtime (Winget & Chocolatey) (#1066) * Tidy up SuperF4 line. * Tidy up SuperF4 line. Used spaces instead of tabs. * Add dotnet 7.0.11 Desktop Runtime * Undone changes to SuperF4 line * Addition of Ventoy (chocolatey only) package * Comment Spacing, Indentation, and Capitalization (#1084) * Comment Spacing, Indentation, and Capitalization * Comment Grammar and Spacing Makes grammar in comments better and more consistent Adds space before comment and centers word in `Write-Host` commands * More Grammar and Formatting * Add some comments * Populate PlaceHolder comments in functions Files I found that has issues: Get-WinUtilRegistry.ps1 Install-WinUtilWinget.ps1 Invoke-WinUtilDarkMode.ps1 Remove-WinUtilAPPX.ps1 Test-WinUtilPackageManager.ps1 Update-WinUtilProgramWinget.ps1 Invoke-WPFUpdatessecurity.ps1 * Tweak a few more comments * Tweak another write-host statement * Undo Catch statement adjustment It's outside of the scope of this pull request * Fix indentation * Description, Progress Bar, and nuke step 10 - Added a full description of exactly what the function does - Replaced `Write-Host`s with multiple progress bars - Might've added too many, but I didn't want to add one for just a few of them as I want the user to be able to see all tasks that have been performed, just like with `Write-Host` - Removed Step 10 - Only applies to Windows 8 * Add Aggressive Parameter, Actually Force Check for Updates * Add aggressive parameter and add system repair step * Lots of changes * Revert Stuff This reverts commit199a92e26e
. Revert "Comment Spacing, Indentation, and Capitalization (#1084)" This reverts commitacc2b5b243
. Revert "Add Ventoy (Chocolatey Only Package) & .NET Core Runtime (Winget & Chocolatey) (#1066)" This reverts commit932ec6a0a0
. Revert "Added AIMP music player (#1064)" This reverts commitd1a4a67a45
. Revert "Update inputXML.xaml (#1062)" This reverts commit2db4cb556e
. Revert "Update applications.json (#1063)" This reverts commitce7edbd60d
. Revert ": Add ZeroTier One to utilities menu (#1061)" This reverts commit783a9657d0
. --------- Co-authored-by: Justawildwolf <62820836+blusewill@users.noreply.github.com> Co-authored-by: Tim Stone <github@tsdev.au> Co-authored-by: Will Barnard <5012445+mrwillbarnz@users.noreply.github.com> Co-authored-by: Ian Bassi <ian.bassi@outlook.com> * Compile Winutil * Invoke-WPFRunspace argument fix (#1497) * Compile Winutil * Fixes, Changes & Features Added (Broken links & Comments) (#1476) * Fixes & Changes (Broken links & Comments) - Snappy Driver Installer Origin Github source code deprecated. Replaced with SourceForge official source code site. - Spacedrive File Manager "spacedrive.org" not working. Changed to official site. **Recent Alpha ver 0.2.0 - crashing on install for Win10+ (not tested in "lower" win versions), may be better to remove overall or place on standby.** - Xtreme Download Manager Web Integration not working for chromium based browser. **Deprecated by Manifest V3, no official update release.** * Update applications.json Reverted winget for Spacedrive to original. Spacedrive.FileSystem -> spacedrive.Spacedrive * Fix for Portmaster [Wrong repo/winget] * Choco Safing Portmaster * Added Apps Request - Added TeCno Account Switcher Resolves Feature Request n.6° #1451 - Added ATLauncher - Added OP Auto Clicker - Added Motrix Download Manager Resolves Feature Request #1443 * Fixed Panel Numbers * Added Thonny Python IDE - Feature Request #1451 * Update applications.json fix few missing values * Update applications.json add winget thonny --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Fixed typo: latancy to latency (#1492) * Compile Winutil * Update inputXML.xaml (#1462) * Compile Winutil * Update .gitignore * add Dax Studio program to the Development category (#1500) * Compile Winutil * Add GitHub CLI to applications (#1460) * Added GitHub CLI to applications GitHub cli is the command line interface offered by github alongside github desktop. For more information see: https://github.com/cli/cli. Installation instructions taken from: https://github.com/cli/cli#windows * spelling: removed accidental dot * Compile Winutil * Add Vesktop to applications.json (#1461) * Add Vesktop to applications.json * fix syntax error --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Add some apps (#1466) * Add some apps * Fix WPFInstallopenhashtab --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * adds helix to development tools (#1469) * Compile Winutil * Add tooltips to config checkboxes (#1470) * Fix typo * Update winutil.ps1 * Update winutil.ps1 Add tooltips to checkboxes in config session and rewrite so to make things more clear as to what each tweak does * Revert "Update winutil.ps1" This reverts commitaaa69c473f
. * Add applications Added Sonarr, Radarr, Prowlarr and Bazarr in response to an github issue * Add applications Added applications to the GUI * Revert "Add applications" This reverts commite5fba2b4eb
. * Revert "Add applications" This reverts commit55ff75a65c
. * Edit xaml files Editing the xaml files so the changes persist upon compilation --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Add Mumble (#1481) Add Mumble to Communications category. * Compile Winutil * Added 'Stremio' (#1473) * Compile Winutil * Update applications.json Added 'Stremio' * Compile Winutil --------- Co-authored-by: REVENGE977 <REVENGE977@users.noreply.github.com> Co-authored-by: Chris Titus <contact@christitus.com> * Add the Mullvad Browser (#1475) * add mullvad browser * Missing tab * fix format --------- Co-authored-by: Kristjan <krissiomar@gmail.com> Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Added some Applications (#1484) * Update applications.json Add: - Rancher Desktop - ManicTime - qFlipper - ModernFlyouts - ZoomIt - StartAllBack - Wintoys - Minecraft Launcher * Update applications.json added: - Arduino IDE - Whatsapp * Update applications.json corrected spacing * Update applications.json fixed winget commands --------- Co-authored-by: Chris Titus <contact@christitus.com> * Added WinMerge Application in Development category. (#1485) WinMerge is an Open Source differencing and merging tool for Windows. * Compile Winutil * Fix few app links and add app (issues/1478) (#1495) * Update some app links * Update winutil.ps1 Date update * Add Syncthingtray Related to the issue: https://github.com/ChrisTitusTech/winutil/issues/1478 * Update applications.json update putty link --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Update applications.json * Compile Winutil * App fix and sort * Add Dual Monitor tools to applications.json (#1504) * Add Dual Monitor tools to applications.json * Update applications.json * Update applications.json --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil --------- Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> Co-authored-by: Samq64 <81489795+Samq64@users.noreply.github.com> Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com> Co-authored-by: Carter <60557606+Carterpersall@users.noreply.github.com> Co-authored-by: Justawildwolf <62820836+blusewill@users.noreply.github.com> Co-authored-by: Tim Stone <github@tsdev.au> Co-authored-by: Will Barnard <5012445+mrwillbarnz@users.noreply.github.com> Co-authored-by: Ian Bassi <ian.bassi@outlook.com> Co-authored-by: ogfrm <96927197+ogfrm@users.noreply.github.com> Co-authored-by: v-Kaefer <128633407+v-Kaefer@users.noreply.github.com> Co-authored-by: Shashank B N <117376750+Athena-2003@users.noreply.github.com> Co-authored-by: Alex Schwartz <alexschwartz01@gmail.com> Co-authored-by: André Gonzalez <lopescg@gmail.com> Co-authored-by: David Hardt <contact@hardt.ai> Co-authored-by: Choccy Milk <152878702+choccyy-milk@users.noreply.github.com> Co-authored-by: OmriOn <omri.hermon@gmail.com> Co-authored-by: Breno Fernandes <fernandesopa@gmail.com> Co-authored-by: Yuri Gabriel <97139700+Yuuh15@users.noreply.github.com> Co-authored-by: Filip Zurek <zurfil@tuta.com> Co-authored-by: H4D3S <32039975+REVENGE977@users.noreply.github.com> Co-authored-by: REVENGE977 <REVENGE977@users.noreply.github.com> Co-authored-by: KristjanOmar <117899282+KristjanOmar@users.noreply.github.com> Co-authored-by: Kristjan <krissiomar@gmail.com> Co-authored-by: MyDrift <personal@mdiana.ch> Co-authored-by: Akash Singh <52990376+Akash-S1999@users.noreply.github.com> Co-authored-by: Roc Wang <rocwang911@gmail.com> Co-authored-by: José Roberto Sánchez <jose_roberto_ss@hotmail.com>
410 lines
20 KiB
PowerShell
410 lines
20 KiB
PowerShell
function Invoke-WPFMicrowin {
|
|
<#
|
|
.DESCRIPTION
|
|
Invoke MicroWin routines...
|
|
#>
|
|
|
|
if($sync.ProcessRunning) {
|
|
$msg = "GetIso process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
# Define the constants for Windows API
|
|
Add-Type @"
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
public class PowerManagement {
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
|
|
|
|
[FlagsAttribute]
|
|
public enum EXECUTION_STATE : uint {
|
|
ES_SYSTEM_REQUIRED = 0x00000001,
|
|
ES_DISPLAY_REQUIRED = 0x00000002,
|
|
ES_CONTINUOUS = 0x80000000,
|
|
}
|
|
}
|
|
"@
|
|
|
|
# Prevent the machine from sleeping
|
|
[PowerManagement]::SetThreadExecutionState([PowerManagement]::EXECUTION_STATE::ES_CONTINUOUS -bor [PowerManagement]::EXECUTION_STATE::ES_SYSTEM_REQUIRED -bor [PowerManagement]::EXECUTION_STATE::ES_DISPLAY_REQUIRED)
|
|
|
|
# Ask the user where to save the file
|
|
$SaveDialog = New-Object System.Windows.Forms.SaveFileDialog
|
|
$SaveDialog.InitialDirectory = [Environment]::GetFolderPath('Desktop')
|
|
$SaveDialog.Filter = "ISO images (*.iso)|*.iso"
|
|
$SaveDialog.ShowDialog() | Out-Null
|
|
|
|
if ($SaveDialog.FileName -eq "") {
|
|
Write-Host "No file name for the target image was specified"
|
|
return
|
|
}
|
|
|
|
Write-Host "Target ISO location: $($SaveDialog.FileName)"
|
|
|
|
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
|
Write-Host "Index chosen: '$index' from $($sync.MicrowinWindowsFlavors.SelectedValue)"
|
|
|
|
$keepPackages = $sync.WPFMicrowinKeepProvisionedPackages.IsChecked
|
|
$keepProvisionedPackages = $sync.WPFMicrowinKeepAppxPackages.IsChecked
|
|
$keepDefender = $sync.WPFMicrowinKeepDefender.IsChecked
|
|
$keepEdge = $sync.WPFMicrowinKeepEdge.IsChecked
|
|
$copyToUSB = $sync.WPFMicrowinCopyToUsb.IsChecked
|
|
$injectDrivers = $sync.MicrowinInjectDrivers.IsChecked
|
|
|
|
$mountDir = $sync.MicrowinMountDir.Text
|
|
$scratchDir = $sync.MicrowinScratchDir.Text
|
|
|
|
$imgVersion = (Get-WindowsImage -ImagePath $mountDir\sources\install.wim -Index $index).Version
|
|
|
|
# Detect image version to avoid performing MicroWin processing on Windows 8 and earlier
|
|
if ((Is-CompatibleImage $imgVersion) -eq $false)
|
|
{
|
|
$msg = "This image is not compatible with MicroWin processing. Make sure it isn't a Windows 8 or earlier image."
|
|
$dlg_msg = $msg + "`n`nIf you want more information, the version of the image selected is $($imgVersion)`n`nIf an image has been incorrectly marked as incompatible, report an issue to the developers."
|
|
Write-Host $msg
|
|
[System.Windows.MessageBox]::Show($dlg_msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Exclamation)
|
|
return
|
|
}
|
|
|
|
$mountDirExists = Test-Path $mountDir
|
|
$scratchDirExists = Test-Path $scratchDir
|
|
if (-not $mountDirExists -or -not $scratchDirExists)
|
|
{
|
|
Write-Error "Required directories '$mountDirExists' '$scratchDirExists' and do not exist."
|
|
return
|
|
}
|
|
|
|
try {
|
|
|
|
Write-Host "Mounting Windows image. This may take a while."
|
|
dism /mount-image /imagefile:$mountDir\sources\install.wim /index:$index /mountdir:$scratchDir
|
|
Write-Host "Mounting complete! Performing removal of applications..."
|
|
|
|
if ($injectDrivers)
|
|
{
|
|
$driverPath = $sync.MicrowinDriverLocation.Text
|
|
if (Test-Path $driverPath)
|
|
{
|
|
Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) "
|
|
dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Path to drivers is invalid continuing without driver injection"
|
|
}
|
|
}
|
|
|
|
Write-Host "Remove Features from the image"
|
|
Remove-Features -keepDefender:$keepDefender
|
|
Write-Host "Removing features complete!"
|
|
|
|
Write-Host "Removing Appx Bloat"
|
|
if (!$keepPackages)
|
|
{
|
|
Remove-Packages
|
|
}
|
|
if (!$keepProvisionedPackages)
|
|
{
|
|
Remove-ProvisionedPackages -keepSecurity:$keepDefender
|
|
}
|
|
|
|
# special code, for some reason when you try to delete some inbox apps
|
|
# we have to get and delete log files directory.
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\LogFiles\WMI\RtBackup" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\WebThreatDefSvc" -Directory
|
|
|
|
# Defender is hidden in 2 places we removed a feature above now need to remove it from the disk
|
|
if (!$keepDefender)
|
|
{
|
|
Write-Host "Removing Defender"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Defender" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Defender"
|
|
}
|
|
if (!$keepEdge)
|
|
{
|
|
Write-Host "Removing Edge"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Microsoft" -mask "*edge*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Microsoft" -mask "*edge*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*edge*" -Directory
|
|
}
|
|
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\DiagTrack" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\InboxApps" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\SecurityHealthSystray.exe"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\LocationNotificationWindows.exe"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Photo Viewer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Photo Viewer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Media Player" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Media Player" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Mail" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Mail" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Internet Explorer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Internet Explorer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\GameBarPresenceWriter"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\OneDriveSetup.exe"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\OneDrive.ico"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*Windows.Search*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*narratorquickstart*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*Xbox*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*ParentalControls*" -Directory
|
|
Write-Host "Removal complete!"
|
|
|
|
Write-Host "Create unattend.xml"
|
|
New-Unattend
|
|
Write-Host "Done Create unattend.xml"
|
|
Write-Host "Copy unattend.xml file into the ISO"
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\Panther"
|
|
Copy-Item "$env:temp\unattend.xml" "$($scratchDir)\Windows\Panther\unattend.xml" -force
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\System32\Sysprep"
|
|
Copy-Item "$env:temp\unattend.xml" "$($scratchDir)\Windows\System32\Sysprep\unattend.xml" -force
|
|
Copy-Item "$env:temp\unattend.xml" "$($scratchDir)\unattend.xml" -force
|
|
Write-Host "Done Copy unattend.xml"
|
|
|
|
Write-Host "Create FirstRun"
|
|
New-FirstRun
|
|
Write-Host "Done create FirstRun"
|
|
Write-Host "Copy FirstRun.ps1 into the ISO"
|
|
Copy-Item "$env:temp\FirstStartup.ps1" "$($scratchDir)\Windows\FirstStartup.ps1" -force
|
|
Write-Host "Done copy FirstRun.ps1"
|
|
|
|
Write-Host "Copy link to winutil.ps1 into the ISO"
|
|
$desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop"
|
|
New-Item -ItemType Directory -Force -Path "$desktopDir"
|
|
dism /English /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default"
|
|
$command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'irm https://christitus.com/win | iex'"
|
|
$shortcutPath = "$desktopDir\WinUtil.lnk"
|
|
$shell = New-Object -ComObject WScript.Shell
|
|
$shortcut = $shell.CreateShortcut($shortcutPath)
|
|
|
|
if (Test-Path -Path "$env:TEMP\cttlogo.png")
|
|
{
|
|
$pngPath = "$env:TEMP\cttlogo.png"
|
|
$icoPath = "$env:TEMP\cttlogo.ico"
|
|
ConvertTo-Icon -bitmapPath $pngPath -iconPath $icoPath
|
|
Write-Host "ICO file created at: $icoPath"
|
|
Copy-Item "$env:TEMP\cttlogo.png" "$($scratchDir)\Windows\cttlogo.png" -force
|
|
Copy-Item "$env:TEMP\cttlogo.ico" "$($scratchDir)\Windows\cttlogo.ico" -force
|
|
$shortcut.IconLocation = "c:\Windows\cttlogo.ico"
|
|
}
|
|
|
|
$shortcut.TargetPath = "powershell.exe"
|
|
$shortcut.Arguments = "-NoProfile -ExecutionPolicy Bypass -Command `"$command`""
|
|
$shortcut.Save()
|
|
Write-Host "Shortcut to winutil created at: $shortcutPath"
|
|
# *************************** Automation black ***************************
|
|
|
|
Write-Host "Copy checkinstall.cmd into the ISO"
|
|
New-CheckInstall
|
|
Copy-Item "$env:temp\checkinstall.cmd" "$($scratchDir)\Windows\checkinstall.cmd" -force
|
|
Write-Host "Done copy checkinstall.cmd"
|
|
|
|
Write-Host "Creating a directory that allows to bypass Wifi setup"
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\System32\OOBE\BYPASSNRO"
|
|
|
|
Write-Host "Loading registry"
|
|
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS"
|
|
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default"
|
|
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat"
|
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
|
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM"
|
|
|
|
Write-Host "Disabling Teams"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v "ConfigureChatAutoInstall" /t REG_DWORD /d 0 /f >$null 2>&1
|
|
reg add "HKLM\zSOFTWARE\Policies\Microsoft\Windows\Windows Chat" /v ChatIcon /t REG_DWORD /d 2 /f >$null 2>&1
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f >$null 2>&1
|
|
reg query "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v "ConfigureChatAutoInstall" >$null 2>&1
|
|
# Write-Host Error code $LASTEXITCODE
|
|
Write-Host "Done disabling Teams"
|
|
|
|
Write-Host "Bypassing system requirements (system image)"
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassCPUCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassRAMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassStorageCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
|
|
|
if (!$keepEdge)
|
|
{
|
|
Write-Host "Removing Edge icon from taskbar"
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Favorites" /f >$null 2>&1
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "FavoritesChanges" /f >$null 2>&1
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Pinned" /f >$null 2>&1
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "LayoutCycle" /f >$null 2>&1
|
|
Write-Host "Edge icon removed from taskbar"
|
|
}
|
|
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
|
|
Write-Host "Setting all services to start manually"
|
|
reg add "HKLM\zSOFTWARE\CurrentControlSet\Services" /v Start /t REG_DWORD /d 3 /f
|
|
# Write-Host $LASTEXITCODE
|
|
|
|
Write-Host "Enabling Local Accounts on OOBE"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v "BypassNRO" /t REG_DWORD /d "1" /f
|
|
|
|
Write-Host "Disabling Sponsored Apps"
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OemPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSOFTWARE\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSOFTWARE\Microsoft\PolicyManager\current\device\Start" /v "ConfigureStartPins" /t REG_SZ /d '{\"pinnedList\": [{}]}' /f
|
|
Write-Host "Done removing Sponsored Apps"
|
|
|
|
Write-Host "Disabling Reserved Storage"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager" /v "ShippedWithReserves" /t REG_DWORD /d 0 /f
|
|
|
|
Write-Host "Changing theme to dark. This only works on Activated Windows"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "AppsUseLightTheme" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
|
|
|
} catch {
|
|
Write-Error "An unexpected error occurred: $_"
|
|
} finally {
|
|
Write-Host "Unmounting Registry..."
|
|
reg unload HKLM\zCOMPONENTS
|
|
reg unload HKLM\zDEFAULT
|
|
reg unload HKLM\zNTUSER
|
|
reg unload HKLM\zSOFTWARE
|
|
reg unload HKLM\zSYSTEM
|
|
|
|
Write-Host "Cleaning up image..."
|
|
dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase
|
|
Write-Host "Cleanup complete."
|
|
|
|
Write-Host "Unmounting image..."
|
|
dism /unmount-image /mountdir:$scratchDir /commit
|
|
}
|
|
|
|
try {
|
|
|
|
Write-Host "Exporting image into $mountDir\sources\install2.wim"
|
|
dism /Export-Image /SourceImageFile:"$mountDir\sources\install.wim" /SourceIndex:$index /DestinationImageFile:"$mountDir\sources\install2.wim" /compress:max
|
|
Write-Host "Remove old '$mountDir\sources\install.wim' and rename $mountDir\sources\install2.wim"
|
|
Remove-Item "$mountDir\sources\install.wim"
|
|
Rename-Item "$mountDir\sources\install2.wim" "$mountDir\sources\install.wim"
|
|
|
|
if (-not (Test-Path -Path "$mountDir\sources\install.wim"))
|
|
{
|
|
Write-Error "Something went wrong and '$mountDir\sources\install.wim' doesn't exist. Please report this bug to the devs"
|
|
return
|
|
}
|
|
Write-Host "Windows image completed. Continuing with boot.wim."
|
|
|
|
# Next step boot image
|
|
Write-Host "Mounting boot image $mountDir\sources\boot.wim into $scratchDir"
|
|
dism /mount-image /imagefile:"$mountDir\sources\boot.wim" /index:2 /mountdir:"$scratchDir"
|
|
|
|
if ($injectDrivers)
|
|
{
|
|
$driverPath = $sync.MicrowinDriverLocation.Text
|
|
if (Test-Path $driverPath)
|
|
{
|
|
Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) "
|
|
dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Path to drivers is invalid continuing without driver injection"
|
|
}
|
|
}
|
|
|
|
Write-Host "Loading registry..."
|
|
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS" >$null
|
|
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default" >$null
|
|
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat" >$null
|
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE" >$null
|
|
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM" >$null
|
|
Write-Host "Bypassing system requirements on the setup image"
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassCPUCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassRAMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassStorageCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
|
# Fix Computer Restarted Unexpectedly Error on New Bare Metal Install
|
|
reg add "HKLM\zSYSTEM\Setup\Status\ChildCompletion" /v "setup.exe" /t REG_DWORD /d 3 /f
|
|
} catch {
|
|
Write-Error "An unexpected error occurred: $_"
|
|
} finally {
|
|
Write-Host "Unmounting Registry..."
|
|
reg unload HKLM\zCOMPONENTS
|
|
reg unload HKLM\zDEFAULT
|
|
reg unload HKLM\zNTUSER
|
|
reg unload HKLM\zSOFTWARE
|
|
reg unload HKLM\zSYSTEM
|
|
|
|
Write-Host "Unmounting image..."
|
|
dism /unmount-image /mountdir:$scratchDir /commit
|
|
|
|
Write-Host "Creating ISO image"
|
|
|
|
# if we downloaded oscdimg from github it will be in the temp directory so use it
|
|
# if it is not in temp it is part of ADK and is in global PATH so just set it to oscdimg.exe
|
|
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
|
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
|
if (!$oscdImgFound)
|
|
{
|
|
$oscdimgPath = "oscdimg.exe"
|
|
}
|
|
|
|
Write-Host "[INFO] Using oscdimg.exe from: $oscdimgPath"
|
|
#& oscdimg.exe -m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir $env:temp\microwin.iso
|
|
#Start-Process -FilePath $oscdimgPath -ArgumentList "-m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir $env:temp\microwin.iso" -NoNewWindow -Wait
|
|
#Start-Process -FilePath $oscdimgPath -ArgumentList '-m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir `"$($SaveDialog.FileName)`"' -NoNewWindow -Wait
|
|
$oscdimgProc = New-Object System.Diagnostics.Process
|
|
$oscdimgProc.StartInfo.FileName = $oscdimgPath
|
|
$oscdimgProc.StartInfo.Arguments = "-m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir `"$($SaveDialog.FileName)`""
|
|
$oscdimgProc.StartInfo.CreateNoWindow = $True
|
|
$oscdimgProc.StartInfo.WindowStyle = "Hidden"
|
|
$oscdimgProc.StartInfo.UseShellExecute = $False
|
|
$oscdimgProc.Start()
|
|
$oscdimgProc.WaitForExit()
|
|
|
|
if ($copyToUSB)
|
|
{
|
|
Write-Host "Copying target ISO to the USB drive"
|
|
#Copy-ToUSB("$env:temp\microwin.iso")
|
|
Copy-ToUSB("$($SaveDialog.FileName)")
|
|
if ($?) { Write-Host "Done Copying target ISO to USB drive!" } else { Write-Host "ISO copy failed." }
|
|
}
|
|
|
|
Write-Host " _____ "
|
|
Write-Host "(____ \ "
|
|
Write-Host " _ \ \ ___ ____ ____ "
|
|
Write-Host "| | | / _ \| _ \ / _ ) "
|
|
Write-Host "| |__/ / |_| | | | ( (/ / "
|
|
Write-Host "|_____/ \___/|_| |_|\____) "
|
|
|
|
# Check if the ISO was successfully created - CTT edit
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-Host "`n`nPerforming Cleanup..."
|
|
Remove-Item -Recurse -Force "$($scratchDir)"
|
|
Remove-Item -Recurse -Force "$($mountDir)"
|
|
#$msg = "Done. ISO image is located here: $env:temp\microwin.iso"
|
|
$msg = "Done. ISO image is located here: $($SaveDialog.FileName)"
|
|
Write-Host $msg
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Information)
|
|
} else {
|
|
Write-Host "ISO creation failed. The "$($mountDir)" directory has not been removed."
|
|
}
|
|
|
|
$sync.MicrowinOptionsPanel.Visibility = 'Collapsed'
|
|
|
|
#$sync.MicrowinFinalIsoLocation.Text = "$env:temp\microwin.iso"
|
|
$sync.MicrowinFinalIsoLocation.Text = "$($SaveDialog.FileName)"
|
|
# Allow the machine to sleep again (optional)
|
|
[PowerManagement]::SetThreadExecutionState(0)
|
|
$sync.ProcessRunning = $false
|
|
}
|
|
} |