mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-24 03:45:30 +00:00
[MicroWin] First Anniversary Special PR (#2853)
* Fix minor denomination problem for packages * Fix incorrect filter of OS packages Packages such as the metadata for capabilities (FoDs) or the foundation package were being incorrectly filtered. They were part of `Remove-ProvisionedPackages`, which only removes AppX packages. These are **OS packages**, something completely different * Fixed indentation * Exclude `Microsoft-RemoteDesktopConnection` Exclude that from feature list. Fixes #2705 * Remove DISM from AppX removal listings DISM is a system component. It will never be an AppX package. This is unnecessary * Improve error handling for file copy * Remove space (for some reason) Compilation script is very adamant that this should be this way * Exclude the VBSCRIPT Features on Demand from pkgs Exclude the VBSCRIPT feature on demand (or capability) from package removal. Some people were reporting that excluding VBSCRIPT fixed problems with AMD chipset drivers on MicroWin * Exclude Recall from feature listings This fixes problems people were experiencing where the file explorer would go back to the Windows 10 layout * Improve error output * Add 24H2 to release list * Detect Windows 10 and show compatibility dialog * Disable some insane desktop stuff on Windows 10 I've only been able to disable Search Highlights. News and Interests persists * Change policy for News and Interests Avoid showing "Access denied" errors for this. This is still broken - News and Interests is still there. [louder]Linus Torvalds curse word here[/louder] Anyway, if someone wants to give setting this up a shot, send me suggestions on how to do this * Write suggestion for AV * Hold errored packages in a list Items are being added correctly, but I can't get that to show to the end-user. Perhaps a different approach will work * Remove older Windows versions from download list Sadly, the links for these had been removed by Microsoft, in favor of the latest version (24H2) * Add sorting to error messages Thanks @og-mrk for the suggestion and the patch (even though I applied it myself) * Make error messages easier to view (#1) * Make error messages easier to view * Improve error output --------- Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com> * Disable Recall on first run Keeps the Explorer look of modern Windows 11 builds whilst removing the Recall feature (which I think will manifest itself on PCs with Lunar Lake processors) * Replace "C:\" with environment variable This still works on single-boot configurations, but presents a more dynamic approach * Fix Volume Mixer issues and removal of leftovers Fix originally from @MyDrift-user on #2856 * Add missing piece to last commit * Default to downloading OSCDIMG from GitHub repo Chocolatey may not be the way to help us detect the presence of OSCDIMG. Everyone, unless someone REALLY uses old deployment technology, has moved to Windows ADK 10.0 * Fix Sorting of Errored Packages by using 'Sort-Object' instead of 'IComparer' approach (#2) Fixes startup issues in PWSH 7 * Remove reference to News and Interests from output Even though the logic is still there, it doesn't work. I don't want to deal with that anymore. Search Highlights, on the other hand, is removed very easily * Exclude License packages from removal They throw an "Access denied" error when trying to remove them. This is a timesaver --------- Co-authored-by: Mr.k <mineshtine28546271@gmail.com>
This commit is contained in:
parent
1deb863f40
commit
1404efab26
@ -19,10 +19,10 @@ function Copy-Files {
|
|||||||
try {
|
try {
|
||||||
|
|
||||||
$files = Get-ChildItem -Path $path -Recurse:$recurse
|
$files = Get-ChildItem -Path $path -Recurse:$recurse
|
||||||
Write-Host "Copy $($files.Count)(s) from $path to $destination"
|
Write-Host "Copy $($files.Count) file(s) from $path to $destination"
|
||||||
|
|
||||||
foreach ($file in $files) {
|
foreach ($file in $files) {
|
||||||
$status = "Copy files {0} on {1}: {2}" -f $counter, $files.Count, $file.Name
|
$status = "Copying file {0} of {1}: {2}" -f $counter, $files.Count, $file.Name
|
||||||
Write-Progress -Activity "Copy Windows files" -Status $status -PercentComplete ($counter++/$files.count*100)
|
Write-Progress -Activity "Copy Windows files" -Status $status -PercentComplete ($counter++/$files.count*100)
|
||||||
$restpath = $file.FullName -Replace $path, ''
|
$restpath = $file.FullName -Replace $path, ''
|
||||||
|
|
||||||
@ -37,7 +37,11 @@ function Copy-Files {
|
|||||||
}
|
}
|
||||||
Write-Progress -Activity "Copy Windows files" -Status "Ready" -Completed
|
Write-Progress -Activity "Copy Windows files" -Status "Ready" -Completed
|
||||||
} catch {
|
} catch {
|
||||||
Write-Warning "Unable to Copy all the files due to unhandled exception"
|
Write-Host "Unable to Copy all the files due to an unhandled exception" -ForegroundColor Yellow
|
||||||
Write-Warning $psitem.Exception.StackTrace
|
Write-Host "Error information: $($_.Exception.Message)`n" -ForegroundColor Yellow
|
||||||
|
Write-Host "Additional information:" -ForegroundColor Yellow
|
||||||
|
Write-Host $PSItem.Exception.StackTrace
|
||||||
|
# Write possible suggestions
|
||||||
|
Write-Host "`nIf you are using an antivirus, try configuring exclusions"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,17 @@ function Test-CompatibleImage() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ErroredPackage {
|
||||||
|
[string]$PackageName
|
||||||
|
[string]$ErrorMessage
|
||||||
|
ErroredPackage() { $this.Init(@{} )}
|
||||||
|
# Constructor for packages that have errored out
|
||||||
|
ErroredPackage([string]$pkgName, [string]$reason) {
|
||||||
|
$this.PackageName = $pkgName
|
||||||
|
$this.ErrorMessage = $reason
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function Get-FidoLangFromCulture {
|
function Get-FidoLangFromCulture {
|
||||||
|
|
||||||
param (
|
param (
|
||||||
@ -98,6 +109,8 @@ function Remove-Features() {
|
|||||||
$_.FeatureName -NotLike "*Media*" -AND
|
$_.FeatureName -NotLike "*Media*" -AND
|
||||||
$_.FeatureName -NotLike "*NFS*" -AND
|
$_.FeatureName -NotLike "*NFS*" -AND
|
||||||
$_.FeatureName -NotLike "*SearchEngine*" -AND
|
$_.FeatureName -NotLike "*SearchEngine*" -AND
|
||||||
|
$_.FeatureName -NotLike "*RemoteDesktop*" -AND
|
||||||
|
$_.FeatureName -NotLike "*Recall*" -AND
|
||||||
$_.State -ne "Disabled"
|
$_.State -ne "Disabled"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,27 +170,54 @@ function Remove-Packages {
|
|||||||
$_ -NotLike "*WMIC*" -AND
|
$_ -NotLike "*WMIC*" -AND
|
||||||
$_ -NotLike "*UI.XaML*" -AND
|
$_ -NotLike "*UI.XaML*" -AND
|
||||||
$_ -NotLike "*Ethernet*" -AND
|
$_ -NotLike "*Ethernet*" -AND
|
||||||
$_ -NotLike "*Wifi*"
|
$_ -NotLike "*Wifi*" -AND
|
||||||
|
$_ -NotLike "*FodMetadata*" -AND
|
||||||
|
$_ -NotLike "*Foundation*" -AND
|
||||||
|
$_ -NotLike "*LanguageFeatures*" -AND
|
||||||
|
$_ -NotLike "*VBSCRIPT*" -AND
|
||||||
|
$_ -NotLike "*License*"
|
||||||
}
|
}
|
||||||
|
|
||||||
$failedCount = 0
|
$failedCount = 0
|
||||||
|
|
||||||
|
$erroredPackages = [System.Collections.Generic.List[ErroredPackage]]::new()
|
||||||
|
|
||||||
foreach ($pkg in $pkglist) {
|
foreach ($pkg in $pkglist) {
|
||||||
try {
|
try {
|
||||||
$status = "Removing $pkg"
|
$status = "Removing $pkg"
|
||||||
Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$pkglist.Count*100)
|
Write-Progress -Activity "Removing Packages" -Status $status -PercentComplete ($counter++/$pkglist.Count*100)
|
||||||
Remove-WindowsPackage -Path "$scratchDir" -PackageName $pkg -NoRestart -ErrorAction SilentlyContinue
|
Remove-WindowsPackage -Path "$scratchDir" -PackageName $pkg -NoRestart -ErrorAction SilentlyContinue
|
||||||
} catch {
|
} catch {
|
||||||
# This can happen if the package that is being removed is a permanent one, like FodMetadata
|
# This can happen if the package that is being removed is a permanent one
|
||||||
Write-Host "Could not remove OS package $($pkg)"
|
$erroredPackages.Add([ErroredPackage]::new($pkg, $_.Exception.Message))
|
||||||
$failedCount += 1
|
$failedCount += 1
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed
|
Write-Progress -Activity "Removing Packages" -Status "Ready" -Completed
|
||||||
if ($failedCount -gt 0)
|
if ($failedCount -gt 0)
|
||||||
{
|
{
|
||||||
Write-Host "Some packages could not be removed. Do not worry: your image will still work fine. This can happen if the package is permanent or has been superseded by a newer one."
|
Write-Host "$failedCount package(s) could not be removed. Your image will still work fine, however. Below is information on what packages failed to be removed and why."
|
||||||
|
if ($erroredPackages.Count -gt 0)
|
||||||
|
{
|
||||||
|
$erroredPackages = $erroredPackages | Sort-Object -Property ErrorMessage
|
||||||
|
|
||||||
|
$previousErroredPackage = $erroredPackages[0]
|
||||||
|
$counter = 0
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "- $($previousErroredPackage.ErrorMessage)"
|
||||||
|
foreach ($erroredPackage in $erroredPackages) {
|
||||||
|
if ($erroredPackage.ErrorMessage -ne $previousErroredPackage.ErrorMessage) {
|
||||||
|
Write-Host ""
|
||||||
|
$counter = 0
|
||||||
|
Write-Host "- $($erroredPackage.ErrorMessage)"
|
||||||
|
}
|
||||||
|
$counter += 1
|
||||||
|
Write-Host " $counter) $($erroredPackage.PackageName)"
|
||||||
|
$previousErroredPackage = $erroredPackage
|
||||||
|
}
|
||||||
|
Write-Host ""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
Write-Host "Unable to get information about the packages. MicroWin processing will continue, but packages will not be processed"
|
Write-Host "Unable to get information about the packages. MicroWin processing will continue, but packages will not be processed"
|
||||||
@ -201,13 +241,8 @@ function Remove-ProvisionedPackages() {
|
|||||||
$appxProvisionedPackages = Get-AppxProvisionedPackage -Path "$($scratchDir)" | Where-Object {
|
$appxProvisionedPackages = Get-AppxProvisionedPackage -Path "$($scratchDir)" | Where-Object {
|
||||||
$_.PackageName -NotLike "*AppInstaller*" -AND
|
$_.PackageName -NotLike "*AppInstaller*" -AND
|
||||||
$_.PackageName -NotLike "*Store*" -and
|
$_.PackageName -NotLike "*Store*" -and
|
||||||
$_.PackageName -NotLike "*dism*" -and
|
|
||||||
$_.PackageName -NotLike "*Foundation*" -and
|
|
||||||
$_.PackageName -NotLike "*FodMetadata*" -and
|
|
||||||
$_.PackageName -NotLike "*LanguageFeatures*" -and
|
|
||||||
$_.PackageName -NotLike "*Notepad*" -and
|
$_.PackageName -NotLike "*Notepad*" -and
|
||||||
$_.PackageName -NotLike "*Printing*" -and
|
$_.PackageName -NotLike "*Printing*" -and
|
||||||
$_.PackageName -NotLike "*Foundation*" -and
|
|
||||||
$_.PackageName -NotLike "*YourPhone*" -and
|
$_.PackageName -NotLike "*YourPhone*" -and
|
||||||
$_.PackageName -NotLike "*Xbox*" -and
|
$_.PackageName -NotLike "*Xbox*" -and
|
||||||
$_.PackageName -NotLike "*WindowsTerminal*" -and
|
$_.PackageName -NotLike "*WindowsTerminal*" -and
|
||||||
@ -625,70 +660,70 @@ function New-CheckInstall {
|
|||||||
# using here string to embedd firstrun
|
# using here string to embedd firstrun
|
||||||
$checkInstall = @'
|
$checkInstall = @'
|
||||||
@echo off
|
@echo off
|
||||||
if exist "C:\windows\cpu.txt" (
|
if exist "%HOMEDRIVE%\windows\cpu.txt" (
|
||||||
echo C:\windows\cpu.txt exists
|
echo %HOMEDRIVE%\windows\cpu.txt exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\windows\cpu.txt does not exist
|
echo %HOMEDRIVE%\windows\cpu.txt does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\windows\SerialNumber.txt" (
|
if exist "%HOMEDRIVE%\windows\SerialNumber.txt" (
|
||||||
echo C:\windows\SerialNumber.txt exists
|
echo %HOMEDRIVE%\windows\SerialNumber.txt exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\windows\SerialNumber.txt does not exist
|
echo %HOMEDRIVE%\windows\SerialNumber.txt does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\unattend.xml" (
|
if exist "%HOMEDRIVE%\unattend.xml" (
|
||||||
echo C:\unattend.xml exists
|
echo %HOMEDRIVE%\unattend.xml exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\unattend.xml does not exist
|
echo %HOMEDRIVE%\unattend.xml does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\Setup\Scripts\SetupComplete.cmd" (
|
if exist "%HOMEDRIVE%\Windows\Setup\Scripts\SetupComplete.cmd" (
|
||||||
echo C:\Windows\Setup\Scripts\SetupComplete.cmd exists
|
echo %HOMEDRIVE%\Windows\Setup\Scripts\SetupComplete.cmd exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\Setup\Scripts\SetupComplete.cmd does not exist
|
echo %HOMEDRIVE%\Windows\Setup\Scripts\SetupComplete.cmd does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\Panther\unattend.xml" (
|
if exist "%HOMEDRIVE%\Windows\Panther\unattend.xml" (
|
||||||
echo C:\Windows\Panther\unattend.xml exists
|
echo %HOMEDRIVE%\Windows\Panther\unattend.xml exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\Panther\unattend.xml does not exist
|
echo %HOMEDRIVE%\Windows\Panther\unattend.xml does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\System32\Sysprep\unattend.xml" (
|
if exist "%HOMEDRIVE%\Windows\System32\Sysprep\unattend.xml" (
|
||||||
echo C:\Windows\System32\Sysprep\unattend.xml exists
|
echo %HOMEDRIVE%\Windows\System32\Sysprep\unattend.xml exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\System32\Sysprep\unattend.xml does not exist
|
echo %HOMEDRIVE%\Windows\System32\Sysprep\unattend.xml does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\FirstStartup.ps1" (
|
if exist "%HOMEDRIVE%\Windows\FirstStartup.ps1" (
|
||||||
echo C:\Windows\FirstStartup.ps1 exists
|
echo %HOMEDRIVE%\Windows\FirstStartup.ps1 exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\FirstStartup.ps1 does not exist
|
echo %HOMEDRIVE%\Windows\FirstStartup.ps1 does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\winutil.ps1" (
|
if exist "%HOMEDRIVE%\Windows\winutil.ps1" (
|
||||||
echo C:\Windows\winutil.ps1 exists
|
echo %HOMEDRIVE%\Windows\winutil.ps1 exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\winutil.ps1 does not exist
|
echo %HOMEDRIVE%\Windows\winutil.ps1 does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\LogSpecialize.txt" (
|
if exist "%HOMEDRIVE%\Windows\LogSpecialize.txt" (
|
||||||
echo C:\Windows\LogSpecialize.txt exists
|
echo %HOMEDRIVE%\Windows\LogSpecialize.txt exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\LogSpecialize.txt does not exist
|
echo %HOMEDRIVE%\Windows\LogSpecialize.txt does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\LogAuditUser.txt" (
|
if exist "%HOMEDRIVE%\Windows\LogAuditUser.txt" (
|
||||||
echo C:\Windows\LogAuditUser.txt exists
|
echo %HOMEDRIVE%\Windows\LogAuditUser.txt exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\LogAuditUser.txt does not exist
|
echo %HOMEDRIVE%\Windows\LogAuditUser.txt does not exist
|
||||||
)
|
)
|
||||||
if exist "C:\Windows\LogOobeSystem.txt" (
|
if exist "%HOMEDRIVE%\Windows\LogOobeSystem.txt" (
|
||||||
echo C:\Windows\LogOobeSystem.txt exists
|
echo %HOMEDRIVE%\Windows\LogOobeSystem.txt exists
|
||||||
) else (
|
) else (
|
||||||
echo C:\Windows\LogOobeSystem.txt does not exist
|
echo %HOMEDRIVE%\Windows\LogOobeSystem.txt does not exist
|
||||||
)
|
)
|
||||||
if exist "c:\windows\csup.txt" (
|
if exist "%HOMEDRIVE%\windows\csup.txt" (
|
||||||
echo c:\windows\csup.txt exists
|
echo %HOMEDRIVE%\windows\csup.txt exists
|
||||||
) else (
|
) else (
|
||||||
echo c:\windows\csup.txt does not exist
|
echo %HOMEDRIVE%\windows\csup.txt does not exist
|
||||||
)
|
)
|
||||||
if exist "c:\windows\LogFirstRun.txt" (
|
if exist "%HOMEDRIVE%\windows\LogFirstRun.txt" (
|
||||||
echo c:\windows\LogFirstRun.txt exists
|
echo %HOMEDRIVE%\windows\LogFirstRun.txt exists
|
||||||
) else (
|
) else (
|
||||||
echo c:\windows\LogFirstRun.txt does not exist
|
echo %HOMEDRIVE%\windows\LogFirstRun.txt does not exist
|
||||||
)
|
)
|
||||||
'@
|
'@
|
||||||
$checkInstall | Out-File -FilePath "$env:temp\checkinstall.cmd" -Force -Encoding Ascii
|
$checkInstall | Out-File -FilePath "$env:temp\checkinstall.cmd" -Force -Encoding Ascii
|
||||||
@ -726,7 +761,7 @@ function New-FirstRun {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"FirstStartup has worked" | Out-File -FilePath c:\windows\LogFirstRun.txt -Append -NoClobber
|
"FirstStartup has worked" | Out-File -FilePath "$env:HOMEDRIVE\windows\LogFirstRun.txt" -Append -NoClobber
|
||||||
|
|
||||||
$taskbarPath = "$env:AppData\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
|
$taskbarPath = "$env:AppData\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
|
||||||
# Delete all files on the Taskbar
|
# Delete all files on the Taskbar
|
||||||
@ -746,7 +781,7 @@ function New-FirstRun {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Remove-Item -Path "$env:USERPROFILE\Desktop\*.lnk"
|
Remove-Item -Path "$env:USERPROFILE\Desktop\*.lnk"
|
||||||
Remove-Item -Path "C:\Users\Default\Desktop\*.lnk"
|
Remove-Item -Path "$env:HOMEDRIVE\Users\Default\Desktop\*.lnk"
|
||||||
|
|
||||||
# ************************************************
|
# ************************************************
|
||||||
# Create WinUtil shortcut on the desktop
|
# Create WinUtil shortcut on the desktop
|
||||||
@ -762,8 +797,8 @@ function New-FirstRun {
|
|||||||
# Create a shortcut object
|
# Create a shortcut object
|
||||||
$shortcut = $shell.CreateShortcut($shortcutPath)
|
$shortcut = $shell.CreateShortcut($shortcutPath)
|
||||||
|
|
||||||
if (Test-Path -Path "c:\Windows\cttlogo.png") {
|
if (Test-Path -Path "$env:HOMEDRIVE\Windows\cttlogo.png") {
|
||||||
$shortcut.IconLocation = "c:\Windows\cttlogo.png"
|
$shortcut.IconLocation = "$env:HOMEDRIVE\Windows\cttlogo.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set properties of the shortcut
|
# Set properties of the shortcut
|
||||||
@ -783,8 +818,17 @@ function New-FirstRun {
|
|||||||
# Done create WinUtil shortcut on the desktop
|
# Done create WinUtil shortcut on the desktop
|
||||||
# ************************************************
|
# ************************************************
|
||||||
|
|
||||||
Start-Process explorer
|
try
|
||||||
|
{
|
||||||
|
if ((Get-WindowsOptionalFeature -Online | Where-Object { $_.FeatureName -like "Recall" }).Count -gt 0)
|
||||||
|
{
|
||||||
|
Disable-WindowsOptionalFeature -Online -FeatureName "Recall" -Remove
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
'@
|
'@
|
||||||
$firstRun | Out-File -FilePath "$env:temp\FirstStartup.ps1" -Force
|
$firstRun | Out-File -FilePath "$env:temp\FirstStartup.ps1" -Force
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ function Set-WinUtilRegistry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "Set $Path\$Name to $Value"
|
Write-Host "Set $Path\$Name to $Value"
|
||||||
if ($Value -ne "<RemoveEntry>"){
|
if ($Value -ne "<RemoveEntry>") {
|
||||||
Set-ItemProperty -Path $Path -Name $Name -Type $Type -Value $Value -Force -ErrorAction Stop | Out-Null
|
Set-ItemProperty -Path $Path -Name $Name -Type $Type -Value $Value -Force -ErrorAction Stop | Out-Null
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -51,10 +51,6 @@ public class PowerManagement {
|
|||||||
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
||||||
Write-Host "Index chosen: '$index' from $($sync.MicrowinWindowsFlavors.SelectedValue)"
|
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
|
$copyToUSB = $sync.WPFMicrowinCopyToUsb.IsChecked
|
||||||
$injectDrivers = $sync.MicrowinInjectDrivers.IsChecked
|
$injectDrivers = $sync.MicrowinInjectDrivers.IsChecked
|
||||||
$importDrivers = $sync.MicrowinImportDrivers.IsChecked
|
$importDrivers = $sync.MicrowinImportDrivers.IsChecked
|
||||||
@ -91,6 +87,14 @@ public class PowerManagement {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Detect whether the image to process contains Windows 10 and show warning
|
||||||
|
if ((Test-CompatibleImage $imgVersion $([System.Version]::new(10,0,21996,1))) -eq $false) {
|
||||||
|
$msg = "Windows 10 has been detected in the image you want to process. While you can continue, Windows 10 is not a recommended target for MicroWin, and you may not get the full experience."
|
||||||
|
$dlg_msg = $msg
|
||||||
|
Write-Host $msg
|
||||||
|
[System.Windows.MessageBox]::Show($dlg_msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Exclamation)
|
||||||
|
}
|
||||||
|
|
||||||
$mountDirExists = Test-Path $mountDir
|
$mountDirExists = Test-Path $mountDir
|
||||||
$scratchDirExists = Test-Path $scratchDir
|
$scratchDirExists = Test-Path $scratchDir
|
||||||
if (-not $mountDirExists -or -not $scratchDirExists) {
|
if (-not $mountDirExists -or -not $scratchDirExists) {
|
||||||
@ -238,6 +242,9 @@ public class PowerManagement {
|
|||||||
# Write-Host Error code $LASTEXITCODE
|
# Write-Host Error code $LASTEXITCODE
|
||||||
Write-Host "Done disabling Teams"
|
Write-Host "Done disabling Teams"
|
||||||
|
|
||||||
|
Write-Host "Fix Windows Volume Mixer Issue"
|
||||||
|
reg add "HKLM\zNTUSER\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore" /f
|
||||||
|
|
||||||
Write-Host "Bypassing system requirements (system image)"
|
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 "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\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
||||||
@ -289,6 +296,19 @@ public class PowerManagement {
|
|||||||
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 "AppsUseLightTheme" /t REG_DWORD /d 0 /f
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
||||||
|
|
||||||
|
if ((Test-CompatibleImage $imgVersion $([System.Version]::new(10,0,21996,1))) -eq $false) {
|
||||||
|
# We're dealing with Windows 10. Configure sane desktop settings. NOTE: even though stuff to disable News and Interests is there,
|
||||||
|
# it doesn't seem to work, and I don't want to waste more time dealing with an operating system that will lose support in a year (2025)
|
||||||
|
|
||||||
|
# I invite anyone to work on improving stuff for News and Interests, but that won't be me!
|
||||||
|
|
||||||
|
Write-Host "Disabling Search Highlights..."
|
||||||
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Feeds\DSB" /v "ShowDynamicContent" /t REG_DWORD /d 0 /f
|
||||||
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\SearchSettings" /v "IsDynamicSearchBoxEnabled" /t REG_DWORD /d 0 /f
|
||||||
|
reg add "HKLM\zSOFTWARE\Policies\Microsoft\Dsh" /v "AllowNewsAndInterests" /t REG_DWORD /d 0 /f
|
||||||
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "TraySearchBoxVisible" /t REG_DWORD /d 1 /f
|
||||||
|
}
|
||||||
|
|
||||||
} catch {
|
} catch {
|
||||||
Write-Error "An unexpected error occurred: $_"
|
Write-Error "An unexpected error occurred: $_"
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -410,10 +410,8 @@ $sync["ISOmanual"].add_Checked({
|
|||||||
$sync["ISOLanguage"].Visibility = [System.Windows.Visibility]::Collapsed
|
$sync["ISOLanguage"].Visibility = [System.Windows.Visibility]::Collapsed
|
||||||
})
|
})
|
||||||
|
|
||||||
$sync["ISORelease"].Items.Add("23H2") | Out-Null
|
$sync["ISORelease"].Items.Add("24H2") | Out-Null
|
||||||
$sync["ISORelease"].Items.Add("22H2") | Out-Null
|
$sync["ISORelease"].SelectedItem = "24H2"
|
||||||
$sync["ISORelease"].Items.Add("21H2") | Out-Null
|
|
||||||
$sync["ISORelease"].SelectedItem = "23H2"
|
|
||||||
|
|
||||||
$sync["ISOLanguage"].Items.Add("System Language ($(Get-FidoLangFromCulture -langName $((Get-Culture).Name)))") | Out-Null
|
$sync["ISOLanguage"].Items.Add("System Language ($(Get-FidoLangFromCulture -langName $((Get-Culture).Name)))") | Out-Null
|
||||||
if ($currentCulture -ne "English International") {
|
if ($currentCulture -ne "English International") {
|
||||||
|
@ -1040,7 +1040,7 @@
|
|||||||
HorizontalAlignment="Stretch">
|
HorizontalAlignment="Stretch">
|
||||||
<StackPanel Name="MicrowinMain" Background="{DynamicResource MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Grid.Row="0">
|
<StackPanel Name="MicrowinMain" Background="{DynamicResource MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Grid.Row="0">
|
||||||
<StackPanel Background="Transparent" SnapsToDevicePixels="True" Margin="1">
|
<StackPanel Background="Transparent" SnapsToDevicePixels="True" Margin="1">
|
||||||
<CheckBox x:Name="WPFMicrowinDownloadFromGitHub" Content="Download oscdimg.exe from CTT Github repo" IsChecked="False" Margin="{DynamicResource MicrowinCheckBoxMargin}" />
|
<CheckBox x:Name="WPFMicrowinDownloadFromGitHub" Content="Download oscdimg.exe from CTT Github repo" IsChecked="True" Margin="{DynamicResource MicrowinCheckBoxMargin}" />
|
||||||
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}">
|
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}">
|
||||||
Choose a Windows ISO file that you've downloaded <LineBreak/>
|
Choose a Windows ISO file that you've downloaded <LineBreak/>
|
||||||
Check the status in the console
|
Check the status in the console
|
||||||
|
Loading…
Reference in New Issue
Block a user