diff --git a/config/applications.json b/config/applications.json
index 70d30517..3d44c49e 100644
--- a/config/applications.json
+++ b/config/applications.json
@@ -407,14 +407,6 @@
"link": "https://discord.com/",
"winget": "Discord.Discord"
},
- "WPFInstallditto": {
- "category": "Utilities",
- "choco": "ditto",
- "content": "Ditto",
- "description": "Ditto is an extension to the standard windows clipboard.",
- "link": "https://ditto-cp.sourceforge.io/",
- "winget": "Ditto.Ditto"
- },
"WPFInstalldockerdesktop": {
"category": "Development",
"choco": "docker-desktop",
@@ -799,6 +791,14 @@
"link": "https://www.gog.com/galaxy",
"winget": "GOG.Galaxy"
},
+ "WPFInstallgitify": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Gitify",
+ "description": "GitHub notifications on your menu bar.",
+ "link": "https://www.gitify.io/",
+ "winget": "Gitify.Gitify"
+ },
"WPFInstallgolang": {
"category": "Development",
"choco": "golang",
@@ -1279,6 +1279,14 @@
"link": "https://www.msi.com/Landing/afterburner",
"winget": "Guru3D.Afterburner"
},
+ "WPFInstallmullvadvpn": {
+ "category": "Pro Tools",
+ "choco": "mullvad-app",
+ "content": "Mullvad VPN",
+ "description": "This is the VPN client software for the Mullvad VPN service.",
+ "link": "https://github.com/mullvad/mullvadvpn-app",
+ "winget": "MullvadVPN.MullvadVPN"
+ },
"WPFInstallBorderlessGaming": {
"category": "Utilities",
"choco": "na",
@@ -2847,5 +2855,13 @@
"description":"FormatFactory is an ad-supported freeware multimedia converter that can convert video, audio, and picture files. It is also capable of ripping DVDs and CDs to other file formats, as well as creating .iso images. It can also join multiple video files together into one.",
"link": "http://www.pcfreetime.com/formatfactory/",
"winget": "na"
+ },
+ "WPFInstalldropox": {
+ "category": "Utilities",
+ "choco": "na",
+ "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.",
+ "link": "https://www.dropbox.com/en_GB/desktop",
+ "winget": "Dropbox.Dropbox"
}
}
diff --git a/config/preset.json b/config/preset.json
index d0640ce4..f19742d0 100644
--- a/config/preset.json
+++ b/config/preset.json
@@ -1,6 +1,7 @@
{
"Standard": [
"WPFTweaksAH",
+ "WPFTweaksConsumerFeatures",
"WPFTweaksDVR",
"WPFTweaksHiber",
"WPFTweaksHome",
@@ -16,6 +17,7 @@
"WPFTweaksTeredo"
],
"Minimal": [
+ "WPFTweaksConsumerFeatures",
"WPFTweaksHome",
"WPFTweaksServices",
"WPFTweaksTele"
diff --git a/config/tweaks.json b/config/tweaks.json
index d6375031..e15fb8b6 100644
--- a/config/tweaks.json
+++ b/config/tweaks.json
@@ -1580,6 +1580,22 @@
}
]
},
+ "WPFTweaksConsumerFeatures":{
+ "Content": "Disable ConsumerFeatures",
+ "Description": "Windows 10 will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
+ "category": "Essential Tweaks",
+ "panel": "1",
+ "Order": "a003_",
+ "registry": [
+ {
+ "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
+ "OriginalValue": "0",
+ "Name": "DisableWindowsConsumerFeatures",
+ "Value": "1",
+ "Type": "DWord"
+ }
+ ]
+ },
"WPFTweaksTele": {
"Content": "Disable Telemetry",
"Description": "Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser.",
@@ -1738,13 +1754,6 @@
"Value": "0",
"Type": "DWord"
},
- {
- "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
- "OriginalValue": "0",
- "Name": "DisableWindowsConsumerFeatures",
- "Value": "1",
- "Type": "DWord"
- },
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Siuf\\Rules",
"OriginalValue": "0",
@@ -2697,7 +2706,7 @@
},
"WPFTweaksBlockAdobeNet": {
"Content": "Adobe Network Block",
- "Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. ",
+ "Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a021_",
diff --git a/functions/private/Invoke-MicroWin-Helper.ps1 b/functions/private/Invoke-MicroWin-Helper.ps1
index 2f8011a2..c5fdff8a 100644
--- a/functions/private/Invoke-MicroWin-Helper.ps1
+++ b/functions/private/Invoke-MicroWin-Helper.ps1
@@ -159,7 +159,13 @@ function Remove-ProvisionedPackages([switch] $keepSecurity = $false)
{
$status = "Removing Provisioned $($appx.PackageName)"
Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100)
- Remove-AppxProvisionedPackage -Path $scratchDir -PackageName $appx.PackageName -ErrorAction SilentlyContinue
+ try {
+ Remove-AppxProvisionedPackage -Path $scratchDir -PackageName $appx.PackageName -ErrorAction SilentlyContinue
+ }
+ catch {
+ Write-Host "Application $($appx.PackageName) could not be removed"
+ continue
+ }
}
Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed
}
diff --git a/functions/public/Invoke-WPFPanelAutologin.ps1 b/functions/public/Invoke-WPFPanelAutologin.ps1
index 5291869a..6a2da7b7 100644
--- a/functions/public/Invoke-WPFPanelAutologin.ps1
+++ b/functions/public/Invoke-WPFPanelAutologin.ps1
@@ -5,6 +5,8 @@ function Invoke-WPFPanelAutologin {
Enables autologin using Sysinternals Autologon.exe
#>
- curl.exe -ss "https://live.sysinternals.com/Autologon.exe" -o $env:temp\autologin.exe # Official Microsoft recommendation https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
- cmd /c $env:temp\autologin.exe /accepteula
-}
\ No newline at end of file
+
+ # Official Microsoft recommendation: https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
+ Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe"
+ cmd /c "$env:temp\autologin.exe" /accepteula
+}
diff --git a/scripts/main.ps1 b/scripts/main.ps1
index 572ecee4..48bf2b67 100644
--- a/scripts/main.ps1
+++ b/scripts/main.ps1
@@ -287,19 +287,37 @@ Add-Type @"
}
}
- # need to experiemnt more
- # setting icon for the windows is still not working
- # $pngUrl = "https://christitus.com/images/logo-full.png"
- # $pngPath = "$env:TEMP\cttlogo.png"
- # $iconPath = "$env:TEMP\cttlogo.ico"
- # # Download the PNG file
- # Invoke-WebRequest -Uri $pngUrl -OutFile $pngPath
- # if (Test-Path -Path $pngPath) {
- # ConvertTo-Icon -bitmapPath $pngPath -iconPath $iconPath
- # }
- # $icon = [System.Drawing.Icon]::ExtractAssociatedIcon($iconPath)
- # Write-Host $icon.Handle
- # [Window]::SendMessage($windowHandle, 0x80, [IntPtr]::Zero, $icon.Handle)
+
+ # 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
+ $sync["Form"].TaskbarItemInfo.Overlay = $bitmap
+
$rect = New-Object RECT
[Window]::GetWindowRect($windowHandle, [ref]$rect)
@@ -475,7 +493,6 @@ $sync["AboutMenuItem"].Add_Click({
$authorInfo = @"
Author : @christitustech
Runspace : @DeveloperDurp
-GUI : @KonTy
MicroWin : @KonTy
GitHub : ChrisTitusTech/winutil
Version : $($sync.version)
diff --git a/winutil.ps1 b/winutil.ps1
index 682c746b..9ec18d62 100644
--- a/winutil.ps1
+++ b/winutil.ps1
@@ -8,7 +8,7 @@
Author : Chris Titus @christitustech
Runspace Author: @DeveloperDurp
GitHub : https://github.com/ChrisTitusTech
- Version : 24.06.25
+ Version : 24.06.28
#>
param (
[switch]$Debug,
@@ -45,7 +45,7 @@ Add-Type -AssemblyName System.Windows.Forms
# Variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $PSScriptRoot
-$sync.version = "24.06.25"
+$sync.version = "24.06.28"
$sync.configs = @{}
$sync.ProcessRunning = $false
@@ -1118,7 +1118,13 @@ function Remove-ProvisionedPackages([switch] $keepSecurity = $false)
{
$status = "Removing Provisioned $($appx.PackageName)"
Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100)
- Remove-AppxProvisionedPackage -Path $scratchDir -PackageName $appx.PackageName -ErrorAction SilentlyContinue
+ try {
+ Remove-AppxProvisionedPackage -Path $scratchDir -PackageName $appx.PackageName -ErrorAction SilentlyContinue
+ }
+ catch {
+ Write-Host "Application $($appx.PackageName) could not be removed"
+ continue
+ }
}
Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed
}
@@ -4418,8 +4424,10 @@ function Invoke-WPFPanelAutologin {
Enables autologin using Sysinternals Autologon.exe
#>
- curl.exe -ss "https://live.sysinternals.com/Autologon.exe" -o $env:temp\autologin.exe # Official Microsoft recommendation https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
- cmd /c $env:temp\autologin.exe /accepteula
+
+ # Official Microsoft recommendation: https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
+ Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe"
+ cmd /c "$env:temp\autologin.exe" /accepteula
}
function Invoke-WPFPanelDISM {
<#
@@ -5616,6 +5624,14 @@ $sync.configs.applications = '{
"link": "https://copyq.readthedocs.io/",
"winget": "hluk.CopyQ"
},
+ "WPFInstallditto": {
+ "category": "Utilities",
+ "choco": "ditto",
+ "content": "Ditto (Clipboard Manager)",
+ "description": "Ditto is an extension to the Windows Clipboard. You copy something to the Clipboard and Ditto takes what you copied and stores it in a database to retrieve at a later time.",
+ "link": "https://github.com/sabrogden/Ditto",
+ "winget": "Ditto.Ditto"
+ },
"WPFInstallcpuz": {
"category": "Utilities",
"choco": "cpu-z",
@@ -5704,14 +5720,6 @@ $sync.configs.applications = '{
"link": "https://discord.com/",
"winget": "Discord.Discord"
},
- "WPFInstallditto": {
- "category": "Utilities",
- "choco": "ditto",
- "content": "Ditto",
- "description": "Ditto is an extension to the standard windows clipboard.",
- "link": "https://ditto-cp.sourceforge.io/",
- "winget": "Ditto.Ditto"
- },
"WPFInstalldockerdesktop": {
"category": "Development",
"choco": "docker-desktop",
@@ -6096,6 +6104,14 @@ $sync.configs.applications = '{
"link": "https://www.gog.com/galaxy",
"winget": "GOG.Galaxy"
},
+ "WPFInstallgitify": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Gitify",
+ "description": "GitHub notifications on your menu bar.",
+ "link": "https://www.gitify.io/",
+ "winget": "Gitify.Gitify"
+ },
"WPFInstallgolang": {
"category": "Development",
"choco": "golang",
@@ -6576,6 +6592,14 @@ $sync.configs.applications = '{
"link": "https://www.msi.com/Landing/afterburner",
"winget": "Guru3D.Afterburner"
},
+ "WPFInstallmullvadvpn": {
+ "category": "Pro Tools",
+ "choco": "mullvad-app",
+ "content": "Mullvad VPN",
+ "description": "This is the VPN client software for the Mullvad VPN service.",
+ "link": "https://github.com/mullvad/mullvadvpn-app",
+ "winget": "MullvadVPN.MullvadVPN"
+ },
"WPFInstallBorderlessGaming": {
"category": "Utilities",
"choco": "na",
@@ -8135,6 +8159,14 @@ $sync.configs.applications = '{
"description": "Kicad is an open-source EDA tool. It'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/",
"winget": "KiCad.KiCad"
+ },
+ "WPFInstalldropox": {
+ "category": "Utilities",
+ "choco": "na",
+ "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.",
+ "link": "https://www.dropbox.com/en_GB/desktop",
+ "winget": "Dropbox.Dropbox"
}
}' | convertfrom-json
$sync.configs.dns = '{
@@ -8432,6 +8464,7 @@ $sync.configs.feature = '{
$sync.configs.preset = '{
"Standard": [
"WPFTweaksAH",
+ "WPFTweaksConsumerFeatures",
"WPFTweaksDVR",
"WPFTweaksHiber",
"WPFTweaksHome",
@@ -8447,6 +8480,7 @@ $sync.configs.preset = '{
"WPFTweaksTeredo"
],
"Minimal": [
+ "WPFTweaksConsumerFeatures",
"WPFTweaksHome",
"WPFTweaksServices",
"WPFTweaksTele"
@@ -10131,6 +10165,22 @@ $sync.configs.tweaks = '{
}
]
},
+ "WPFTweaksConsumerFeatures": {
+ "Content": "Disable ConsumerFeatures",
+ "Description": "Windows 10 will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
+ "category": "Essential Tweaks",
+ "panel": "1",
+ "Order": "a003_",
+ "registry": [
+ {
+ "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
+ "OriginalValue": "0",
+ "Name": "DisableWindowsConsumerFeatures",
+ "Value": "1",
+ "Type": "DWord"
+ }
+ ]
+ },
"WPFTweaksTele": {
"Content": "Disable Telemetry",
"Description": "Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser.",
@@ -10289,13 +10339,6 @@ $sync.configs.tweaks = '{
"Value": "0",
"Type": "DWord"
},
- {
- "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
- "OriginalValue": "0",
- "Name": "DisableWindowsConsumerFeatures",
- "Value": "1",
- "Type": "DWord"
- },
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Siuf\\Rules",
"OriginalValue": "0",
@@ -11247,7 +11290,7 @@ $sync.configs.tweaks = '{
},
"WPFTweaksBlockAdobeNet": {
"Content": "Adobe Network Block",
- "Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. ",
+ "Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a021_",
@@ -12386,7 +12429,7 @@ $inputXML = '
-
+
@@ -12554,6 +12597,9 @@ $inputXML = '
+
+
+
@@ -12831,15 +12877,15 @@ $inputXML = '
+
+
+
-
-
-
@@ -13054,17 +13100,17 @@ $inputXML = '
-
-
-
-
-
+
+
+
+
+
@@ -13072,6 +13118,9 @@ $inputXML = '
+
+
+
@@ -13187,12 +13236,15 @@ $inputXML = '
-
+
+
+
+
@@ -13273,15 +13325,15 @@ $inputXML = '
+
+
+
-
-
-
@@ -13522,6 +13574,7 @@ $inputXML = '
+
@@ -13537,7 +13590,7 @@ $inputXML = '
-
+
@@ -14196,19 +14249,37 @@ Add-Type @"
}
}
- # need to experiemnt more
- # setting icon for the windows is still not working
- # $pngUrl = "https://christitus.com/images/logo-full.png"
- # $pngPath = "$env:TEMP\cttlogo.png"
- # $iconPath = "$env:TEMP\cttlogo.ico"
- # # Download the PNG file
- # Invoke-WebRequest -Uri $pngUrl -OutFile $pngPath
- # if (Test-Path -Path $pngPath) {
- # ConvertTo-Icon -bitmapPath $pngPath -iconPath $iconPath
- # }
- # $icon = [System.Drawing.Icon]::ExtractAssociatedIcon($iconPath)
- # Write-Host $icon.Handle
- # [Window]::SendMessage($windowHandle, 0x80, [IntPtr]::Zero, $icon.Handle)
+
+ # 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
+ $sync["Form"].TaskbarItemInfo.Overlay = $bitmap
+
$rect = New-Object RECT
[Window]::GetWindowRect($windowHandle, [ref]$rect)
@@ -14384,7 +14455,6 @@ $sync["AboutMenuItem"].Add_Click({
$authorInfo = @"
Author : @christitustech
Runspace : @DeveloperDurp
-GUI : @KonTy
MicroWin : @KonTy
GitHub : ChrisTitusTech/winutil
Version : $($sync.version)
diff --git a/xaml/inputXML.xaml b/xaml/inputXML.xaml
index 9f6a1bfb..ca032916 100644
--- a/xaml/inputXML.xaml
+++ b/xaml/inputXML.xaml
@@ -713,7 +713,7 @@
-
+