diff --git a/.github/workflows/close-old-issues.yaml b/.github/workflows/close-old-issues.yaml
index 1b129a0a..3050c4b1 100644
--- a/.github/workflows/close-old-issues.yaml
+++ b/.github/workflows/close-old-issues.yaml
@@ -25,6 +25,8 @@ jobs:
const inactivityPeriod = new Date();
inactivityPeriod.setDate(inactivityPeriod.getDate() - 14);
+ const labelKeepIssue = 'Keep Issue Open';
+
try {
// Get all open issues with pagination
for await (const response of octokit.paginate.iterator(octokit.rest.issues.listForRepo, {
@@ -36,6 +38,33 @@ jobs:
// Close issues inactive for more than the inactivity period
for (const issue of issues) {
+ const closeIssue = true;
+
+ // Get all Labels of issue, and compared each label with the labelKeepIssue const variable
+ try {
+ const respondIssueLabels = await octokit.request("GET /repos/{owner}/{repo}/issues/{issue_number}/labels", {
+ owner: owner,
+ repo: repo,
+ issue_number: issue.number
+ });
+ const labels = respondIssueLabels.data;
+
+ for (let i = 0; i < labels.length; i++) {
+ const label = labels[i]
+ if (label.name === labelKeepIssue) {
+ console.log(`Issue #${issue.number} will not be closed`);
+ closeIssue = false;
+ break; // Break from the loop, no need to check the remaining Labels.
+ }
+ }
+ } catch (error) {
+ console.error(`Error while Fetching Labels for Issue #${issue.number}, Error: ${error}`);
+ }
+
+ if (!closeIssue) {
+ continue; // Skip the next bit of code
+ }
+
const lastCommentDate = issue.updated_at;
if (new Date(lastCommentDate) < inactivityPeriod) {
try {
diff --git a/README.md b/README.md
index c93e6a43..60c4fec2 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ Some features are avaliable through automation. This allows you to save your con
5. Install the Windows image.
6. In the new Windows, Open PowerShell in the admin mode and run command to automatically apply tweaks and install apps from the config file.
```
-irm https://christitus.com/win -Config [path-to-your-config] -Run | iex
+iex "& { $(irm christitus.com/win) } -Config [path-to-your-config] -Run"
```
7. Have a cup of coffee! Come back when it's done.
diff --git a/config/applications.json b/config/applications.json
index 96b68d97..35e5808b 100644
--- a/config/applications.json
+++ b/config/applications.json
@@ -119,6 +119,14 @@
"link": "https://www.autohotkey.com/",
"winget": "AutoHotkey.AutoHotkey"
},
+ "WPFInstallazuredatastudio": {
+ "category": "Microsoft Tools",
+ "choco": "azure-data-studio",
+ "content": "Microsoft Azure Data Studio",
+ "description": "Azure Data Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.",
+ "link": "https://docs.microsoft.com/sql/azure-data-studio/what-is-azure-data-studio",
+ "winget": "Microsoft.AzureDataStudio"
+ },
"WPFInstallbarrier": {
"category": "Utilities",
"choco": "barrier",
@@ -303,6 +311,14 @@
"link": "https://crystalmark.info/en/software/crystaldiskinfo/",
"winget": "CrystalDewWorld.CrystalDiskInfo"
},
+ "WPFInstallcapframex": {
+ "category": "Utilities",
+ "choco": "na",
+ "content": "CapFrameX",
+ "description": "Frametimes capture and analysis tool based on Intel's PresentMon. Overlay provided by Rivatuner Statistics Server.",
+ "link": "https://www.capframex.com/",
+ "winget": "CXWorld.CapFrameX"
+ },
"WPFInstallcrystaldiskmark": {
"category": "Utilities",
"choco": "crystaldiskmark",
@@ -639,13 +655,13 @@
"link": "https://www.freecadweb.org/",
"winget": "FreeCAD.FreeCAD"
},
- "WPFInstallfxsound": {
+ "WPFInstallorcaslicer": {
"category": "Multimedia Tools",
- "choco": "fxsound",
- "content": "FxSound",
- "description": "FxSound is a cutting-edge audio enhancement software that elevates your listening experience across all media.",
- "link": "https://www.fxsound.com/",
- "winget": "FxSoundLLC.FxSound"
+ "choco": "orcaslicer",
+ "content": "OrcaSlicer",
+ "description": "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)",
+ "link": "https://github.com/SoftFever/OrcaSlicer",
+ "winget": "SoftFever.OrcaSlicer"
},
"WPFInstallfzf": {
"category": "Utilities",
@@ -919,6 +935,38 @@
"link": "https://adoptopenjdk.net/",
"winget": "EclipseAdoptium.Temurin.8.JRE"
},
+ "WPFInstalljava11runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 11",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.11.JRE"
+ },
+ "WPFInstalljava17runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 17",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.17.JRE"
+ },
+ "WPFInstalljava18runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 18",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.18.JRE"
+ },
+ "WPFInstalljava19runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 19",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.19.JRE"
+ },
"WPFInstalljdownloader": {
"category": "Utilities",
"choco": "jdownloader",
@@ -1607,6 +1655,14 @@
"link": "https://www.qbittorrent.org/",
"winget": "qBittorrent.qBittorrent"
},
+ "WPFInstalltixati": {
+ "category": "Utilities",
+ "choco": "tixati.portable",
+ "content": "Tixati",
+ "description": "Tixati is a cross-platform BitTorrent client written in C++ that has been designed to be light on system resources.",
+ "link": "https://www.tixati.com/",
+ "winget": "Tixati.Tixati.Portable"
+ },
"WPFInstallqtox": {
"category": "Communications",
"choco": "qtox",
@@ -1863,6 +1919,14 @@
"link": "https://www.sumatrapdfreader.org/free-pdf-reader.html",
"winget": "SumatraPDF.SumatraPDF"
},
+ "WPFInstallpdfgear": {
+ "category": "Document",
+ "choco": "na",
+ "content": "PDFgear",
+ "description": "PDFgear is a piece of full-featured PDF management software for Windows, Mac, and mobile, and it's completely free to use.",
+ "link": "https://www.pdfgear.com/",
+ "winget": "PDFgear.PDFgear"
+ },
"WPFInstallsunshine": {
"category": "Games",
"choco": "sunshine",
@@ -1895,13 +1959,13 @@
"link": "https://github.com/canton7/SyncTrayzor/",
"winget": "SyncTrayzor.SyncTrayzor"
},
- "WPFInstalltabby": {
- "category": "Utilities",
- "choco": "tabby",
- "content": "Tabby.sh",
- "description": "Tabby is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux",
- "link": "https://tailscale.com/",
- "winget": "Eugeny.Tabby"
+ "WPFInstallsqlmanagementstudio": {
+ "category": "Microsoft Tools",
+ "choco": "sql-server-management-studio",
+ "content": "Microsoft SQL Server Management Studio",
+ "description": "SQL Server Management Studio (SSMS) is an integrated environment for managing any SQL infrastructure, from SQL Server to Azure SQL Database. SSMS provides tools to configure, monitor, and administer instances of SQL Server and databases.",
+ "link": "https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16",
+ "winget": "Microsoft.SQLServerManagementStudio"
},
"WPFInstalltailscale": {
"category": "Utilities",
@@ -1951,6 +2015,14 @@
"link": "https://telegram.org/",
"winget": "Telegram.TelegramDesktop"
},
+ "WPFInstallunigram": {
+ "category": "Communications",
+ "choco": "na",
+ "content": "Unigram",
+ "description": "Unigram - Telegram for Windows",
+ "link": "https://unigramdev.github.io/",
+ "winget": "Telegram.Unigram"
+ },
"WPFInstallterminal": {
"category": "Microsoft Tools",
"choco": "microsoft-windows-terminal",
@@ -2462,5 +2534,45 @@
"description": "TightVNC is a free and Open Source remote desktop software that lets you access and control a computer over the network. With its intuitive interface, you can interact with the remote screen as if you were sitting in front of it. You can open files, launch applications, and perform other actions on the remote desktop almost as if you were physically there",
"link": "https://www.tightvnc.com/",
"winget": "GlavSoft.TightVNC"
+ },
+ "WPFInstallultravnc": {
+ "category": "Utilities",
+ "choco": "ultravnc",
+ "content": "UltraVNC",
+ "description": "UltraVNC is a powerful, easy to use and free - remote pc access softwares - that can display the screen of another computer (via internet or network) on your own screen. The program allows you to use your mouse and keyboard to control the other PC remotely. It means that you can work on a remote computer, as if you were sitting in front of it, right from your current location.",
+ "link": "https://uvnc.com/",
+ "winget": "uvncbvba.UltraVnc"
+ },
+ "WPFInstallwindowsfirewallcontrol": {
+ "category": "Utilities",
+ "choco": "windowsfirewallcontrol",
+ "content": "Windows Firewall Control",
+ "description": "Windows Firewall Control is a powerful tool which extends the functionality of Windows Firewall and provides new extra features which makes Windows Firewall better.",
+ "link": "https://www.binisoft.org/wfc",
+ "winget": "BiniSoft.WindowsFirewallControl"
+ },
+ "WPFInstallvistaswitcher": {
+ "category": "Utilities",
+ "choco": "na",
+ "content": "VistaSwitcher",
+ "description": "VistaSwitcher makes it easier for you to locate windows and switch focus, even on multi-monitor systems. The switcher window consists of an easy-to-read list of all tasks running with clearly shown titles and a full-sized preview of the selected task.",
+ "link": "https://www.ntwind.com/freeware/vistaswitcher.html",
+ "winget": "ntwind.VistaSwitcher"
+ },
+ "WPFInstallautodarkmode": {
+ "category": "Utilities",
+ "choco": "auto-dark-mode",
+ "content": "Windows Auto Dark Mode",
+ "description": "Automatically switches between the dark and light theme of Windows 10 and Windows 11",
+ "link": "https://github.com/AutoDarkMode/Windows-Auto-Night-Mode",
+ "winget": "Armin2208.WindowsAutoNightMode"
+ },
+ "WPFInstallmagicwormhole": {
+ "category": "Utilities",
+ "choco": "magic-wormhole",
+ "content": "Magic Wormhole",
+ "description": "get things from one computer to another, safely",
+ "link": "https://github.com/magic-wormhole/magic-wormhole",
+ "winget": "magic-wormhole.magic-wormhole"
}
}
diff --git a/config/tweaks.json b/config/tweaks.json
index af361c43..e59eabea 100644
--- a/config/tweaks.json
+++ b/config/tweaks.json
@@ -53,6 +53,9 @@
],
"InvokeScript": [
"powercfg.exe /hibernate off"
+ ],
+ "UndoScript": [
+ "powercfg.exe /hibernate on"
]
},
"WPFTweaksHome": {
@@ -1889,6 +1892,13 @@
"Name": "Scheduling Category",
"Value": "High",
"Type": "String"
+ },
+ {
+ "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\UserProfileEngagement",
+ "OriginalValue": "1",
+ "Name": "ScoobeSystemSettingEnabled",
+ "Value": "0",
+ "Type": "DWord"
}
],
"InvokeScript": [
@@ -2234,6 +2244,23 @@
"
]
},
+ "WPFTweaksEndTaskOnTaskbar": {
+ "Content": "Enable End Task With Right Click",
+ "Description": "Enables option to end task when right clicking a program in the taskbar",
+ "category": "Essential Tweaks",
+ "panel": "1",
+ "Order": "a002_",
+ "InvokeScript": [
+ "
+ Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"1\"
+ "
+ ],
+ "UndoScript": [
+ "
+ Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"0\"
+ "
+ ]
+ },
"WPFTweaksOO": {
"Content": "Run OO Shutup",
"Description": "Runs OO Shutup from https://www.oo-software.com/en/shutup10",
@@ -2256,11 +2283,10 @@
"panel": "1",
"Order": "a010_",
"InvokeScript": [
- "Remove-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Recurse -ErrorAction SilentlyContinue"
+ "Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 0 -Type Dword -Force"
],
"UndoScript": [
- "New-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" | Out-Null
- "
+ "Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 1 -Type Dword -Force"
]
},
"WPFTweaksRemoveEdge": {
diff --git a/edgeremoval.ps1 b/edgeremoval.ps1
index 3f698087..5f3a7a3c 100644
--- a/edgeremoval.ps1
+++ b/edgeremoval.ps1
@@ -15,11 +15,6 @@ if ($also_remove_webview -eq 1) {
}
# Administrative Privileges Check
-
-# Get the 'SetPrivilege' method from System.Diagnostics.Process type
-$setPrivilegeMethod = [System.Diagnostics.Process].GetMethod('SetPrivilege', [System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Static)
-
-# List of privileges to set
$privileges = @(
'SeSecurityPrivilege',
'SeTakeOwnershipPrivilege',
@@ -27,44 +22,34 @@ $privileges = @(
'SeRestorePrivilege'
)
-# Invoke the method for each privilege
foreach ($privilege in $privileges) {
- $setPrivilegeMethod.Invoke($null, @($privilege, 2))
+ [System.Diagnostics.Process]::SetPrivilege($privilege, 2)
}
# Edge Removal Procedures
-
-# Define processes to shut down
$processesToShutdown = @(
'explorer', 'Widgets', 'widgetservice', 'msedgewebview2', 'MicrosoftEdge*', 'chredge',
'msedge', 'edge', 'msteams', 'msfamily', 'WebViewHost', 'Clipchamp'
)
-# Kill explorer process
Stop-Process -Name "explorer" -Force -ErrorAction SilentlyContinue
-
-# Kill the processes from the list
$processesToShutdown | ForEach-Object {
Stop-Process -Name $_ -Force -ErrorAction SilentlyContinue
}
-# Set path for Edge executable
$MS = ($env:ProgramFiles, ${env:ProgramFiles(x86)})[[Environment]::Is64BitOperatingSystem] + '\Microsoft\Edge\Application\msedge.exe'
-# Clean up certain registry entries
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\msedge.exe" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ie_to_edge_stub.exe" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\microsoft-edge' -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\MSEdgeHTM' -Recurse -ErrorAction SilentlyContinue
-# Create new registry entries
New-Item -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Name '(Default)' -Value "`"$MS`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Name '(Default)' -Value "`"$MS`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
-# Remove certain registry properties
$registryPaths = @('HKLM:\SOFTWARE\Policies', 'HKLM:\SOFTWARE', 'HKLM:\SOFTWARE\WOW6432Node')
$edgeProperties = @('InstallDefault', 'Install{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}', 'Install{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}')
foreach ($path in $registryPaths) {
@@ -84,7 +69,6 @@ foreach ($base in $registryBases) {
}
}
-# Clear specific registry keys
$registryPaths = @('HKCU:', 'HKLM:')
$nodes = @('', '\Wow6432Node')
foreach ($regPath in $registryPaths) {
@@ -97,7 +81,6 @@ foreach ($regPath in $registryPaths) {
}
}
-# Locate setup.exe and ie_to_edge_stub.exe
$foldersToSearch = @('LocalApplicationData', 'ProgramFilesX86', 'ProgramFiles') | ForEach-Object {
[Environment]::GetFolderPath($_)
}
@@ -112,7 +95,6 @@ foreach ($folder in $foldersToSearch) {
Where-Object { $_.FullName -notlike '*EdgeWebView*' }
}
-# Create directory and copy ie_to_edge_stub.exe to it
$destinationDir = "$env:SystemDrive\Scripts"
New-Item -Path $destinationDir -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
@@ -125,342 +107,147 @@ foreach ($bhoFile in $bhoFiles) {
}
## Work on Appx Removals
-
-# Retrieve AppX provisioned packages and all AppX packages
$provisioned = Get-AppxProvisionedPackage -Online
$appxpackage = Get-AppxPackage -AllUsers
-
-# Initialize empty array for EndOfLife packages
$eol = @()
-# Define user SIDs and retrieve them from the registry
-$store = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore'
-$users = @('S-1-5-18')
-if (Test-Path $store) {
- $users += (Get-ChildItem $store -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -like '*S-1-5-21*' }).PSChildName
-}
-
-# Process AppX packages for removal
-foreach ($choice in $remove_appx) {
- if ([string]::IsNullOrWhiteSpace($choice)) { continue }
-
- # Process provisioned packages
- $provisioned | Where-Object { $_.PackageName -like "*$choice*" } | ForEach-Object {
- if ($skip -Contains $_.PackageName) { return }
-
- $PackageName = $_.PackageName
- $PackageFamilyName = ($appxpackage | Where-Object { $_.Name -eq $_.DisplayName }).PackageFamilyName
-
- # Add registry entries
- New-Item -Path "$store\Deprovisioned\$PackageFamilyName" -Force -ErrorAction SilentlyContinue | Out-Null
- $users | ForEach-Object {
- New-Item -Path "$store\EndOfLife\$_\$PackageName" -Force -ErrorAction SilentlyContinue | Out-Null
- }
- $eol += $PackageName
-
- # Modify non-removable app policy and remove package
- dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 | Out-Null
- Remove-AppxProvisionedPackage -PackageName $PackageName -Online -AllUsers | Out-Null
- }
-
- # Process all AppX packages
- $appxpackage | Where-Object { $_.PackageFullName -like "*$choice*" } | ForEach-Object {
- if ($skip -Contains $_.PackageFullName) { return }
-
- $PackageFullName = $_.PackageFullName
-
- # Add registry entries
- New-Item -Path "$store\Deprovisioned\$_.PackageFamilyName" -Force -ErrorAction SilentlyContinue | Out-Null
- $users | ForEach-Object {
- New-Item -Path "$store\EndOfLife\$_\$PackageFullName" -Force -ErrorAction SilentlyContinue | Out-Null
- }
- $eol += $PackageFullName
-
- # Modify non-removable app policy and remove package
- dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 | Out-Null
- Remove-AppxPackage -Package $PackageFullName -AllUsers | Out-Null
+$store = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Store'
+$storeP = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Store\InstalledApplications'
+foreach ($app in $appxpackage) {
+ $name = $app.Name
+ if ($app.Name -eq "Microsoft.Edge") {
+ $eol += $name
+ } elseif ($app.Name -eq "Microsoft.EdgeBeta" -or $app.Name -eq "Microsoft.EdgeDev" -or $app.Name -eq "Microsoft.EdgeCanary" -or $app.Name -eq "Microsoft.MicrosoftEdge") {
+ $eol += $name
}
}
-## Run Edge setup uninstaller
+$eolApps = $provisioned | Where-Object { $eol -contains $_.DisplayName }
-foreach ($setup in $edges) {
- if (Test-Path $setup) {
- $target = if ($setup -like '*EdgeWebView*') { "--msedgewebview" } else { "--msedge" }
-
- $removalArgs = "--uninstall $target --system-level --verbose-logging --force-uninstall"
-
- Write-Host "$setup $removalArgs"
-
+foreach ($edge in $eolApps) {
+ $edgeName = $edge.DisplayName
+ if (-not ($skip -contains $edgeName)) {
try {
- Start-Process -FilePath $setup -ArgumentList $removalArgs -Wait
- } catch {
- # You may want to add logging or other error handling here.
- }
-
- while ((Get-Process -Name 'setup', 'MicrosoftEdge*' -ErrorAction SilentlyContinue).Path -like '*\Microsoft\Edge*') {
- Start-Sleep -Seconds 3
+ Remove-AppxProvisionedPackage -Online -PackageName $edgeName -ErrorAction SilentlyContinue
+ } catch { }
+ }
+}
+
+foreach ($edge in $appxpackage) {
+ $edgeName = $edge.Name
+ if ($eol -contains $edgeName) {
+ if (-not ($skip -contains $edgeName)) {
+ try {
+ Remove-AppxPackage -Package $edgeName -AllUsers -ErrorAction SilentlyContinue
+ } catch { }
}
}
}
-## Cleanup
+## Redirect shortcuts
+$shortcut_path = "$env:Public\Desktop"
+$shortcut_file = 'Microsoft Edge.lnk'
+$full_path = Join-Path -Path $shortcut_path -ChildPath $shortcut_file
-# Define necessary paths and variables
-$edgePaths = $env:ProgramFiles, ${env:ProgramFiles(x86)}
-$appDataPath = [Environment]::GetFolderPath('ApplicationData')
+if (Test-Path $full_path) {
+ Remove-Item -Path $full_path -Force -ErrorAction SilentlyContinue
+}
-# Uninstall Microsoft Edge Update
-foreach ($path in $edgePaths) {
- $edgeUpdateExe = "$path\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"
- if (Test-Path $edgeUpdateExe) {
- Write-Host $edgeUpdateExe /uninstall
- Start-Process -FilePath $edgeUpdateExe -ArgumentList '/uninstall' -Wait
- while ((Get-Process -Name 'setup','MicrosoftEdge*' -ErrorAction SilentlyContinue).Path -like '*\Microsoft\Edge*') {
- Start-Sleep -Seconds 3
- }
- if ($also_remove_webview -eq 1) {
- foreach ($regPath in 'HKCU:', 'HKLM:') {
- foreach ($node in '', '\Wow6432Node') {
- Remove-Item -Path "$regPath\SOFTWARE$node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" -Recurse -Force -ErrorAction SilentlyContinue
- }
- }
- Remove-Item -Path "$path\Microsoft\EdgeUpdate" -Recurse -Force -ErrorAction SilentlyContinue
- Unregister-ScheduledTask -TaskName 'MicrosoftEdgeUpdate*' -Confirm:$false -ErrorAction SilentlyContinue
+$shortcut_path = "$env:ProgramData\Microsoft\Windows\Start Menu\Programs"
+$shortcut_file = 'Microsoft Edge.lnk'
+$full_path = Join-Path -Path $shortcut_path -ChildPath $shortcut_file
+
+if (Test-Path $full_path) {
+ Remove-Item -Path $full_path -Force -ErrorAction SilentlyContinue
+}
+
+$edgePolicy = 'HKLM:\SOFTWARE\Policies\Microsoft\Edge'
+if (-not (Test-Path $edgePolicy)) {
+ New-Item -Path $edgePolicy -Force | Out-Null
+}
+
+$edgePrefs = @{
+ 'Dword' = @{
+ 'BrowserReplacementEnabled' = 1
+ 'HideFirstRunExperience' = 1
+ 'HideImportEdgeFavoritesPrompt' = 1
+ 'HideSyncSetupExperience' = 1
+ 'FavoritesBarVisibility' = 1
+ }
+ 'String' = @{
+ 'AutoplayAllowed' = 'AllowOnce'
+ }
+}
+
+foreach ($entryType in $edgePrefs.Keys) {
+ foreach ($prefName in $edgePrefs[$entryType].Keys) {
+ Set-ItemProperty -Path $edgePolicy -Name $prefName -Value $edgePrefs[$entryType][$prefName] -Type $entryType -Force
+ }
+}
+
+# Output Results
+Write-Host "Edge Removal Complete" -ForegroundColor Green
+
+# Define constants and initial configuration
+$ScriptVersion = "2023.05.10"
+$EdgeProcessesToShutdown = @('explorer', 'Widgets', 'widgetservice', 'msedgewebview2', 'MicrosoftEdge*', 'chredge', 'msedge', 'edge', 'msteams', 'msfamily', 'WebViewHost', 'Clipchamp')
+$EdgeRemovalOptions = @{
+ RemoveWin32 = @("Microsoft Edge", "Microsoft Edge Update")
+ RemoveAppx = @("MicrosoftEdge")
+ Skip = @() # Optional: @("DevTools")
+ AlsoRemoveWebView = $false
+}
+
+# Define main function to remove Microsoft Edge components
+function Remove-MicrosoftEdge {
+ [CmdletBinding()]
+ param()
+
+ # Function to shutdown processes related to Microsoft Edge
+ function Stop-EdgeProcesses {
+ $EdgeProcessesToShutdown | ForEach-Object {
+ Stop-Process -Name $_ -Force -ErrorAction SilentlyContinue
}
}
-}
-# Remove Edge shortcuts
-Remove-Item -Path "$appDataPath\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Tombstones\Microsoft Edge.lnk" -Force -ErrorAction SilentlyContinue
-Remove-Item -Path "$appDataPath\Microsoft\Internet Explorer\Quick Launch\Microsoft Edge.lnk" -Force -ErrorAction SilentlyContinue
+ # Function to remove registry entries related to Microsoft Edge
+ function Remove-EdgeRegistryEntries {
+ # Clean up certain registry entries
+ Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\msedge.exe" -Recurse -ErrorAction SilentlyContinue
+ Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ie_to_edge_stub.exe" -Recurse -ErrorAction SilentlyContinue
+ Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\microsoft-edge' -Recurse -ErrorAction SilentlyContinue
+ Remove-Item -Path 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\MSEdgeHTM' -Recurse -ErrorAction SilentlyContinue
-# Revert settings related to Microsoft Edge
-foreach ($sid in $users) {
- foreach ($packageName in $eol) {
- Remove-Item -Path "$store\EndOfLife\$sid\$packageName" -Force -ErrorAction SilentlyContinue
+ # Create new registry entries
+ $EdgeExecutablePath = ($env:ProgramFiles, ${env:ProgramFiles(x86)})[[Environment]::Is64BitOperatingSystem] + '\Microsoft\Edge\Application\msedge.exe'
+ New-Item -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Force -ErrorAction SilentlyContinue
+ Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Name '(Default)' -Value "`"$EdgeExecutablePath`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
+
+ New-Item -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Force -ErrorAction SilentlyContinue
+ Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Name '(Default)' -Value "`"$EdgeExecutablePath`" --single-argument %%1" -Force -ErrorAction SilentlyContinue
}
-}
-# Set policies to prevent unsolicited reinstalls of Microsoft Edge
-$registryPaths = @('HKLM:\SOFTWARE\Policies', 'HKLM:\SOFTWARE', 'HKLM:\SOFTWARE\WOW6432Node')
-$edgeUpdatePolicies = @{
- 'InstallDefault' = 0;
- 'Install{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}' = 0;
- 'Install{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}' = 1;
- 'DoNotUpdateToEdgeWithChromium' = 1;
-}
+ # Function to remove Microsoft Edge AppX packages
+ function Remove-EdgeAppxPackages {
+ $EdgeRemovalOptions.RemoveAppx | ForEach-Object {
+ # Remove provisioned packages
+ Get-AppxProvisionedPackage -Online | Where-Object { $_.PackageName -like "*$_*" -and $EdgeRemovalOptions.Skip -notcontains $_.PackageName } | Remove-AppxProvisionedPackage -Online -AllUsers -ErrorAction SilentlyContinue
-foreach ($path in $registryPaths) {
- New-Item -Path "$path\Microsoft\EdgeUpdate" -Force -ErrorAction SilentlyContinue | Out-Null
- foreach ($policy in $edgeUpdatePolicies.GetEnumerator()) {
- Set-ItemProperty -Path "$path\Microsoft\EdgeUpdate" -Name $policy.Key -Value $policy.Value -Type Dword -Force
- }
-}
-
-$edgeUpdateActions = @('on-os-upgrade', 'on-logon', 'on-logon-autolaunch', 'on-logon-startup-boost')
-$edgeUpdateClients = @(
- 'Microsoft\EdgeUpdate\Clients\{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}',
- 'Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}'
-)
-foreach ($client in $edgeUpdateClients) {
- foreach ($action in $edgeUpdateActions) {
- foreach ($regBase in 'HKLM:\SOFTWARE', 'HKLM:\SOFTWARE\Wow6432Node') {
- $regPath = "$regBase\$client\Commands\$action"
- New-Item -Path $regPath -Force -ErrorAction SilentlyContinue | Out-Null
- Set-ItemProperty -Path $regPath -Name 'CommandLine' -Value 'systray.exe' -Force
+ # Remove installed packages
+ Get-AppxPackage -AllUsers | Where-Object { $_.PackageFullName -like "*$_*" -and $EdgeRemovalOptions.Skip -notcontains $_.PackageFullName } | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
}
}
+
+ # Function to remove Microsoft Edge processes, registry entries, and AppX packages
+ try {
+ Stop-EdgeProcesses
+ Remove-EdgeRegistryEntries
+ Remove-EdgeAppxPackages
+ Write-Output "Microsoft Edge components have been successfully removed."
+ } catch {
+ Write-Error "Failed to remove Microsoft Edge components: $_"
+ }
}
-## Redirect Edge Shortcuts
-
-# Define Microsoft Edge Paths
-$MSEP = ($env:ProgramFiles, ${env:ProgramFiles(x86)})[[Environment]::Is64BitOperatingSystem] + '\Microsoft\Edge\Application'
-$IFEO = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options'
-$MIN = ('--headless', '--width 1 --height 1')[([environment]::OSVersion.Version.Build) -gt 25179]
-$CMD = "$env:systemroot\system32\conhost.exe $MIN"
-$DIR = "$env:SystemDrive\Scripts"
-
-# Setup Microsoft Edge Registry Entries
-New-Item -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Force | Out-Null
-Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge" -Name '(Default)' -Value 'URL:microsoft-edge' -Force
-Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge" -Name 'URL Protocol' -Value '' -Force
-Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge" -Name 'NoOpenWith' -Value '' -Force
-Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -Name '(Default)' -Value "`"$DIR\ie_to_edge_stub.exe`" %1" -Force
-
-# Setup MSEdgeHTM Registry Entries
-New-Item -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Force | Out-Null
-Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM" -Name 'NoOpenWith' -Value '' -Force
-Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -Name '(Default)' -Value "`"$DIR\ie_to_edge_stub.exe`" %1" -Force
-
-# Setup Image File Execution Options for Edge and Edge WebView
-$exeSettings = @(
- @{ ExeName = 'ie_to_edge_stub.exe'; Debugger = "$CMD $DIR\OpenWebSearch.cmd"; FilterPath = "$DIR\ie_to_edge_stub.exe" },
- @{ ExeName = 'msedge.exe'; Debugger = "$CMD $DIR\OpenWebSearch.cmd"; FilterPath = "$MSEP\msedge.exe" }
-)
-
-foreach ($setting in $exeSettings) {
- New-Item -Path "$IFEO\$($setting.ExeName)\0" -Force | Out-Null
- Set-ItemProperty -Path "$IFEO\$($setting.ExeName)" -Name 'UseFilter' -Value 1 -Type Dword -Force
- Set-ItemProperty -Path "$IFEO\$($setting.ExeName)\0" -Name 'FilterFullPath' -Value $setting.FilterPath -Force
- Set-ItemProperty -Path "$IFEO\$($setting.ExeName)\0" -Name 'Debugger' -Value $setting.Debugger -Force
-}
-
-# Write OpenWebSearch Batch Script
-$OpenWebSearch = @'
-@echo off
-@title OpenWebSearch Redux
-
-:: Minimize prompt
-for /f %%E in ('"prompt $E$S & for %%e in (1) do rem"') do echo;%%E[2t >nul 2>&1
-
-:: Get default browser from registry
-call :get_registry_value "HKCU\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice" ProgID DefaultBrowser
-if not defined DefaultBrowser (
- echo Error: Failed to get default browser from registry.
- pause
- exit /b
-)
-if /i "%DefaultBrowser%" equ "MSEdgeHTM" (
- echo Error: Default browser is set to Edge! Change it or remove OpenWebSearch script.
- pause
- exit /b
-)
-
-:: Get browser command line
-call :get_registry_value "HKCR\%DefaultBrowser%\shell\open\command" "" BrowserCommand
-if not defined BrowserCommand (
- echo Error: Failed to get browser command from registry.
- pause
- exit /b
-)
-set Browser=& for %%i in (%BrowserCommand%) do if not defined Browser set "Browser=%%~i"
-
-:: Set fallback for Edge
-call :get_registry_value "HKCR\MSEdgeMHT\shell\open\command" "" FallBack
-set EdgeCommand=& for %%i in (%FallBack%) do if not defined EdgeCommand set "EdgeCommand=%%~i"
-
-:: Parse command line arguments and check for redirect or noop conditions
-set "URI=" & set "URL=" & set "NOOP=" & set "PassThrough=%EdgeCommand:msedge=edge%"
-set "CommandLineArgs=%CMDCMDLINE:"=``% "
-call :parse_arguments
-
-if defined NOOP (
- if not exist "%PassThrough%" (
- echo Error: PassThrough path doesn't exist.
- pause
- exit /b
- )
- start "" "%PassThrough%" %ParsedArgs%
- exit /b
-)
-
-:: Decode URL
-call :decode_url
-if not defined URL (
- echo Error: Failed to decode URL.
- pause
- exit /b
-)
-
-:: Open URL in default browser
-start "" "%Browser%" "%URL%"
-exit
-
-:: Functions
-
-:get_registry_value
-setlocal
- set regQuery=reg query "%~1" /v %2 /z /se "," /f /e
- if "%~2" equ "" set regQuery=reg query "%~1" /ve /z /se "," /f /e
- for /f "skip=2 tokens=* delims=" %%V in ('%regQuery% 2^>nul') do set "result=%%V"
- if defined result (set "result=%result:*) =%") else (set "%~3=")
- endlocal & set "%~3=%result%"
-exit /b
-
-:decode_url
- :: Brute URL percent decoding
- setlocal enabledelayedexpansion
- set "decoded=%URL:!=}%"
- call :brute_decode
- endlocal & set "URL=%decoded%"
-exit /b
-
-:parse_arguments
- :: Remove specific substrings from arguments
- set "CommandLineArgs=%CommandLineArgs:*ie_to_edge_stub.exe`` =%"
- set "CommandLineArgs=%CommandLineArgs:*ie_to_edge_stub.exe =%"
- set "CommandLineArgs=%CommandLineArgs:*msedge.exe`` =%"
- set "CommandLineArgs=%CommandLineArgs:*msedge.exe =%"
-
- :: Remove any trailing spaces
- if "%CommandLineArgs:~-1%"==" " set "CommandLineArgs=%CommandLineArgs:~0,-1%"
-
- :: Check if arguments are a redirect or URL
- set "RedirectArg=%CommandLineArgs:microsoft-edge=%"
- set "UrlArg=%CommandLineArgs:http=%"
- set "ParsedArgs=%CommandLineArgs:``="%"
-
- :: Set NOOP flag if no changes to arguments
- if "%CommandLineArgs%" equ "%RedirectArg%" (set NOOP=1) else if "%CommandLineArgs%" equ "%UrlArg%" (set NOOP=1)
-
- :: Extract URL if present
- if not defined NOOP (
- set "URL=%CommandLineArgs:*microsoft-edge=%"
- set "URL=http%URL:*http=%"
- if "%URL:~-2%"=="``" set "URL=%URL:~0,-2%"
- )
-exit /b
-
-
-:brute_decode
- :: Brute force URL percent decoding
-
- set "decoded=%decoded:%%20= %"
- set "decoded=%decoded:%%21=!!"
- set "decoded=%decoded:%%22="%""
- set "decoded=%decoded:%%23=#%"
- set "decoded=%decoded:%%24=$%"
- set "decoded=%decoded:%%25=%%%"
- set "decoded=%decoded:%%26=&%"
- set "decoded=%decoded:%%27='%"
- set "decoded=%decoded:%%28=(%"
- set "decoded=%decoded:%%29=)%"
- set "decoded=%decoded:%%2A=*%"
- set "decoded=%decoded:%%2B=+%"
- set "decoded=%decoded:%%2C=,%"
- set "decoded=%decoded:%%2D=-%"
- set "decoded=%decoded:%%2E=.%"
- set "decoded=%decoded:%%2F=/%"
- :: ... Continue for other encodings ...
-
- :: Correct any double percentage signs
- set "decoded=%decoded:%%%%=%"
-
-exit /b
-
-
-
-'@
-[io.file]::WriteAllText("$DIR\OpenWebSearch.cmd", $OpenWebSearch)
-
-
-# Final Steps
-
-# Retrieve the Edge_Removal property from the specified registry paths
-$userRegPaths = Get-ChildItem -Path 'Registry::HKEY_Users\S-1-5-21*\Volatile*' -ErrorAction SilentlyContinue
-$edgeRemovalPath = $userRegPaths | Get-ItemProperty -Name 'Edge_Removal' -ErrorAction SilentlyContinue
-
-# If the Edge_Removal property exists, remove it
-if ($edgeRemovalPath) {
- Remove-ItemProperty -Path $edgeRemovalPath.PSPath -Name 'Edge_Removal' -Force -ErrorAction SilentlyContinue
-}
-
-# Ensure the explorer process is running
-if (-not (Get-Process -Name 'explorer' -ErrorAction SilentlyContinue)) {
- Start-Process 'explorer'
-}
-
-
-
+# Execute the main function
+Remove-MicrosoftEdge
\ No newline at end of file
diff --git a/functions/private/Test-WinUtilPackageManager.ps1 b/functions/private/Test-WinUtilPackageManager.ps1
index 768c671c..ca269fc3 100644
--- a/functions/private/Test-WinUtilPackageManager.ps1
+++ b/functions/private/Test-WinUtilPackageManager.ps1
@@ -38,10 +38,12 @@ function Test-WinUtilPackageManager {
# Check if Winget's Version is too old.
$wingetCurrentVersion = [System.Version]::Parse($wingetVersion.Trim('v'))
- $wingetBadVersion = [System.Version]::Parse("1.2.10691") # Windows 11 (22H2) comes with v1.2.10691, which is bugged.
- $wingetOutdated = $wingetCurrentVersion -le $wingetBadVersion
+ # Grabs the latest release of Winget from the Github API for version check process.
+ $response = Invoke-RestMethod -Uri "https://api.github.com/repos/microsoft/Winget-cli/releases/latest" -Method Get -ErrorAction Stop
+ $wingetLatestVersion = [System.Version]::Parse(($response.tag_name).Trim('v')) #Stores version number of latest release.
+ $wingetOutdated = $wingetCurrentVersion -lt $wingetLatestVersion
Write-Host "===========================================" -ForegroundColor Green
- Write-Host "-- Winget is installed ---" -ForegroundColor Green
+ Write-Host "--- Winget is installed ---" -ForegroundColor Green
Write-Host "===========================================" -ForegroundColor Green
Write-Host "Version: $wingetVersionFull" -ForegroundColor White
@@ -61,7 +63,7 @@ function Test-WinUtilPackageManager {
}
} else {
Write-Host "===========================================" -ForegroundColor Red
- Write-Host "-- Winget is not installed ---" -ForegroundColor Red
+ Write-Host "--- Winget is not installed ---" -ForegroundColor Red
Write-Host "===========================================" -ForegroundColor Red
$status = "not-installed"
}
@@ -70,13 +72,13 @@ function Test-WinUtilPackageManager {
if ($choco) {
if ((Get-Command -Name choco -ErrorAction Ignore) -and ($chocoVersion = (Get-Item "$env:ChocolateyInstall\choco.exe" -ErrorAction Ignore).VersionInfo.ProductVersion)) {
Write-Host "===========================================" -ForegroundColor Green
- Write-Host "-- Chocolatey is installed ---" -ForegroundColor Green
+ Write-Host "--- Chocolatey is installed ---" -ForegroundColor Green
Write-Host "===========================================" -ForegroundColor Green
Write-Host "Version: v$chocoVersion" -ForegroundColor White
$status = "installed"
} else {
Write-Host "===========================================" -ForegroundColor Red
- Write-Host "-- Chocolatey is not installed ---" -ForegroundColor Red
+ Write-Host "--- Chocolatey is not installed ---" -ForegroundColor Red
Write-Host "===========================================" -ForegroundColor Red
$status = "not-installed"
}
diff --git a/winutil.ps1 b/winutil.ps1
index 8f04a35c..d0ba4f9c 100644
--- a/winutil.ps1
+++ b/winutil.ps1
@@ -10,7 +10,7 @@
Author : Chris Titus @christitustech
Runspace Author: @DeveloperDurp
GitHub : https://github.com/ChrisTitusTech
- Version : 24.03.31
+ Version : 24.04.17
#>
param (
[switch]$Debug,
@@ -47,7 +47,7 @@ Add-Type -AssemblyName System.Windows.Forms
# Variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $PSScriptRoot
-$sync.version = "24.03.31"
+$sync.version = "24.04.17"
$sync.configs = @{}
$sync.ProcessRunning = $false
@@ -2619,10 +2619,12 @@ function Test-WinUtilPackageManager {
# Check if Winget's Version is too old.
$wingetCurrentVersion = [System.Version]::Parse($wingetVersion.Trim('v'))
- $wingetBadVersion = [System.Version]::Parse("1.2.10691") # Windows 11 (22H2) comes with v1.2.10691, which is bugged.
- $wingetOutdated = $wingetCurrentVersion -le $wingetBadVersion
+ # Grabs the latest release of Winget from the Github API for version check process.
+ $response = Invoke-RestMethod -Uri "https://api.github.com/repos/microsoft/Winget-cli/releases/latest" -Method Get -ErrorAction Stop
+ $wingetLatestVersion = [System.Version]::Parse(($response.tag_name).Trim('v')) #Stores version number of latest release.
+ $wingetOutdated = $wingetCurrentVersion -lt $wingetLatestVersion
Write-Host "===========================================" -ForegroundColor Green
- Write-Host "-- Winget is installed ---" -ForegroundColor Green
+ Write-Host "--- Winget is installed ---" -ForegroundColor Green
Write-Host "===========================================" -ForegroundColor Green
Write-Host "Version: $wingetVersionFull" -ForegroundColor White
@@ -2642,7 +2644,7 @@ function Test-WinUtilPackageManager {
}
} else {
Write-Host "===========================================" -ForegroundColor Red
- Write-Host "-- Winget is not installed ---" -ForegroundColor Red
+ Write-Host "--- Winget is not installed ---" -ForegroundColor Red
Write-Host "===========================================" -ForegroundColor Red
$status = "not-installed"
}
@@ -2651,13 +2653,13 @@ function Test-WinUtilPackageManager {
if ($choco) {
if ((Get-Command -Name choco -ErrorAction Ignore) -and ($chocoVersion = (Get-Item "$env:ChocolateyInstall\choco.exe" -ErrorAction Ignore).VersionInfo.ProductVersion)) {
Write-Host "===========================================" -ForegroundColor Green
- Write-Host "-- Chocolatey is installed ---" -ForegroundColor Green
+ Write-Host "--- Chocolatey is installed ---" -ForegroundColor Green
Write-Host "===========================================" -ForegroundColor Green
Write-Host "Version: v$chocoVersion" -ForegroundColor White
$status = "installed"
} else {
Write-Host "===========================================" -ForegroundColor Red
- Write-Host "-- Chocolatey is not installed ---" -ForegroundColor Red
+ Write-Host "--- Chocolatey is not installed ---" -ForegroundColor Red
Write-Host "===========================================" -ForegroundColor Red
$status = "not-installed"
}
@@ -4997,6 +4999,14 @@ $sync.configs.applications = '{
"link": "https://www.autohotkey.com/",
"winget": "AutoHotkey.AutoHotkey"
},
+ "WPFInstallazuredatastudio": {
+ "category": "Microsoft Tools",
+ "choco": "azure-data-studio",
+ "content": "Microsoft Azure Data Studio",
+ "description": "Azure Data Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.",
+ "link": "https://docs.microsoft.com/sql/azure-data-studio/what-is-azure-data-studio",
+ "winget": "Microsoft.AzureDataStudio"
+ },
"WPFInstallbarrier": {
"category": "Utilities",
"choco": "barrier",
@@ -5165,6 +5175,14 @@ $sync.configs.applications = '{
"link": "https://crystalmark.info/en/software/crystaldiskinfo/",
"winget": "CrystalDewWorld.CrystalDiskInfo"
},
+ "WPFInstallcapframex": {
+ "category": "Utilities",
+ "choco": "na",
+ "content": "CapFrameX",
+ "description": "Frametimes capture and analysis tool based on Intel''s PresentMon. Overlay provided by Rivatuner Statistics Server.",
+ "link": "https://www.capframex.com/",
+ "winget": "CXWorld.CapFrameX"
+ },
"WPFInstallcrystaldiskmark": {
"category": "Utilities",
"choco": "crystaldiskmark",
@@ -5493,6 +5511,14 @@ $sync.configs.applications = '{
"link": "https://www.freecadweb.org/",
"winget": "FreeCAD.FreeCAD"
},
+ "WPFInstallorcaslicer": {
+ "category": "Multimedia Tools",
+ "choco": "orcaslicer",
+ "content": "OrcaSlicer",
+ "description": "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)",
+ "link": "https://github.com/SoftFever/OrcaSlicer",
+ "winget": "SoftFever.OrcaSlicer"
+ },
"WPFInstallfzf": {
"category": "Utilities",
"choco": "fzf",
@@ -5749,6 +5775,38 @@ $sync.configs.applications = '{
"link": "https://adoptopenjdk.net/",
"winget": "EclipseAdoptium.Temurin.8.JRE"
},
+ "WPFInstalljava11runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 11",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.11.JRE"
+ },
+ "WPFInstalljava17runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 17",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.17.JRE"
+ },
+ "WPFInstalljava18runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 18",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.18.JRE"
+ },
+ "WPFInstalljava19runtime": {
+ "category": "Development",
+ "choco": "na",
+ "content": "Eclipse Temurin JRE 19",
+ "description": "Eclipse Temurin JRE is the open source Java SE build based upon OpenJRE.",
+ "link": "https://adoptium.net/",
+ "winget": "EclipseAdoptium.Temurin.19.JRE"
+ },
"WPFInstalljdownloader": {
"category": "Utilities",
"choco": "jdownloader",
@@ -6405,6 +6463,14 @@ $sync.configs.applications = '{
"link": "https://www.qbittorrent.org/",
"winget": "qBittorrent.qBittorrent"
},
+ "WPFInstalltixati": {
+ "category": "Utilities",
+ "choco": "tixati.portable",
+ "content": "Tixati",
+ "description": "Tixati is a cross-platform BitTorrent client written in C++ that has been designed to be light on system resources.",
+ "link": "https://www.tixati.com/",
+ "winget": "Tixati.Tixati.Portable"
+ },
"WPFInstallqtox": {
"category": "Communications",
"choco": "qtox",
@@ -6621,6 +6687,14 @@ $sync.configs.applications = '{
"link": "https://www.sumatrapdfreader.org/free-pdf-reader.html",
"winget": "SumatraPDF.SumatraPDF"
},
+ "WPFInstallpdfgear": {
+ "category": "Document",
+ "choco": "na",
+ "content": "PDFgear",
+ "description": "PDFgear is a piece of full-featured PDF management software for Windows, Mac, and mobile, and it''s completely free to use.",
+ "link": "https://www.pdfgear.com/",
+ "winget": "PDFgear.PDFgear"
+ },
"WPFInstallsunshine": {
"category": "Games",
"choco": "sunshine",
@@ -6653,6 +6727,14 @@ $sync.configs.applications = '{
"link": "https://github.com/canton7/SyncTrayzor/",
"winget": "SyncTrayzor.SyncTrayzor"
},
+ "WPFInstallsqlmanagementstudio": {
+ "category": "Microsoft Tools",
+ "choco": "sql-server-management-studio",
+ "content": "Microsoft SQL Server Management Studio",
+ "description": "SQL Server Management Studio (SSMS) is an integrated environment for managing any SQL infrastructure, from SQL Server to Azure SQL Database. SSMS provides tools to configure, monitor, and administer instances of SQL Server and databases.",
+ "link": "https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16",
+ "winget": "Microsoft.SQLServerManagementStudio"
+ },
"WPFInstalltailscale": {
"category": "Utilities",
"choco": "tailscale",
@@ -6701,6 +6783,14 @@ $sync.configs.applications = '{
"link": "https://telegram.org/",
"winget": "Telegram.TelegramDesktop"
},
+ "WPFInstallunigram": {
+ "category": "Communications",
+ "choco": "na",
+ "content": "Unigram",
+ "description": "Unigram - Telegram for Windows",
+ "link": "https://unigramdev.github.io/",
+ "winget": "Telegram.Unigram"
+ },
"WPFInstallterminal": {
"category": "Microsoft Tools",
"choco": "microsoft-windows-terminal",
@@ -7196,6 +7286,46 @@ $sync.configs.applications = '{
"description": "TightVNC is a free and Open Source remote desktop software that lets you access and control a computer over the network. With its intuitive interface, you can interact with the remote screen as if you were sitting in front of it. You can open files, launch applications, and perform other actions on the remote desktop almost as if you were physically there",
"link": "https://www.tightvnc.com/",
"winget": "GlavSoft.TightVNC"
+ },
+ "WPFInstallultravnc": {
+ "category": "Utilities",
+ "choco": "ultravnc",
+ "content": "UltraVNC",
+ "description": "UltraVNC is a powerful, easy to use and free - remote pc access softwares - that can display the screen of another computer (via internet or network) on your own screen. The program allows you to use your mouse and keyboard to control the other PC remotely. It means that you can work on a remote computer, as if you were sitting in front of it, right from your current location.",
+ "link": "https://uvnc.com/",
+ "winget": "uvncbvba.UltraVnc"
+ },
+ "WPFInstallwindowsfirewallcontrol": {
+ "category": "Utilities",
+ "choco": "windowsfirewallcontrol",
+ "content": "Windows Firewall Control",
+ "description": "Windows Firewall Control is a powerful tool which extends the functionality of Windows Firewall and provides new extra features which makes Windows Firewall better.",
+ "link": "https://www.binisoft.org/wfc",
+ "winget": "BiniSoft.WindowsFirewallControl"
+ },
+ "WPFInstallvistaswitcher": {
+ "category": "Utilities",
+ "choco": "na",
+ "content": "VistaSwitcher",
+ "description": "VistaSwitcher makes it easier for you to locate windows and switch focus, even on multi-monitor systems. The switcher window consists of an easy-to-read list of all tasks running with clearly shown titles and a full-sized preview of the selected task.",
+ "link": "https://www.ntwind.com/freeware/vistaswitcher.html",
+ "winget": "ntwind.VistaSwitcher"
+ },
+ "WPFInstallautodarkmode": {
+ "category": "Utilities",
+ "choco": "auto-dark-mode",
+ "content": "Windows Auto Dark Mode",
+ "description": "Automatically switches between the dark and light theme of Windows 10 and Windows 11",
+ "link": "https://github.com/AutoDarkMode/Windows-Auto-Night-Mode",
+ "winget": "Armin2208.WindowsAutoNightMode"
+ },
+ "WPFInstallmagicwormhole": {
+ "category": "Utilities",
+ "choco": "magic-wormhole",
+ "content": "Magic Wormhole",
+ "description": "get things from one computer to another, safely",
+ "link": "https://github.com/magic-wormhole/magic-wormhole",
+ "winget": "magic-wormhole.magic-wormhole"
}
}' | convertfrom-json
$sync.configs.dns = '{
@@ -7682,6 +7812,9 @@ $sync.configs.tweaks = '{
],
"InvokeScript": [
"powercfg.exe /hibernate off"
+ ],
+ "UndoScript": [
+ "powercfg.exe /hibernate on"
]
},
"WPFTweaksHome": {
@@ -9518,6 +9651,13 @@ $sync.configs.tweaks = '{
"Name": "Scheduling Category",
"Value": "High",
"Type": "String"
+ },
+ {
+ "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\UserProfileEngagement",
+ "OriginalValue": "1",
+ "Name": "ScoobeSystemSettingEnabled",
+ "Value": "0",
+ "Type": "DWord"
}
],
"InvokeScript": [
@@ -9863,6 +10003,23 @@ $sync.configs.tweaks = '{
"
]
},
+ "WPFTweaksEndTaskOnTaskbar": {
+ "Content": "Enable End Task With Right Click",
+ "Description": "Enables option to end task when right clicking a program in the taskbar",
+ "category": "Essential Tweaks",
+ "panel": "1",
+ "Order": "a002_",
+ "InvokeScript": [
+ "
+ Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"1\"
+ "
+ ],
+ "UndoScript": [
+ "
+ Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"0\"
+ "
+ ]
+ },
"WPFTweaksOO": {
"Content": "Run OO Shutup",
"Description": "Runs OO Shutup from https://www.oo-software.com/en/shutup10",
@@ -9885,11 +10042,10 @@ $sync.configs.tweaks = '{
"panel": "1",
"Order": "a010_",
"InvokeScript": [
- "Remove-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Recurse -ErrorAction SilentlyContinue"
+ "Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 0 -Type Dword -Force"
],
"UndoScript": [
- "New-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" | Out-Null
- "
+ "Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 1 -Type Dword -Force"
]
},
"WPFTweaksRemoveEdge": {
@@ -11109,6 +11265,9 @@ $inputXML = '
+
+
+
@@ -11158,12 +11317,24 @@ $inputXML = '
+
+
+
+
+
+
+
+
+
+
+
+
@@ -11181,17 +11352,17 @@ $inputXML = '
+
+
+
+
+
-
-
-
-
-
@@ -11302,6 +11473,9 @@ $inputXML = '
+
+
+
@@ -11396,6 +11570,9 @@ $inputXML = '
+
+
+
@@ -11432,6 +11609,9 @@ $inputXML = '
+
+
+
@@ -11541,6 +11721,9 @@ $inputXML = '
+
+
+
@@ -11641,6 +11824,9 @@ $inputXML = '
+
+
+
@@ -11662,6 +11848,9 @@ $inputXML = '
+
+
+
@@ -11727,15 +11916,15 @@ $inputXML = '
+
+
+
-
-
-
@@ -11751,6 +11940,9 @@ $inputXML = '
+
+
+
@@ -11865,6 +12057,9 @@ $inputXML = '
+
+
+
@@ -11877,9 +12072,18 @@ $inputXML = '
+
+
+
+
+
+
+
+
+
@@ -11935,6 +12139,7 @@ $inputXML = '
+
diff --git a/xaml/inputApp.xaml b/xaml/inputApp.xaml
index e999bf49..73bb0e3c 100644
--- a/xaml/inputApp.xaml
+++ b/xaml/inputApp.xaml
@@ -103,6 +103,9 @@
+
+
+
@@ -152,12 +155,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -175,17 +190,17 @@
+
+
+
+
+
-
-
-
-
-
@@ -296,6 +311,9 @@
+
+
+
@@ -390,6 +408,9 @@
+
+
+
@@ -426,6 +447,9 @@
+
+
+
@@ -535,6 +559,9 @@
+
+
+
@@ -635,6 +662,9 @@
+
+
+
@@ -656,6 +686,9 @@
+
+
+
@@ -721,15 +754,15 @@
+
+
+
-
-
-
@@ -745,6 +778,9 @@
+
+
+
@@ -859,6 +895,9 @@
+
+
+
@@ -871,9 +910,18 @@
+
+
+
+
+
+
+
+
+
diff --git a/xaml/inputTweaks.xaml b/xaml/inputTweaks.xaml
index 1ae2c6de..b40bd9f8 100644
--- a/xaml/inputTweaks.xaml
+++ b/xaml/inputTweaks.xaml
@@ -6,6 +6,7 @@
+