mirror of
https://github.com/ntdevlabs/tiny11builder.git
synced 2025-12-19 01:44:12 +00:00
Add custom debloating option and update cleanup logic
- Introduced `-Custom` parameter in `tiny11maker.ps1` for user-defined debloating selections. - Enhanced package removal logic with user confirmation and selection. - Updated script metadata date from `09-07-25` to `09-28-25`. - Added output messages for better user experience.
This commit is contained in:
parent
00e7d8a151
commit
bbbf0a534d
1 changed files with 39 additions and 4 deletions
|
|
@ -13,24 +13,29 @@
|
||||||
.PARAMETER SCRATCH
|
.PARAMETER SCRATCH
|
||||||
Drive letter of the desired scratch disk (eg: D)
|
Drive letter of the desired scratch disk (eg: D)
|
||||||
|
|
||||||
|
.PARAMETER Custom
|
||||||
|
Optional argument used to enable custom debloating selections.
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
|
.\tiny11maker.ps1
|
||||||
.\tiny11maker.ps1 E D
|
.\tiny11maker.ps1 E D
|
||||||
.\tiny11maker.ps1 -ISO E -SCRATCH D
|
.\tiny11maker.ps1 -ISO E -SCRATCH D
|
||||||
.\tiny11maker.ps1 -SCRATCH D -ISO E
|
.\tiny11maker.ps1 -SCRATCH D -ISO E
|
||||||
.\tiny11maker.ps1
|
.\tiny11maker.ps1 -SCRATCH D -ISO E -Custom
|
||||||
|
|
||||||
*If you ordinal parameters the first one must be the mounted iso. The second is the scratch drive.
|
*If you ordinal parameters the first one must be the mounted iso. The second is the scratch drive.
|
||||||
prefer the use of full named parameter (eg: "-ISO") as you can put in the order you want.
|
prefer the use of full named parameter (eg: "-ISO") as you can put in the order you want.
|
||||||
|
|
||||||
.NOTES
|
.NOTES
|
||||||
Auteur: ntdevlabs
|
Auteur: ntdevlabs
|
||||||
Date: 09-07-25
|
Date: 09-28-25
|
||||||
#>
|
#>
|
||||||
|
|
||||||
#---------[ Parameters ]---------#
|
#---------[ Parameters ]---------#
|
||||||
param (
|
param (
|
||||||
[ValidatePattern('^[c-zC-Z]$')][string]$ISO,
|
[ValidatePattern('^[c-zC-Z]$')][string]$ISO,
|
||||||
[ValidatePattern('^[c-zC-Z]$')][string]$SCRATCH
|
[ValidatePattern('^[c-zC-Z]$')][string]$SCRATCH,
|
||||||
|
[switch]$Custom
|
||||||
)
|
)
|
||||||
|
|
||||||
if (-not $SCRATCH) {
|
if (-not $SCRATCH) {
|
||||||
|
|
@ -260,7 +265,38 @@ $packagesToRemove = $packages | Where-Object {
|
||||||
$packageName = $_
|
$packageName = $_
|
||||||
$packagePrefixes -contains ($packagePrefixes | Where-Object { $packageName -like "*$_*" })
|
$packagePrefixes -contains ($packagePrefixes | Where-Object { $packageName -like "*$_*" })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($Custom) {
|
||||||
|
$Confirmation = ""
|
||||||
|
$selectedPrefixes = @()
|
||||||
|
|
||||||
|
while ($Confirmation -ne 'Yes') {
|
||||||
|
Write-Output "List of applications to remove:"
|
||||||
|
for ($i=0; $i -lt $packagePrefixes.Count; $i++) {
|
||||||
|
Write-Output "$($i+1). $($packagePrefixes[$i])"
|
||||||
|
}
|
||||||
|
$userInput = Read-Host "Selected numbers (eg: 1,3,5)"
|
||||||
|
$selectedPrefixes = $userInput -split "," | ForEach-Object {
|
||||||
|
$select_index = $_.Trim()
|
||||||
|
if ($select_index -match '^\d+$' -and $select_index -ge 1 -and $select_index -le $packagePrefixes.Count) {
|
||||||
|
$packagePrefixes[$select_index-1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "Chosen package prefixes: $selectedPrefixes"
|
||||||
|
$Confirmation = Read-Host "Type 'Yes' to confirm your selection and proceed with the removal, or press Enter to reselect"
|
||||||
|
}
|
||||||
|
|
||||||
|
$packagesToRemove = @()
|
||||||
|
foreach ($prefix in $selectedPrefixes) {
|
||||||
|
$matched = $packages | Where-Object { $_ -like "$prefix*" }
|
||||||
|
$packagesToRemove += $matched
|
||||||
|
}
|
||||||
|
$packagesToRemove = $packagesToRemove | Sort-Object -Unique
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($package in $packagesToRemove) {
|
foreach ($package in $packagesToRemove) {
|
||||||
|
Write-Host "Removing $package"
|
||||||
& 'dism' '/English' "/image:$($ScratchDisk)\scratchdir" '/Remove-ProvisionedAppxPackage' "/PackageName:$package"
|
& 'dism' '/English' "/image:$($ScratchDisk)\scratchdir" '/Remove-ProvisionedAppxPackage' "/PackageName:$package"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -532,4 +568,3 @@ if (Test-Path -Path "$PSScriptRoot\autounattend.xml") {
|
||||||
Stop-Transcript
|
Stop-Transcript
|
||||||
|
|
||||||
exit
|
exit
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue