diff --git a/config/applications.json b/config/applications.json index b43b7be1..59bf5f1e 100644 --- a/config/applications.json +++ b/config/applications.json @@ -555,7 +555,7 @@ "ffmpeg": { "category": "Utilities", "choco": "na", - "content": "eibol.FFmpegBatchAVConverter", + "content": "FFmpeg Batch AV Converter", "description": "FFmpeg Batch AV Converter is a universal audio and video encoder, that allows to use the full potential of ffmpeg command line with a few mouse clicks in a convenient GUI with drag and drop, progress information.", "link": "https://ffmpeg-batch.sourceforge.io/", "winget": "eibol.FFmpegBatchAVConverter" diff --git a/config/tweaks.json b/config/tweaks.json index c35c1240..c49e32b1 100644 --- a/config/tweaks.json +++ b/config/tweaks.json @@ -665,7 +665,7 @@ }, { "Name": "TermService", - "StartupType": "Automatic", + "StartupType": "Manual", "OriginalType": "Manual" }, { @@ -725,7 +725,7 @@ }, { "Name": "VaultSvc", - "StartupType": "Automatic", + "StartupType": "Manual", "OriginalType": "Manual" }, { @@ -2043,11 +2043,12 @@ Get-AppxPackage -AllUsers *Copilot* | Remove-AppxPackage -AllUsers Get-AppxPackage -AllUsers Microsoft.MicrosoftOfficeHub | Remove-AppxPackage -AllUsers - $Appx = (Get-AppxPackage MicrosoftWindows.Client.CoreAI).PackageFullName - $Sid = (Get-LocalUser $Env:UserName).Sid.Value - - New-Item \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Appx\\AppxAllUserStore\\EndOfLife\\$Sid\\$Appx\" -Force - Remove-AppxPackage $Appx + $Appx = (Get-AppxPackage *MicrosoftWindows.Client.CoreAI*).PackageFullName + if ($Appx) { + $Sid = (Get-LocalUser $Env:UserName).Sid.Value + New-Item \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Appx\\AppxAllUserStore\\EndOfLife\\$Sid\\$Appx\" -Force + Remove-AppxPackage $Appx + } " ], "UndoScript": [ diff --git a/functions/private/Get-WinUtilToggleStatus.ps1 b/functions/private/Get-WinUtilToggleStatus.ps1 index a19dbf9b..135754fb 100644 --- a/functions/private/Get-WinUtilToggleStatus.ps1 +++ b/functions/private/Get-WinUtilToggleStatus.ps1 @@ -45,7 +45,7 @@ Function Get-WinUtilToggleStatus { } else { Write-Debug "$($regentry.Name) is false (state: $regstate, value: $($regentry.Value), original: $($regentry.OriginalValue))" } - if (!$regstate) { + if ($null -eq $regstate) { switch ($regentry.DefaultState) { "true" { $regstate = $regentry.Value diff --git a/functions/private/Invoke-WinUtilCurrentSystem.ps1 b/functions/private/Invoke-WinUtilCurrentSystem.ps1 index fe4778cb..823adca4 100644 --- a/functions/private/Invoke-WinUtilCurrentSystem.ps1 +++ b/functions/private/Invoke-WinUtilCurrentSystem.ps1 @@ -41,47 +41,73 @@ Function Invoke-WinUtilCurrentSystem { } } - if($CheckBox -eq "tweaks") { + if ($CheckBox -eq "tweaks") { - if(!(Test-Path 'HKU:\')) {$null = (New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS)} + if (!(Test-Path 'HKU:\')) {$null = (New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS)} $ScheduledTasks = Get-ScheduledTask $sync.configs.tweaks | Get-Member -MemberType NoteProperty | ForEach-Object { $Config = $psitem.Name #WPFEssTweaksTele - $registryKeys = $sync.configs.tweaks.$Config.registry - $scheduledtaskKeys = $sync.configs.tweaks.$Config.scheduledtask - $serviceKeys = $sync.configs.tweaks.$Config.service + $entry = $sync.configs.tweaks.$Config + $registryKeys = $entry.registry + $scheduledtaskKeys = $entry.scheduledtask + $serviceKeys = $entry.service + $appxKeys = $entry.appx + $invokeScript = $entry.InvokeScript + $entryType = $entry.Type - if($registryKeys -or $scheduledtaskKeys -or $serviceKeys) { + if ($registryKeys -or $scheduledtaskKeys -or $serviceKeys) { $Values = @() + if ($entryType -eq "Toggle") { + if (-not (Get-WinUtilToggleStatus $Config)) { + $values += $False + } + } else { + $registryMatchCount = 0 + $registryTotal = 0 - Foreach ($tweaks in $registryKeys) { - Foreach($tweak in $tweaks) { + Foreach ($tweaks in $registryKeys) { + Foreach ($tweak in $tweaks) { + $registryTotal++ + $regstate = $null - if(test-path $tweak.Path) { - $actualValue = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name) - $expectedValue = $tweak.Value - if ($expectedValue -eq "") { - if ($null -ne $actualValue) { - $values += $False - } - } elseif ($expectedValue -notlike $actualValue) { - $values += $False + if (Test-Path $tweak.Path) { + $regstate = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name) + } + + if ($null -eq $regstate) { + switch ($tweak.DefaultState) { + "true" { + $regstate = $tweak.Value + } + "false" { + $regstate = $tweak.OriginalValue + } + default { + $regstate = $tweak.OriginalValue + } + } + } + + if ($regstate -eq $tweak.Value) { + $registryMatchCount++ } - } else { - $values += $False } } + + if ($registryTotal -gt 0 -and $registryMatchCount -ne $registryTotal) { + $values += $False + } } Foreach ($tweaks in $scheduledtaskKeys) { - Foreach($tweak in $tweaks) { + Foreach ($tweak in $tweaks) { $task = $ScheduledTasks | Where-Object {$($psitem.TaskPath + $psitem.TaskName) -like "\$($tweak.name)"} - if($task) { + if ($task) { $actualValue = $task.State $expectedValue = $tweak.State if ($expectedValue -ne $actualValue) { @@ -92,10 +118,10 @@ Function Invoke-WinUtilCurrentSystem { } Foreach ($tweaks in $serviceKeys) { - Foreach($tweak in $tweaks) { + Foreach ($tweak in $tweaks) { $Service = Get-Service -Name $tweak.Name - if($Service) { + if ($Service) { $actualValue = $Service.StartType $expectedValue = $tweak.StartupType if ($expectedValue -ne $actualValue) { @@ -105,9 +131,13 @@ Function Invoke-WinUtilCurrentSystem { } } - if($values -notcontains $false) { + if ($values -notcontains $false) { Write-Output $Config } + } else { + if ($invokeScript -or $appxKeys) { + Write-Debug "Skipping $Config in Get Installed: no detectable registry, scheduled task, or service state." + } } } }