add description feature

This commit is contained in:
MyDrift 2024-07-12 16:40:45 +02:00
parent 73973d7101
commit 790e0b22a5
2 changed files with 6120 additions and 6015 deletions

View File

@ -13,9 +13,9 @@
.EXAMPLE .EXAMPLE
Set-WinUtilTaskbaritem -value 0.5 -state "Normal" Set-WinUtilTaskbaritem -value 0.5 -state "Normal"
Set-WinUtilTaskbaritem -state "Error" Set-WinUtilTaskbaritem -state "Error"
Set-WinUtilTaskbaritem -state "None"
Set-WinUtilTaskbaritem -state "Indeterminate" Set-WinUtilTaskbaritem -state "Indeterminate"
Set-WinUtilTaskbaritem -overlay "C:\path\to\icon.ico" Set-WinUtilTaskbaritem -description "This is a description"
Set-WinUtilTaskbaritem -overlay "C:\path\to\icon.png"
#> #>
@ -24,8 +24,8 @@ function Set-WinUtilTaskbaritem {
param ( param (
[double]$value, [double]$value,
$state, $state,
$overlay $overlay,
#[string]$description $description
) )
if ($value) { if ($value) {
@ -60,4 +60,8 @@ function Set-WinUtilTaskbaritem {
$sync["Form"].taskbarItemInfo.Overlay = $bitmapImage $sync["Form"].taskbarItemInfo.Overlay = $bitmapImage
} }
if ($description) {
$sync["Form"].taskbarItemInfo.Description = $description
}
} }

View File

@ -8,7 +8,7 @@
Author : Chris Titus @christitustech Author : Chris Titus @christitustech
Runspace Author: @DeveloperDurp Runspace Author: @DeveloperDurp
GitHub : https://github.com/ChrisTitusTech GitHub : https://github.com/ChrisTitusTech
Version : 24.06.29 Version : 24.07.12
#> #>
param ( param (
[switch]$Debug, [switch]$Debug,
@ -45,7 +45,7 @@ Add-Type -AssemblyName System.Windows.Forms
# Variable to sync between runspaces # Variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{}) $sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $PSScriptRoot $sync.PSScriptRoot = $PSScriptRoot
$sync.version = "24.06.29" $sync.version = "24.07.12"
$sync.configs = @{} $sync.configs = @{}
$sync.ProcessRunning = $false $sync.ProcessRunning = $false
@ -702,15 +702,19 @@ function Install-WinUtilChoco {
return return
} }
Set-WinUtilTaskbaritem -state "Indeterminate"
Write-Host "Seems Chocolatey is not installed, installing now." Write-Host "Seems Chocolatey is not installed, installing now."
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) -ErrorAction Stop Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) -ErrorAction Stop
powershell choco feature enable -n allowGlobalConfirmation powershell choco feature enable -n allowGlobalConfirmation
Set-WinUtilTaskbaritem -state "None"
} }
Catch { Catch {
Write-Host "===========================================" -Foregroundcolor Red Write-Host "===========================================" -Foregroundcolor Red
Write-Host "-- Chocolatey failed to install ---" -Foregroundcolor Red Write-Host "-- Chocolatey failed to install ---" -Foregroundcolor Red
Write-Host "===========================================" -Foregroundcolor Red Write-Host "===========================================" -Foregroundcolor Red
Set-WinUtilTaskbaritem -state "Error"
} }
} }
@ -796,6 +800,7 @@ function Install-WinUtilProgramChoco {
} }
} }
$x++ $x++
# Set-WinUtilTaskbaritem -state "Normal" -value $x/$count
} }
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
@ -904,6 +909,7 @@ Function Install-WinUtilProgramWinget {
} }
} }
$X++ $X++
# Set-WinUtilTaskbaritem -state "Normal" -value $x/$count
} }
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
return $failedPackages; return $failedPackages;
@ -929,6 +935,8 @@ function Install-WinUtilWinget {
Write-Host "`nWinget is not Installed. Continuing with install.`r" -ForegroundColor Red Write-Host "`nWinget is not Installed. Continuing with install.`r" -ForegroundColor Red
} }
Set-WinUtilTaskbaritem -state "Indeterminate"
# Gets the computer's information # Gets the computer's information
if ($null -eq $sync.ComputerInfo){ if ($null -eq $sync.ComputerInfo){
$ComputerInfo = Get-ComputerInfo -ErrorAction Stop $ComputerInfo = Get-ComputerInfo -ErrorAction Stop
@ -973,6 +981,8 @@ function Install-WinUtilWinget {
throw [WingetFailedInstall]::new('Failed to install!') throw [WingetFailedInstall]::new('Failed to install!')
} }
} }
Set-WinUtilTaskbaritem -state "None"
} }
function Test-CompatibleImage() { function Test-CompatibleImage() {
<# <#
@ -1809,6 +1819,8 @@ function Invoke-WinUtilFeatureInstall {
$CheckBox $CheckBox
) )
Set-WinUtilTaskbaritem -state "Normal" -value 1
$CheckBox | ForEach-Object { $CheckBox | ForEach-Object {
if($sync.configs.feature.$psitem.feature){ if($sync.configs.feature.$psitem.feature){
Foreach( $feature in $sync.configs.feature.$psitem.feature ){ Foreach( $feature in $sync.configs.feature.$psitem.feature ){
@ -1822,6 +1834,7 @@ function Invoke-WinUtilFeatureInstall {
} }
else{ else{
Set-WinUtilTaskbaritem -state "Error"
Write-Warning "Unable to Install $feature due to unhandled exception" Write-Warning "Unable to Install $feature due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace Write-Warning $psitem.Exception.StackTrace
} }
@ -1842,6 +1855,7 @@ function Invoke-WinUtilFeatureInstall {
} }
else{ else{
Set-WinUtilTaskbaritem -state "Error"
Write-Warning "Unable to Install $feature due to unhandled exception" Write-Warning "Unable to Install $feature due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace Write-Warning $psitem.Exception.StackTrace
} }
@ -1849,6 +1863,9 @@ function Invoke-WinUtilFeatureInstall {
} }
} }
} }
if ($sync["Form"].taskbarItemInfo.ProgressState -ne "Error"){
Set-WinUtilTaskbaritem -state "None"
}
} }
function Invoke-WinUtilGPU { function Invoke-WinUtilGPU {
$gpuInfo = Get-CimInstance Win32_VideoController $gpuInfo = Get-CimInstance Win32_VideoController
@ -2589,6 +2606,73 @@ Function Set-WinUtilService {
Write-Warning $_.Exception.Message Write-Warning $_.Exception.Message
} }
}
<#
.SYNOPSIS
Modifies the Taskbaritem of the WPF Form
.PARAMETER state & value
Value can be between 0 and 1, 0 being no progress done yet and 1 being fully completed
State can be 'None' > No progress, 'Indeterminate' > Without value, 'Normal' > when using value, 'Error' > Red (when using value), 'Paused' > Yellow (when using value)
.PARAMETER overlay
Overlay icon to display on the taskbar item
.EXAMPLE
Set-WinUtilTaskbaritem -value 0.5 -state "Normal"
Set-WinUtilTaskbaritem -state "Error"
Set-WinUtilTaskbaritem -state "Indeterminate"
Set-WinUtilTaskbaritem -description "This is a description"
Set-WinUtilTaskbaritem -overlay "C:\path\to\icon.png"
#>
function Set-WinUtilTaskbaritem {
param (
[double]$value,
$state,
$overlay,
$description
)
if ($value) {
$sync["Form"].taskbarItemInfo.ProgressValue = $value
}
if ($state) {
$sync["Form"].taskbarItemInfo.ProgressState = $state
}
if ($overlay -and (Test-Path $overlay)) {
# Read the image file as a byte array
$imageBytes = [System.IO.File]::ReadAllBytes($overlay)
# Convert the byte array to a Base64 string
[System.Convert]::ToBase64String($imageBytes)
# Load the image file as a bitmap
$bitmap = [System.Drawing.Bitmap]::new($overlay)
# Create a streaming image by streaming the bitmap to a memory stream
$memoryStream = [System.IO.MemoryStream]::new()
$bitmap.Save($memoryStream, [System.Drawing.Imaging.ImageFormat]::Png)
$memoryStream.Position = 0
# Create a bitmap image from the memory stream
$bitmapImage = [System.Windows.Media.Imaging.BitmapImage]::new()
$bitmapImage.BeginInit()
$bitmapImage.StreamSource = $memoryStream
$bitmapImage.EndInit()
$bitmapImage.Freeze()
$sync["Form"].taskbarItemInfo.Overlay = $bitmapImage
}
if ($description) {
$sync["Form"].taskbarItemInfo.Description = $description
}
} }
function Set-WinUtilUITheme { function Set-WinUtilUITheme {
<# <#
@ -3580,6 +3664,7 @@ function Invoke-WPFGetInstalled {
param($checkbox, $DebugPreference) param($checkbox, $DebugPreference)
$sync.ProcessRunning = $true $sync.ProcessRunning = $true
Set-WinUtilTaskbaritem -state "Indeterminate"
if($checkbox -eq "winget"){ if($checkbox -eq "winget"){
Write-Host "Getting Installed Programs..." Write-Host "Getting Installed Programs..."
@ -3598,6 +3683,7 @@ function Invoke-WPFGetInstalled {
Write-Host "Done..." Write-Host "Done..."
$sync.ProcessRunning = $false $sync.ProcessRunning = $false
Set-WinUtilTaskbaritem -state "None"
} }
} }
function Invoke-WPFGetIso { function Invoke-WPFGetIso {
@ -3618,6 +3704,7 @@ function Invoke-WPFGetIso {
$sync.BusyText.Text="N Busy" $sync.BusyText.Text="N Busy"
Write-Host " _ __ __ _ " Write-Host " _ __ __ _ "
Write-Host " /\/\ (_) ___ _ __ ___ / / /\ \ \(_) _ __ " Write-Host " /\/\ (_) ___ _ __ ___ / / /\ \ \(_) _ __ "
Write-Host " / \ | | / __|| '__| / _ \ \ \/ \/ /| || '_ \ " Write-Host " / \ | | / __|| '__| / _ \ \ \/ \/ /| || '_ \ "
@ -3690,6 +3777,8 @@ function Invoke-WPFGetIso {
return return
} }
Set-WinUtilTaskbaritem -state "Indeterminate"
# Detect the file size of the ISO and compare it with the free space of the system drive # Detect the file size of the ISO and compare it with the free space of the system drive
$isoSize = (Get-Item -Path $filePath).Length $isoSize = (Get-Item -Path $filePath).Length
Write-Debug "Size of ISO file: $($isoSize) bytes" Write-Debug "Size of ISO file: $($isoSize) bytes"
@ -3841,6 +3930,7 @@ function Invoke-WPFGetIso {
$sync.BusyMessage.Visibility="Hidden" $sync.BusyMessage.Visibility="Hidden"
$sync.ProcessRunning = $false $sync.ProcessRunning = $false
Set-WinUtilTaskbaritem -state "None"
} }
@ -3927,8 +4017,10 @@ function Invoke-WPFInstall {
return return
} }
Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock { Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock {
param($PackagesToInstall, $DebugPreference) param($PackagesToInstall, $DebugPreference)
Set-WinUtilTaskbaritem -state "Normal" -value 1/$PackagesToInstall.Count
$packagesWinget, $packagesChoco = { $packagesWinget, $packagesChoco = {
$packagesWinget = [System.Collections.Generic.List`1[System.Object]]::new() $packagesWinget = [System.Collections.Generic.List`1[System.Object]]::new()
$packagesChoco = [System.Collections.Generic.List`1[System.Object]]::new() $packagesChoco = [System.Collections.Generic.List`1[System.Object]]::new()
@ -3959,11 +4051,13 @@ function Invoke-WPFInstall {
Write-Host "===========================================" Write-Host "==========================================="
Write-Host "-- Installs have finished ---" Write-Host "-- Installs have finished ---"
Write-Host "===========================================" Write-Host "==========================================="
# Set-WinUtilTaskbaritem -state "None"
} }
Catch { Catch {
Write-Host "===========================================" Write-Host "==========================================="
Write-Host "Error: $_" Write-Host "Error: $_"
Write-Host "===========================================" Write-Host "==========================================="
# Set-WinUtilTaskbaritem -state "Error"
} }
Start-Sleep -Seconds 5 Start-Sleep -Seconds 5
$sync.ProcessRunning = $False $sync.ProcessRunning = $False
@ -3999,6 +4093,7 @@ function Invoke-WPFMicrowin {
Invoke MicroWin routines... Invoke MicroWin routines...
#> #>
if($sync.ProcessRunning) { if($sync.ProcessRunning) {
$msg = "GetIso process is currently running." $msg = "GetIso process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
@ -4037,6 +4132,8 @@ public class PowerManagement {
return return
} }
Set-WinUtilTaskbaritem -state "Indeterminate"
Write-Host "Target ISO location: $($SaveDialog.FileName)" Write-Host "Target ISO location: $($SaveDialog.FileName)"
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim() $index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
@ -4472,6 +4569,7 @@ public class PowerManagement {
# Allow the machine to sleep again (optional) # Allow the machine to sleep again (optional)
[PowerManagement]::SetThreadExecutionState(0) [PowerManagement]::SetThreadExecutionState(0)
$sync.ProcessRunning = $false $sync.ProcessRunning = $false
Set-WinUtilTaskbaritem -state "None"
} }
} }
function Invoke-WPFOOSU { function Invoke-WPFOOSU {
@ -5211,6 +5309,8 @@ function Invoke-WPFUnInstall {
if($confirm -eq "No"){return} if($confirm -eq "No"){return}
Set-WinUtilTaskbaritem -state "Normal" -value 1/$PackagesToInstall.Count
Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock { Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock {
param($PackagesToInstall, $DebugPreference) param($PackagesToInstall, $DebugPreference)
$packagesWinget, $packagesChoco = { $packagesWinget, $packagesChoco = {
@ -5248,11 +5348,13 @@ function Invoke-WPFUnInstall {
Write-Host "===========================================" Write-Host "==========================================="
Write-Host "-- Uninstalls have finished ---" Write-Host "-- Uninstalls have finished ---"
Write-Host "===========================================" Write-Host "==========================================="
# Set-WinUtilTaskbaritem -state "None"
} }
Catch { Catch {
Write-Host "===========================================" Write-Host "==========================================="
Write-Host "Error: $_" Write-Host "Error: $_"
Write-Host "===========================================" Write-Host "==========================================="
# Set-WinUtilTaskbaritem -state "Error"
} }
$sync.ProcessRunning = $False $sync.ProcessRunning = $False
} }
@ -5399,6 +5501,7 @@ $sync.configs.applications = '{
"link": "https://1password.com/", "link": "https://1password.com/",
"winget": "AgileBits.1Password" "winget": "AgileBits.1Password"
}, },
"WPFInstall": null,
"WPFInstall7zip": { "WPFInstall7zip": {
"category": "Utilities", "category": "Utilities",
"choco": "7zip", "choco": "7zip",
@ -5651,7 +5754,7 @@ $sync.configs.applications = '{
"category": "Browsers", "category": "Browsers",
"choco": "na", "choco": "na",
"content": "Arc", "content": "Arc",
"description": "Arc is a Chromium based browser, known for it&#39;s clean and modern design.", "description": "Arc is a Chromium based browser, known for it\u0026#39;s clean and modern design.",
"link": "https://arc.net/", "link": "https://arc.net/",
"winget": "TheBrowserCompany.Arc" "winget": "TheBrowserCompany.Arc"
}, },
@ -5699,7 +5802,7 @@ $sync.configs.applications = '{
"category": "Utilities", "category": "Utilities",
"choco": "cpu-z", "choco": "cpu-z",
"content": "CPU-Z", "content": "CPU-Z",
"description": "CPU-Z is a system monitoring and diagnostic tool for Windows. It provides detailed information about the computer&#39;s hardware components, including the CPU, memory, and motherboard.", "description": "CPU-Z is a system monitoring and diagnostic tool for Windows. It provides detailed information about the computer\u0026#39;s hardware components, including the CPU, memory, and motherboard.",
"link": "https://www.cpuid.com/softwares/cpu-z.html", "link": "https://www.cpuid.com/softwares/cpu-z.html",
"winget": "CPUID.CPU-Z" "winget": "CPUID.CPU-Z"
}, },
@ -5715,7 +5818,7 @@ $sync.configs.applications = '{
"category": "Utilities", "category": "Utilities",
"choco": "na", "choco": "na",
"content": "CapFrameX", "content": "CapFrameX",
"description": "Frametimes capture and analysis tool based on Intel&#39;s PresentMon. Overlay provided by Rivatuner Statistics Server.", "description": "Frametimes capture and analysis tool based on Intel\u0026#39;s PresentMon. Overlay provided by Rivatuner Statistics Server.",
"link": "https://www.capframex.com/", "link": "https://www.capframex.com/",
"winget": "CXWorld.CapFrameX" "winget": "CXWorld.CapFrameX"
}, },
@ -6595,7 +6698,7 @@ $sync.configs.applications = '{
"category": "Communications", "category": "Communications",
"choco": "element-desktop", "choco": "element-desktop",
"content": "Element", "content": "Element",
"description": "Element is a client for Matrix&#8212;an open network for secure, decentralized communication.", "description": "Element is a client for Matrix\u0026#8212;an open network for secure, decentralized communication.",
"link": "https://element.io/", "link": "https://element.io/",
"winget": "Element.Element" "winget": "Element.Element"
}, },
@ -6811,7 +6914,7 @@ $sync.configs.applications = '{
"category": "Development", "category": "Development",
"choco": "nodejs", "choco": "nodejs",
"content": "NodeJS", "content": "NodeJS",
"description": "NodeJS is a JavaScript runtime built on Chrome&#39;s V8 JavaScript engine for building server-side and networking applications.", "description": "NodeJS is a JavaScript runtime built on Chrome\u0026#39;s V8 JavaScript engine for building server-side and networking applications.",
"link": "https://nodejs.org/", "link": "https://nodejs.org/",
"winget": "OpenJS.NodeJS" "winget": "OpenJS.NodeJS"
}, },
@ -7219,7 +7322,7 @@ $sync.configs.applications = '{
"category": "Utilities", "category": "Utilities",
"choco": "quicklook", "choco": "quicklook",
"content": "Quicklook", "content": "Quicklook",
"description": "Bring macOS &#8220;Quick Look&#8221; feature to Windows", "description": "Bring macOS \u0026#8220;Quick Look\u0026#8221; feature to Windows",
"link": "https://github.com/QL-Win/QuickLook", "link": "https://github.com/QL-Win/QuickLook",
"winget": "QL-Win.QuickLook" "winget": "QL-Win.QuickLook"
}, },
@ -7419,7 +7522,7 @@ $sync.configs.applications = '{
"category": "Multimedia Tools", "category": "Multimedia Tools",
"choco": "spotube", "choco": "spotube",
"content": "Spotube", "content": "Spotube",
"description": "Open source Spotify client that doesn&#39;t require Premium nor uses Electron! Available for both desktop &#38; mobile! ", "description": "Open source Spotify client that doesn\u0026#39;t require Premium nor uses Electron! Available for both desktop \u0026#38; mobile! ",
"link": "https://github.com/KRTirtho/spotube", "link": "https://github.com/KRTirtho/spotube",
"winget": "KRTirtho.Spotube" "winget": "KRTirtho.Spotube"
}, },
@ -7483,7 +7586,7 @@ $sync.configs.applications = '{
"category": "Document", "category": "Document",
"choco": "na", "choco": "na",
"content": "PDFgear", "content": "PDFgear",
"description": "PDFgear is a piece of full-featured PDF management software for Windows, Mac, and mobile, and it&#39;s completely free to use.", "description": "PDFgear is a piece of full-featured PDF management software for Windows, Mac, and mobile, and it\u0026#39;s completely free to use.",
"link": "https://www.pdfgear.com/", "link": "https://www.pdfgear.com/",
"winget": "PDFgear.PDFgear" "winget": "PDFgear.PDFgear"
}, },
@ -7507,7 +7610,7 @@ $sync.configs.applications = '{
"category": "Development", "category": "Development",
"choco": "na", "choco": "na",
"content": "Swift toolchain", "content": "Swift toolchain",
"description": "Swift is a general-purpose programming language that&#39;s approachable for newcomers and powerful for experts.", "description": "Swift is a general-purpose programming language that\u0026#39;s approachable for newcomers and powerful for experts.",
"link": "https://www.swift.org/", "link": "https://www.swift.org/",
"winget": "Swift.Toolchain" "winget": "Swift.Toolchain"
}, },
@ -7691,7 +7794,7 @@ $sync.configs.applications = '{
"category": "Games", "category": "Games",
"choco": "ubisoft-connect", "choco": "ubisoft-connect",
"content": "Ubisoft Connect", "content": "Ubisoft Connect",
"description": "Ubisoft Connect is Ubisoft&#39;s digital distribution and online gaming service, providing access to Ubisoft&#39;s games and services.", "description": "Ubisoft Connect is Ubisoft\u0026#39;s digital distribution and online gaming service, providing access to Ubisoft\u0026#39;s games and services.",
"link": "https://ubisoftconnect.com/", "link": "https://ubisoftconnect.com/",
"winget": "Ubisoft.Connect" "winget": "Ubisoft.Connect"
}, },
@ -7699,7 +7802,7 @@ $sync.configs.applications = '{
"category": "Browsers", "category": "Browsers",
"choco": "ungoogled-chromium", "choco": "ungoogled-chromium",
"content": "Ungoogled", "content": "Ungoogled",
"description": "Ungoogled Chromium is a version of Chromium without Google&#39;s integration for enhanced privacy and control.", "description": "Ungoogled Chromium is a version of Chromium without Google\u0026#39;s integration for enhanced privacy and control.",
"link": "https://github.com/Eloston/ungoogled-chromium", "link": "https://github.com/Eloston/ungoogled-chromium",
"winget": "eloston.ungoogled-chromium" "winget": "eloston.ungoogled-chromium"
}, },
@ -7827,7 +7930,7 @@ $sync.configs.applications = '{
"category": "Development", "category": "Development",
"choco": "vscodium", "choco": "vscodium",
"content": "VS Codium", "content": "VS Codium",
"description": "VSCodium is a community-driven, freely-licensed binary distribution of Microsoft&#39;s VS Code.", "description": "VSCodium is a community-driven, freely-licensed binary distribution of Microsoft\u0026#39;s VS Code.",
"link": "https://vscodium.com/", "link": "https://vscodium.com/",
"winget": "VSCodium.VSCodium" "winget": "VSCodium.VSCodium"
}, },
@ -7875,7 +7978,7 @@ $sync.configs.applications = '{
"category": "Utilities", "category": "Utilities",
"choco": "wingetui", "choco": "wingetui",
"content": "WingetUI", "content": "WingetUI",
"description": "WingetUI is a graphical user interface for Microsoft&#39;s Windows Package Manager (winget).", "description": "WingetUI is a graphical user interface for Microsoft\u0026#39;s Windows Package Manager (winget).",
"link": "https://www.marticliment.com/wingetui/", "link": "https://www.marticliment.com/wingetui/",
"winget": "SomePythonThings.WingetUIStore" "winget": "SomePythonThings.WingetUIStore"
}, },
@ -8267,7 +8370,7 @@ $sync.configs.applications = '{
"category": "Pro Tools", "category": "Pro Tools",
"choco": "na", "choco": "na",
"content": "Kicad", "content": "Kicad",
"description": "Kicad is an open-source EDA tool. It&#39;s a good starting point for those who want to do electrical design and is even used by professionals in the industry.", "description": "Kicad is an open-source EDA tool. It\u0026#39;s a good starting point for those who want to do electrical design and is even used by professionals in the industry.",
"link": "https://www.kicad.org/", "link": "https://www.kicad.org/",
"winget": "KiCad.KiCad" "winget": "KiCad.KiCad"
}, },
@ -8283,7 +8386,7 @@ $sync.configs.applications = '{
"category": "Utilities", "category": "Utilities",
"choco": "na", "choco": "na",
"content": "Dropbox", "content": "Dropbox",
"description": "The Dropbox desktop app! Save hard drive space, share and edit files and send for signature ? all without the distraction of countless browser tabs.", "description": "The Dropbox desktop app! Save hard drive space, share and edit files and send for signature ??? all without the distraction of countless browser tabs.",
"link": "https://www.dropbox.com/en_GB/desktop", "link": "https://www.dropbox.com/en_GB/desktop",
"winget": "Dropbox.Dropbox" "winget": "Dropbox.Dropbox"
}, },
@ -8294,7 +8397,8 @@ $sync.configs.applications = '{
"description": "GUI Tool To Removes Ads From Various Places Around Windows 11", "description": "GUI Tool To Removes Ads From Various Places Around Windows 11",
"link": "https://github.com/xM4ddy/OFGB", "link": "https://github.com/xM4ddy/OFGB",
"winget": "xM4ddy.OFGB" "winget": "xM4ddy.OFGB"
} },
"WPFInstall}": null
}' | convertfrom-json }' | convertfrom-json
$sync.configs.dns = '{ $sync.configs.dns = '{
"Google": { "Google": {
@ -8337,7 +8441,9 @@ $sync.configs.feature = '{
"NetFx4-AdvSrvs", "NetFx4-AdvSrvs",
"NetFx3" "NetFx3"
], ],
"InvokeScript": [] "InvokeScript": [
]
}, },
"WPFFeatureshyperv": { "WPFFeatureshyperv": {
"Content": "HyperV Virtualization", "Content": "HyperV Virtualization",
@ -8356,7 +8462,7 @@ $sync.configs.feature = '{
"Microsoft-Hyper-V-Management-Clients" "Microsoft-Hyper-V-Management-Clients"
], ],
"InvokeScript": [ "InvokeScript": [
"Start-Process -FilePath cmd.exe -ArgumentList ''/c bcdedit /set hypervisorschedulertype classic'' -Wait" "Start-Process -FilePath cmd.exe -ArgumentList \u0027\u0027/c bcdedit /set hypervisorschedulertype classic\u0027\u0027 -Wait"
] ]
}, },
"WPFFeatureslegacymedia": { "WPFFeatureslegacymedia": {
@ -8371,7 +8477,9 @@ $sync.configs.feature = '{
"DirectPlay", "DirectPlay",
"LegacyComponents" "LegacyComponents"
], ],
"InvokeScript": [] "InvokeScript": [
]
}, },
"WPFFeaturewsl": { "WPFFeaturewsl": {
"Content": "Windows Subsystem for Linux", "Content": "Windows Subsystem for Linux",
@ -8383,7 +8491,9 @@ $sync.configs.feature = '{
"VirtualMachinePlatform", "VirtualMachinePlatform",
"Microsoft-Windows-Subsystem-Linux" "Microsoft-Windows-Subsystem-Linux"
], ],
"InvokeScript": [] "InvokeScript": [
]
}, },
"WPFFeaturenfs": { "WPFFeaturenfs": {
"Content": "NFS - Network File System", "Content": "NFS - Network File System",
@ -8398,8 +8508,8 @@ $sync.configs.feature = '{
], ],
"InvokeScript": [ "InvokeScript": [
"nfsadmin client stop", "nfsadmin client stop",
"Set-ItemProperty -Path ''HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default'' -Name ''AnonymousUID'' -Type DWord -Value 0", "Set-ItemProperty -Path \u0027\u0027HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default\u0027\u0027 -Name \u0027\u0027AnonymousUID\u0027\u0027 -Type DWord -Value 0",
"Set-ItemProperty -Path ''HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default'' -Name ''AnonymousGID'' -Type DWord -Value 0", "Set-ItemProperty -Path \u0027\u0027HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default\u0027\u0027 -Name \u0027\u0027AnonymousGID\u0027\u0027 -Type DWord -Value 0",
"nfsadmin client start", "nfsadmin client start",
"nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i" "nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i"
] ]
@ -8410,13 +8520,15 @@ $sync.configs.feature = '{
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a015_", "Order": "a015_",
"feature": [], "feature": [
],
"InvokeScript": [ "InvokeScript": [
" "
If (!(Test-Path ''HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer'')) { If (!(Test-Path \u0027\u0027HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\u0027\u0027)) {
New-Item -Path ''HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer'' -Force | Out-Null New-Item -Path \u0027\u0027HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\u0027\u0027 -Force | Out-Null
} }
New-ItemProperty -Path ''HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer'' -Name ''DisableSearchBoxSuggestions'' -Type DWord -Value 0 -Force New-ItemProperty -Path \u0027\u0027HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\u0027\u0027 -Name \u0027\u0027DisableSearchBoxSuggestions\u0027\u0027 -Type DWord -Value 0 -Force
Stop-Process -name explorer -force Stop-Process -name explorer -force
" "
] ]
@ -8427,13 +8539,15 @@ $sync.configs.feature = '{
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a016_", "Order": "a016_",
"feature": [], "feature": [
],
"InvokeScript": [ "InvokeScript": [
" "
If (!(Test-Path ''HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer'')) { If (!(Test-Path \u0027\u0027HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\u0027\u0027)) {
New-Item -Path ''HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer'' -Force | Out-Null New-Item -Path \u0027\u0027HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\u0027\u0027 -Force | Out-Null
} }
New-ItemProperty -Path ''HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer'' -Name ''DisableSearchBoxSuggestions'' -Type DWord -Value 1 -Force New-ItemProperty -Path \u0027\u0027HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\u0027\u0027 -Name \u0027\u0027DisableSearchBoxSuggestions\u0027\u0027 -Type DWord -Value 1 -Force
Stop-Process -name explorer -force Stop-Process -name explorer -force
" "
] ]
@ -8444,14 +8558,16 @@ $sync.configs.feature = '{
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a017_", "Order": "a017_",
"feature": [], "feature": [
],
"InvokeScript": [ "InvokeScript": [
" "
New-ItemProperty -Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager'' -Name ''EnablePeriodicBackup'' -Type DWord -Value 1 -Force New-ItemProperty -Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\u0027\u0027 -Name \u0027\u0027EnablePeriodicBackup\u0027\u0027 -Type DWord -Value 1 -Force
New-ItemProperty -Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager'' -Name ''BackupCount'' -Type DWord -Value 2 -Force New-ItemProperty -Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\u0027\u0027 -Name \u0027\u0027BackupCount\u0027\u0027 -Type DWord -Value 2 -Force
$action = New-ScheduledTaskAction -Execute ''schtasks'' -Argument ''/run /i /tn \"\\Microsoft\\Windows\\Registry\\RegIdleBackup\"'' $action = New-ScheduledTaskAction -Execute \u0027\u0027schtasks\u0027\u0027 -Argument \u0027\u0027/run /i /tn \"\\Microsoft\\Windows\\Registry\\RegIdleBackup\"\u0027\u0027
$trigger = New-ScheduledTaskTrigger -Daily -At 00:30 $trigger = New-ScheduledTaskTrigger -Daily -At 00:30
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName ''AutoRegBackup'' -Description ''Create System Registry Backups'' -User ''System'' Register-ScheduledTask -Action $action -Trigger $trigger -TaskName \u0027\u0027AutoRegBackup\u0027\u0027 -Description \u0027\u0027Create System Registry Backups\u0027\u0027 -User \u0027\u0027System\u0027\u0027
" "
] ]
}, },
@ -8461,14 +8577,16 @@ $sync.configs.feature = '{
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a018_", "Order": "a018_",
"feature": [], "feature": [
],
"InvokeScript": [ "InvokeScript": [
" "
If (!(Test-Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood'')) { If (!(Test-Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood\u0027\u0027)) {
New-Item -Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood'' -Force | Out-Null New-Item -Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood\u0027\u0027 -Force | Out-Null
} }
New-ItemProperty -Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood'' -Name ''Enabled'' -Type DWord -Value 1 -Force New-ItemProperty -Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood\u0027\u0027 -Name \u0027\u0027Enabled\u0027\u0027 -Type DWord -Value 1 -Force
Start-Process -FilePath cmd.exe -ArgumentList ''/c bcdedit /Set {Current} BootMenuPolicy Legacy'' -Wait Start-Process -FilePath cmd.exe -ArgumentList \u0027\u0027/c bcdedit /Set {Current} BootMenuPolicy Legacy\u0027\u0027 -Wait
" "
] ]
}, },
@ -8478,14 +8596,16 @@ $sync.configs.feature = '{
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a019_", "Order": "a019_",
"feature": [], "feature": [
],
"InvokeScript": [ "InvokeScript": [
" "
If (!(Test-Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood'')) { If (!(Test-Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood\u0027\u0027)) {
New-Item -Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood'' -Force | Out-Null New-Item -Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood\u0027\u0027 -Force | Out-Null
} }
New-ItemProperty -Path ''HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood'' -Name ''Enabled'' -Type DWord -Value 0 -Force New-ItemProperty -Path \u0027\u0027HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood\u0027\u0027 -Name \u0027\u0027Enabled\u0027\u0027 -Type DWord -Value 0 -Force
Start-Process -FilePath cmd.exe -ArgumentList ''/c bcdedit /Set {Current} BootMenuPolicy Standard'' -Wait Start-Process -FilePath cmd.exe -ArgumentList \u0027\u0027/c bcdedit /Set {Current} BootMenuPolicy Standard\u0027\u0027 -Wait
" "
] ]
}, },
@ -8743,7 +8863,7 @@ $sync.configs.tweaks = '{
}, },
"WPFTweaksHiber": { "WPFTweaksHiber": {
"Content": "Disable Hibernation", "Content": "Disable Hibernation",
"Description": "Hibernation is really meant for laptops as it saves what&#39;s in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don&#39;t be like Bob. Bob likes hibernation.", "Description": "Hibernation is really meant for laptops as it saves what\u0026#39;s in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don\u0026#39;t be like Bob. Bob likes hibernation.",
"category": "Essential Tweaks", "category": "Essential Tweaks",
"panel": "1", "panel": "1",
"Order": "a005_", "Order": "a005_",
@ -8875,7 +8995,7 @@ $sync.configs.tweaks = '{
}, },
"WPFTweaksServices": { "WPFTweaksServices": {
"Content": "Set Services to Manual", "Content": "Set Services to Manual",
"Description": "Turns a bunch of system services to manual that don&#39;t need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand.", "Description": "Turns a bunch of system services to manual that don\u0026#39;t need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand.",
"category": "Essential Tweaks", "category": "Essential Tweaks",
"panel": "1", "panel": "1",
"Order": "a014_", "Order": "a014_",
@ -10908,8 +11028,8 @@ $sync.configs.tweaks = '{
], ],
"InvokeScript": [ "InvokeScript": [
" "
$TeamsPath = [System.IO.Path]::Combine($env:LOCALAPPDATA, ''Microsoft'', ''Teams'') $TeamsPath = [System.IO.Path]::Combine($env:LOCALAPPDATA, \u0027\u0027Microsoft\u0027\u0027, \u0027\u0027Teams\u0027\u0027)
$TeamsUpdateExePath = [System.IO.Path]::Combine($TeamsPath, ''Update.exe'') $TeamsUpdateExePath = [System.IO.Path]::Combine($TeamsPath, \u0027\u0027Update.exe\u0027\u0027)
Write-Host \"Stopping Teams process...\" Write-Host \"Stopping Teams process...\"
Stop-Process -Name \"*teams*\" -Force -ErrorAction SilentlyContinue Stop-Process -Name \"*teams*\" -Force -ErrorAction SilentlyContinue
@ -10932,11 +11052,11 @@ $sync.configs.tweaks = '{
Write-Host \"Deleting Teams uninstall registry key\" Write-Host \"Deleting Teams uninstall registry key\"
# Uninstall from Uninstall registry key UninstallString # Uninstall from Uninstall registry key UninstallString
$us = (Get-ChildItem -Path HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall, HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall | Get-ItemProperty | Where-Object { $_.DisplayName -like ''*Teams*''}).UninstallString $us = (Get-ChildItem -Path HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall, HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall | Get-ItemProperty | Where-Object { $_.DisplayName -like \u0027\u0027*Teams*\u0027\u0027}).UninstallString
if ($us.Length -gt 0) { if ($us.Length -gt 0) {
$us = ($us.Replace(''/I'', ''/uninstall '') + '' /quiet'').Replace('' '', '' '') $us = ($us.Replace(\u0027\u0027/I\u0027\u0027, \u0027\u0027/uninstall \u0027\u0027) + \u0027\u0027 /quiet\u0027\u0027).Replace(\u0027\u0027 \u0027\u0027, \u0027\u0027 \u0027\u0027)
$FilePath = ($us.Substring(0, $us.IndexOf(''.exe'') + 4).Trim()) $FilePath = ($us.Substring(0, $us.IndexOf(\u0027\u0027.exe\u0027\u0027) + 4).Trim())
$ProcessArgs = ($us.Substring($us.IndexOf(''.exe'') + 5).Trim().replace('' '', '' '')) $ProcessArgs = ($us.Substring($us.IndexOf(\u0027\u0027.exe\u0027\u0027) + 5).Trim().replace(\u0027\u0027 \u0027\u0027, \u0027\u0027 \u0027\u0027))
$proc = Start-Process -FilePath $FilePath -Args $ProcessArgs -PassThru $proc = Start-Process -FilePath $FilePath -Args $ProcessArgs -PassThru
$proc.WaitForExit() $proc.WaitForExit()
} }
@ -10969,7 +11089,7 @@ $sync.configs.tweaks = '{
# Check if the SystemRestorePointCreationFrequency value exists # Check if the SystemRestorePointCreationFrequency value exists
$exists = Get-ItemProperty -path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -ErrorAction SilentlyContinue $exists = Get-ItemProperty -path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -ErrorAction SilentlyContinue
if($null -eq $exists){ if($null -eq $exists){
write-host ''Changing system to allow multiple restore points per day'' write-host \u0027\u0027Changing system to allow multiple restore points per day\u0027\u0027
Set-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -Value \"0\" -Type DWord -Force -ErrorAction Stop | Out-Null Set-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -Value \"0\" -Type DWord -Force -ErrorAction Stop | Out-Null
} }
@ -11141,8 +11261,8 @@ $sync.configs.tweaks = '{
} }
foreach ($file in $lmsFiles) { foreach ($file in $lmsFiles) {
Write-Host \"Taking ownership of file: $($file.FullName)\"; Write-Host \"Taking ownership of file: $($file.FullName)\";
& icacls $($file.FullName) /grant Administrators:F /T /C /Q; \u0026 icacls $($file.FullName) /grant Administrators:F /T /C /Q;
& takeown /F $($file.FullName) /A /R /D Y; \u0026 takeown /F $($file.FullName) /A /R /D Y;
Write-Host \"Deleting file: $($file.FullName)\"; Write-Host \"Deleting file: $($file.FullName)\";
Remove-Item $($file.FullName) -Force -ErrorAction SilentlyContinue; Remove-Item $($file.FullName) -Force -ErrorAction SilentlyContinue;
} }
@ -11151,7 +11271,7 @@ $sync.configs.tweaks = '{
} else { } else {
Write-Host \"All found LMS.exe files have been deleted.\"; Write-Host \"All found LMS.exe files have been deleted.\";
} }
Write-Host ''Intel LMS vPro service has been disabled, removed, and blocked.''; Write-Host \u0027\u0027Intel LMS vPro service has been disabled, removed, and blocked.\u0027\u0027;
" "
], ],
"UndoScript": [ "UndoScript": [
@ -11178,13 +11298,13 @@ $sync.configs.tweaks = '{
Start-Process -FilePath $OneDriveExe -ArgumentList \"$OneDriveArgs /silent\" -NoNewWindow -Wait Start-Process -FilePath $OneDriveExe -ArgumentList \"$OneDriveArgs /silent\" -NoNewWindow -Wait
} }
else{ else{
Write-Host \"Onedrive dosn''t seem to be installed anymore\" -ForegroundColor Red Write-Host \"Onedrive dosn\u0027\u0027t seem to be installed anymore\" -ForegroundColor Red
return return
} }
# Check if OneDrive got Uninstalled # Check if OneDrive got Uninstalled
if (-not (Test-Path $regPath)){ if (-not (Test-Path $regPath)){
Write-Host \"Copy downloaded Files from the OneDrive Folder to Root UserProfile\" Write-Host \"Copy downloaded Files from the OneDrive Folder to Root UserProfile\"
Start-Process -FilePath powershell -ArgumentList \"robocopy ''$($OneDrivePath)'' ''$($env:USERPROFILE.TrimEnd())\\'' /mov /e /xj\" -NoNewWindow -Wait Start-Process -FilePath powershell -ArgumentList \"robocopy \u0027\u0027$($OneDrivePath)\u0027\u0027 \u0027\u0027$($env:USERPROFILE.TrimEnd())\\\u0027\u0027 /mov /e /xj\" -NoNewWindow -Wait
Write-Host \"Removing OneDrive leftovers\" Write-Host \"Removing OneDrive leftovers\"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\" Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\"
@ -11210,7 +11330,7 @@ $sync.configs.tweaks = '{
Remove-Item -Force -ErrorAction SilentlyContinue \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\OneDrive.lnk\" Remove-Item -Force -ErrorAction SilentlyContinue \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\OneDrive.lnk\"
Write-Host \"Removing scheduled task\" Write-Host \"Removing scheduled task\"
Get-ScheduledTask -TaskPath ''\\'' -TaskName ''OneDrive*'' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false Get-ScheduledTask -TaskPath \u0027\u0027\\\u0027\u0027 -TaskName \u0027\u0027OneDrive*\u0027\u0027 -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
# Add Shell folders restoring default locations # Add Shell folders restoring default locations
Write-Host \"Shell Fixing\" Write-Host \"Shell Fixing\"
@ -11311,7 +11431,7 @@ $sync.configs.tweaks = '{
# 0 = Do not download or install updates automatically # 0 = Do not download or install updates automatically
# 2 = Automatically download updates but let the user choose when to install them # 2 = Automatically download updates but let the user choose when to install them
# 3 = Automatically download and install updates (default value) # 3 = Automatically download and install updates (default value)
# 4 = Notify the user when an update is available but don''t download or install it automatically # 4 = Notify the user when an update is available but don\u0027\u0027t download or install it automatically
# = It notifies the user using Windows Notifications. It runs on startup without having to have a Service/Acrobat/Reader running, therefore 0 is the next best thing. # = It notifies the user using Windows Notifications. It runs on startup without having to have a Service/Acrobat/Reader running, therefore 0 is the next best thing.
$rootPath = \"HKLM:\\SOFTWARE\\WOW6432Node\\Adobe\\Adobe ARM\\Legacy\\Acrobat\" $rootPath = \"HKLM:\\SOFTWARE\\WOW6432Node\\Adobe\\Adobe ARM\\Legacy\\Acrobat\"
@ -11430,7 +11550,7 @@ $sync.configs.tweaks = '{
}, },
"WPFTweaksBlockAdobeNet": { "WPFTweaksBlockAdobeNet": {
"Content": "Adobe Network Block", "Content": "Adobe Network Block",
"Description": "Reduce user interruptions by selectively blocking connections to Adobe&#39;s activation and telemetry servers. Credit: Ruddernation-Designs", "Description": "Reduce user interruptions by selectively blocking connections to Adobe\u0026#39;s activation and telemetry servers. Credit: Ruddernation-Designs",
"category": "z__Advanced Tweaks - CAUTION", "category": "z__Advanced Tweaks - CAUTION",
"panel": "1", "panel": "1",
"Order": "a021_", "Order": "a021_",
@ -11591,7 +11711,7 @@ $sync.configs.tweaks = '{
}, },
"WPFTweaksDVR": { "WPFTweaksDVR": {
"Content": "Disable GameDVR", "Content": "Disable GameDVR",
"Description": "GameDVR is a Windows App that is a dependency for some Store Games. I&#39;ve never met someone that likes it, but it&#39;s there for the XBOX crowd.", "Description": "GameDVR is a Windows App that is a dependency for some Store Games. I\u0026#39;ve never met someone that likes it, but it\u0026#39;s there for the XBOX crowd.",
"category": "Essential Tweaks", "category": "Essential Tweaks",
"panel": "1", "panel": "1",
"Order": "a005_", "Order": "a005_",
@ -13379,7 +13499,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstalldmt" Content="Dual Monitor Tools" ToolTip="Dual Monitor Tools (DMT) is a FOSS app that customize handling multiple monitors and even lock the mouse on specific monitor. Useful for full screen games and apps that does not handle well a second monitor or helps the workflow." Margin="0,0,2,0"/><TextBlock Name="WPFInstalldmtLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://dualmonitortool.sourceforge.net/" /> <CheckBox Name="WPFInstalldmt" Content="Dual Monitor Tools" ToolTip="Dual Monitor Tools (DMT) is a FOSS app that customize handling multiple monitors and even lock the mouse on specific monitor. Useful for full screen games and apps that does not handle well a second monitor or helps the workflow." Margin="0,0,2,0"/><TextBlock Name="WPFInstalldmtLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://dualmonitortool.sourceforge.net/" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<CheckBox Name="WPFInstalldropox" Content="Dropbox" ToolTip="The Dropbox desktop app! Save hard drive space, share and edit files and send for signature ? all without the distraction of countless browser tabs." Margin="0,0,2,0"/><TextBlock Name="WPFInstalldropoxLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.dropbox.com/en_GB/desktop" /> <CheckBox Name="WPFInstalldropox" Content="Dropbox" ToolTip="The Dropbox desktop app! Save hard drive space, share and edit files and send for signature ??? all without the distraction of countless browser tabs." Margin="0,0,2,0"/><TextBlock Name="WPFInstalldropoxLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.dropbox.com/en_GB/desktop" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<CheckBox Name="WPFInstallduplicati" Content="Duplicati" ToolTip="Duplicati is an open-source backup solution that supports encrypted, compressed, and incremental backups. It is designed to securely store data on cloud storage services." Margin="0,0,2,0"/><TextBlock Name="WPFInstallduplicatiLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.duplicati.com/" /> <CheckBox Name="WPFInstallduplicati" Content="Duplicati" ToolTip="Duplicati is an open-source backup solution that supports encrypted, compressed, and incremental backups. It is designed to securely store data on cloud storage services." Margin="0,0,2,0"/><TextBlock Name="WPFInstallduplicatiLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.duplicati.com/" />
@ -14274,6 +14394,16 @@ Invoke-WPFRunspace -ScriptBlock {
# Print the logo # Print the logo
Invoke-WPFFormVariables Invoke-WPFFormVariables
# download the logo
$logoUrl = "https://christitus.com/images/logo-full.png"
# Download the image
$logoPath = "$env:TEMP\cttlogo.png"
Invoke-WebRequest -Uri $logoUrl -OutFile $logoPath
# Progress bar in taskbaritem > Set-WinUtilProgressbar
$sync["Form"].TaskbarItemInfo = New-Object System.Windows.Shell.TaskbarItemInfo
Set-WinUtilTaskbaritem -state "None"
# Set the titlebar # Set the titlebar
$sync["Form"].title = $sync["Form"].title + " " + $sync.version $sync["Form"].title = $sync["Form"].title + " " + $sync.version
# Set the commands that will run when the form is closed # Set the commands that will run when the form is closed
@ -14408,37 +14538,8 @@ Add-Type @"
} }
} }
# Using a TaskbarItem Overlay until someone figures out how to replace the icon correctly
# URL of the image
$imageUrl = "https://christitus.com/images/logo-full.png"
# Download the image
$imagePath = "$env:TEMP\logo-full.png"
Invoke-WebRequest -Uri $imageUrl -OutFile $imagePath
# Read the image file as a byte array
$imageBytes = [System.IO.File]::ReadAllBytes($imagePath)
# Convert the byte array to a Base64 string
$base64String = [System.Convert]::ToBase64String($imageBytes)
# Create a streaming image by streaming the base64 string to a bitmap streamsource
$bitmap = New-Object System.Windows.Media.Imaging.BitmapImage
$bitmap.BeginInit()
$bitmap.StreamSource = [System.IO.MemoryStream][System.Convert]::FromBase64String($base64String)
$bitmap.EndInit()
$bitmap.Freeze()
# Ensure TaskbarItemInfo is created if not already
if (-not $sync["Form"].TaskbarItemInfo) {
$sync["Form"].TaskbarItemInfo = New-Object System.Windows.Shell.TaskbarItemInfo
}
# Set the overlay icon for the taskbar # Set the overlay icon for the taskbar
$sync["Form"].TaskbarItemInfo.Overlay = $bitmap Set-WinUtilTaskbaritem -overlay $logoPath
$rect = New-Object RECT $rect = New-Object RECT
[Window]::GetWindowRect($windowHandle, [ref]$rect) [Window]::GetWindowRect($windowHandle, [ref]$rect)