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 e831f3b9..841e41da 100644 --- a/config/applications.json +++ b/config/applications.json @@ -103,6 +103,14 @@ "link": "https://authy.com/", "winget": "Twilio.Authy" }, + "WPFInstallautoruns": { + "category": "Microsoft Tools", + "choco": "autoruns", + "content": "Autoruns", + "description": "This utility shows you what programs are configured to run during system bootup or login", + "link": "https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns", + "winget": "Microsoft.Sysinternals.Autoruns" + }, "WPFInstallautohotkey": { "category": "Utilities", "choco": "autohotkey", @@ -111,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", @@ -183,6 +199,14 @@ "link": "https://www.bcuninstaller.com/", "winget": "Klocman.BulkCrapUninstaller" }, + "WPFInstallbulkrenameutility": { + "category": "Utilities", + "choco": "bulkrenameutility", + "content": "Bulk Rename Utility", + "description": "Bulk Rename Utility allows you to easily rename files and folders recursively based upon find-replace, character place, fields, sequences, regular expressions, EXIF data, and more.", + "link": "https://www.bulkrenameutility.co.uk", + "winget": "TGRMNSoftware.BulkRenameUtility" + }, "WPFInstallcalibre": { "category": "Document", "choco": "calibre", @@ -255,6 +279,14 @@ "link": "https://clonehero.net/", "winget": "CloneHeroTeam.CloneHero" }, + "WPFInstallcmake": { + "category": "Development", + "choco": "cmake", + "content": "CMake", + "description": "CMake is an open-source, cross-platform family of tools designed to build, test and package software.", + "link": "https://cmake.org/", + "winget": "Kitware.CMake" + }, "WPFInstallcopyq": { "category": "Utilities", "choco": "copyq", @@ -279,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", @@ -567,6 +607,14 @@ "link": "https://floorp.app/", "winget": "Ablaze.Floorp" }, + "WPFInstallflow": { + "category": "Utilities", + "choco": "flow-launcher", + "content": "Flow launcher", + "description": "Keystroke launcher for Windows to search, manage and launch files, folders bookmarks, websites and more.", + "link": "https://www.flowlauncher.com/", + "winget": "Flow-Launcher.Flow-Launcher" + }, "WPFInstallflux": { "category": "Utilities", "choco": "flux", @@ -607,6 +655,22 @@ "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" + }, + "WPFInstallfxsound": { + "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" + }, "WPFInstallfzf": { "category": "Utilities", "choco": "fzf", @@ -735,6 +799,14 @@ "link": "https://handbrake.fr/", "winget": "HandBrake.HandBrake" }, + "WPFInstallharmonoid": { + "category": "Multimedia Tools", + "choco": "na", + "content": "Harmonoid", + "description": "Plays & manages your music library. Looks beautiful & juicy. Playlists, visuals, synced lyrics, pitch shift, volume boost & more.", + "link": "https://harmonoid.com/", + "winget": "Harmonoid.Harmonoid" + }, "WPFInstallheidisql": { "category": "Pro Tools", "choco": "heidisql", @@ -775,6 +847,14 @@ "link": "https://www.hwinfo.com/", "winget": "REALiX.HWiNFO" }, + "WPFInstallhwmonitor": { + "category": "Utilities", + "choco": "hwmonitor", + "content": "HWMonitor", + "description": "HWMonitor is a hardware monitoring program that reads PC systems main health sensors.", + "link": "https://www.cpuid.com/softwares/hwmonitor.html", + "winget": "CPUID.HWMonitor" + }, "WPFInstallimageglass": { "category": "Multimedia Tools", "choco": "imageglass", @@ -863,6 +943,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", @@ -903,6 +1015,14 @@ "link": "https://joplinapp.org/", "winget": "Joplin.Joplin" }, + "WPFInstalljpegview": { + "category": "Utilities", + "choco": "jpegview", + "content": "JPEG View", + "description": "JPEGView is a lean, fast and highly configurable viewer/editor for JPEG, BMP, PNG, WEBP, TGA, GIF, JXL, HEIC, HEIF, AVIF and TIFF images with a minimal GUI", + "link": "https://github.com/sylikc/jpegview", + "winget": "sylikc.JPEGView" + }, "WPFInstallkdeconnect": { "category": "Utilities", "choco": "kdeconnect-kde", @@ -975,6 +1095,14 @@ "link": "https://librewolf-community.gitlab.io/", "winget": "LibreWolf.LibreWolf" }, + "WPFInstalllinkshellextension": { + "category": "Utilities", + "choco": "linkshellextension", + "content": "Link Shell extension", + "description": "Link Shell Extension (LSE) provides for the creation of Hardlinks, Junctions, Volume Mountpoints, Symbolic Links, a folder cloning process that utilises Hardlinks or Symbolic Links and a copy process taking care of Junctions, Symbolic Links, and Hardlinks. LSE, as its name implies is implemented as a Shell extension and is accessed from Windows Explorer, or similar file/folder managers.", + "link": "https://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html", + "winget": "HermannSchinagl.LinkShellExtension" + }, "WPFInstalllinphone": { "category": "Communications", "choco": "linphone", @@ -999,6 +1127,14 @@ "link": "https://localsend.org/", "winget": "LocalSend.LocalSend" }, + "WPFInstalllockhunter": { + "category": "Utilities", + "choco": "lockhunter", + "content": "LockHunter", + "description": "LockHunter is a free tool to delete files blocked by something you do not know.", + "link": "https://lockhunter.com/", + "winget": "CrystalRich.LockHunter" + }, "WPFInstalllogseq": { "category": "Document", "choco": "logseq", @@ -1095,6 +1231,14 @@ "link": "https://mullvad.net/browser", "winget": "MullvadVPN.MullvadBrowser" }, + "WPFInstallmusescore": { + "category": "Multimedia Tools", + "choco": "musescore", + "content": "MuseScore", + "description": "Create, play back and print beautiful sheet music with free and easy to use music notation software MuseScore.", + "link": "https://musescore.org/en", + "winget": "Musescore.Musescore" + }, "WPFInstallmusicbee": { "category": "Multimedia Tools", "choco": "musicbee", @@ -1519,6 +1663,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", @@ -1527,6 +1679,14 @@ "link": "https://qtox.github.io/", "winget": "Tox.qTox" }, + "WPFInstallquicklook": { + "category": "Utilities", + "choco": "quicklook", + "content": "Quicklook", + "description": "Bring macOS “Quick Look” feature to Windows", + "link": "https://github.com/QL-Win/QuickLook", + "winget": "QL-Win.QuickLook" + }, "WPFInstallrainmeter": { "category": "Utilities", "choco": "na", @@ -1543,6 +1703,14 @@ "link": "https://www.revouninstaller.com/", "winget": "RevoUninstaller.RevoUninstaller" }, + "WPFInstallrevolt": { + "category": "Communications", + "choco": "na", + "content": "Revolt", + "description": "Find your community, connect with the world. Revolt is one of the best ways to stay connected with your friends and community without sacrificing any usability.", + "link": "https://revolt.chat/", + "winget": "Revolt.RevoltDesktop" + }, "WPFInstallripgrep": { "category": "Utilities", "choco": "ripgrep", @@ -1639,11 +1807,27 @@ "link": "https://signal.org/", "winget": "OpenWhisperSystems.Signal" }, + "WPFInstallsignalrgb": { + "category": "Utilities", + "choco": "na", + "content": "SignalRGB", + "description": "SignalRGB lets you control and sync your favorite RGB devices with one free application.", + "link": "https://www.signalrgb.com/", + "winget": "WhirlwindFX.SignalRgb" + }, + "WPFInstallsimplenote": { + "category": "Document", + "choco": "simplenote", + "content": "simplenote", + "description": "Simplenote is an easy way to keep notes, lists, ideas and more.", + "link": "https://simplenote.com/", + "winget": "Automattic.Simplenote" + }, "WPFInstallsimplewall": { "category": "Pro Tools", "choco": "simplewall", "content": "Simplewall", - "description": "simplewall is a free and open-source firewall application for Windows. It allows users to control and manage the inbound and outbound network traffic of applications.", + "description": "Simplewall is a free and open-source firewall application for Windows. It allows users to control and manage the inbound and outbound network traffic of applications.", "link": "https://github.com/henrypp/simplewall", "winget": "Henry++.simplewall" }, @@ -1671,6 +1855,14 @@ "link": "https://www.spacedrive.com/", "winget": "spacedrive.Spacedrive" }, + "WPFInstallspacesniffer": { + "category": "Utilities", + "choco": "spacesniffer", + "content": "SpaceSniffer", + "description": "A tool application that lets you understand how folders and files are structured on your disks", + "link": "http://www.uderzo.it/main_products/space_sniffer/", + "winget": "UderzoSoftware.SpaceSniffer" + }, "WPFInstallstarship": { "category": "Development", "choco": "starship", @@ -1735,6 +1927,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", @@ -1755,7 +1955,7 @@ "category": "Development", "choco": "na", "content": "Swift toolchain", - "description": "Swift is a general-purpose programming language that’s approachable for newcomers and powerful for experts.", + "description": "Swift is a general-purpose programming language that is approachable for newcomers and powerful for experts.", "link": "https://www.swift.org/", "winget": "Swift.Toolchain" }, @@ -1767,6 +1967,22 @@ "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" + }, + "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" + }, "WPFInstalltailscale": { "category": "Utilities", "choco": "tailscale", @@ -1815,6 +2031,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", @@ -2143,6 +2367,14 @@ "link": "https://toys.wisecleaner.com/", "winget": "WiseCleaner.WiseToys" }, + "WPFInstallwizfile": { + "category": "Utilities", + "choco": "na", + "content": "WizFile", + "description": "Find files by name on your hard drives almost instantly.", + "link": "https://antibody-software.com/wizfile/", + "winget": "AntibodySoftware.WizFile" + }, "WPFInstallwiztree": { "category": "Utilities", "choco": "wiztree", @@ -2175,6 +2407,14 @@ "link": "https://xemu.app/", "winget": "xemu-project.xemu" }, + "WPFInstallxnview": { + "category": "Utilities", + "choco": "xnview", + "content": "XnView classic", + "description": "XnView is an efficient image viewer, browser and converter for Windows.", + "link": "https://www.xnview.com/en/xnview/", + "winget": "XnSoft.XnView.Classic" + }, "WPFInstallxournal": { "category": "Document", "choco": "xournalplusplus", @@ -2310,5 +2550,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 0a8e9f3c..70116c1c 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/Install-WinUtilProgramWinget.ps1 b/functions/private/Install-WinUtilProgramWinget.ps1 index 7bfedd93..393857cb 100644 --- a/functions/private/Install-WinUtilProgramWinget.ps1 +++ b/functions/private/Install-WinUtilProgramWinget.ps1 @@ -1,7 +1,6 @@ Function Install-WinUtilProgramWinget { <# - .SYNOPSIS Manages the provided programs using Winget @@ -13,7 +12,6 @@ Function Install-WinUtilProgramWinget { .NOTES The triple quotes are required any time you need a " in a normal script block. - #> param( @@ -30,18 +28,41 @@ Function Install-WinUtilProgramWinget { Write-Progress -Activity "$manage Applications" -Status "$manage $Program $($x + 1) of $count" -PercentComplete $($x/$count*100) if($manage -eq "Installing"){ - # --scope=machine when installing non-UWP apps with winget fails with error code 0x80070005. - # Removed argument while testing new Winget install method. - # Open issue on winget-cli github repo: https://github.com/microsoft/winget-cli/issues/3936 - Start-Process -FilePath winget -ArgumentList "install -e --accept-source-agreements --accept-package-agreements --silent $Program" -NoNewWindow -Wait + # Install package via ID, if it fails try again with different scope. + # Install-WinGetPackage always returns "InstallerErrorCode" 0, so we have to check the "Status" of the install. + # With WinGet, not all installers honor any of the following: System-wide or User Installs OR Silent Install Mode. + # This is up to the individual package maintainers to enable these options. Aka. not as clean as Linux Package Managers. + $status=$((Install-WinGetPackage -Id $Program -Scope SystemOrUnknown -Mode Silent -Source winget -MatchOption Equals).Status) + if($status -ne "Ok"){ + Write-Host "Not System" + $status=$((Install-WinGetPackage -Id $Program -Scope UserOrUnknown -Mode Silent -Source winget -MatchOption Equals).Status) + if($status -ne "Ok"){ + Write-Host "Not User" + $status=$((Install-WinGetPackage -Id $Program -Scope Any -Mode Silent -Source winget -MatchOption Equals).Status) + if($status -ne "Ok"){ + Write-Host "Failed to install $Program." + } else { + Write-Host "$Program installed successfully." + } + } else { + Write-Host "$Program installed successfully." + } + } else { + Write-Host "$Program installed successfully." + } } if($manage -eq "Uninstalling"){ - Start-Process -FilePath winget -ArgumentList "uninstall -e --accept-source-agreements --purge --force --silent $Program" -NoNewWindow -Wait - } - + # Uninstall package via ID. + # Uninstall-WinGetPackage always returns "InstallerErrorCode" 0, so we have to check the "Status" of the uninstall. + $status=$((Uninstall-WinGetPackage -Id $Program -Mode Silent -MatchOption Equals -Source winget).Status) + if ("$status" -ne "Ok") { + Write-Host "Failed to uninstall $Program." + } else { + Write-Host "$Program uninstalled successfully." + } + } $X++ } Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed - } diff --git a/functions/private/Install-WinUtilWinget.ps1 b/functions/private/Install-WinUtilWinget.ps1 index 2bdba08e..093a5c35 100644 --- a/functions/private/Install-WinUtilWinget.ps1 +++ b/functions/private/Install-WinUtilWinget.ps1 @@ -43,6 +43,9 @@ function Install-WinUtilWinget { Write-Host "Manually adding Winget Sources, from Winget CDN." Add-AppxPackage -Path https://cdn.winget.microsoft.com/cache/source.msix #Seems some installs of Winget don't add the repo source, this should makes sure that it's installed every time. Write-Host "Winget Installed" -ForegroundColor Green + Write-Host "Enabling NuGet and Module..." + Install-PackageProvider -Name NuGet -Force + Install-Module -Name Microsoft.WinGet.Client -Force # Winget only needs a refresh of the environment variables to be used. Write-Output "Refreshing Environment Variables...`n" $ENV:PATH = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") 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..6ea50874 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.18 #> 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.18" $sync.configs = @{} $sync.ProcessRunning = $false @@ -700,7 +700,6 @@ function Install-WinUtilChoco { Function Install-WinUtilProgramWinget { <# - .SYNOPSIS Manages the provided programs using Winget @@ -712,7 +711,6 @@ Function Install-WinUtilProgramWinget { .NOTES The triple quotes are required any time you need a " in a normal script block. - #> param( @@ -729,20 +727,43 @@ Function Install-WinUtilProgramWinget { Write-Progress -Activity "$manage Applications" -Status "$manage $Program $($x + 1) of $count" -PercentComplete $($x/$count*100) if($manage -eq "Installing"){ - # --scope=machine when installing non-UWP apps with winget fails with error code 0x80070005. - # Removed argument while testing new Winget install method. - # Open issue on winget-cli github repo: https://github.com/microsoft/winget-cli/issues/3936 - Start-Process -FilePath winget -ArgumentList "install -e --accept-source-agreements --accept-package-agreements --silent $Program" -NoNewWindow -Wait + # Install package via ID, if it fails try again with different scope. + # Install-WinGetPackage always returns "InstallerErrorCode" 0, so we have to check the "Status" of the install. + # With WinGet, not all installers honor any of the following: System-wide or User Installs OR Silent Install Mode. + # This is up to the individual package maintainers to enable these options. Aka. not as clean as Linux Package Managers. + $status=$((Install-WinGetPackage -Id $Program -Scope SystemOrUnknown -Mode Silent -Source winget -MatchOption Equals).Status) + if($status -ne "Ok"){ + Write-Host "Not System" + $status=$((Install-WinGetPackage -Id $Program -Scope UserOrUnknown -Mode Silent -Source winget -MatchOption Equals).Status) + if($status -ne "Ok"){ + Write-Host "Not User" + $status=$((Install-WinGetPackage -Id $Program -Scope Any -Mode Silent -Source winget -MatchOption Equals).Status) + if($status -ne "Ok"){ + Write-Host "Failed to install $Program." + } else { + Write-Host "$Program installed successfully." + } + } else { + Write-Host "$Program installed successfully." + } + } else { + Write-Host "$Program installed successfully." + } } if($manage -eq "Uninstalling"){ - Start-Process -FilePath winget -ArgumentList "uninstall -e --accept-source-agreements --purge --force --silent $Program" -NoNewWindow -Wait - } - + # Uninstall package via ID. + # Uninstall-WinGetPackage always returns "InstallerErrorCode" 0, so we have to check the "Status" of the uninstall. + $status=$((Uninstall-WinGetPackage -Id $Program -Mode Silent -MatchOption Equals -Source winget).Status) + if ("$status" -ne "Ok") { + Write-Host "Failed to uninstall $Program." + } else { + Write-Host "$Program uninstalled successfully." + } + } $X++ } Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed - } function Install-WinUtilWinget { <# @@ -789,6 +810,9 @@ function Install-WinUtilWinget { Write-Host "Manually adding Winget Sources, from Winget CDN." Add-AppxPackage -Path https://cdn.winget.microsoft.com/cache/source.msix #Seems some installs of Winget don't add the repo source, this should makes sure that it's installed every time. Write-Host "Winget Installed" -ForegroundColor Green + Write-Host "Enabling NuGet and Module..." + Install-PackageProvider -Name NuGet -Force + Install-Module -Name Microsoft.WinGet.Client -Force # Winget only needs a refresh of the environment variables to be used. Write-Output "Refreshing Environment Variables...`n" $ENV:PATH = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") @@ -2619,10 +2643,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 +2668,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 +2677,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" } @@ -4989,6 +5015,14 @@ $sync.configs.applications = '{ "link": "https://authy.com/", "winget": "Twilio.Authy" }, + "WPFInstallautoruns": { + "category": "Microsoft Tools", + "choco": "autoruns", + "content": "Autoruns", + "description": "This utility shows you what programs are configured to run during system bootup or login", + "link": "https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns", + "winget": "Microsoft.Sysinternals.Autoruns" + }, "WPFInstallautohotkey": { "category": "Utilities", "choco": "autohotkey", @@ -4997,6 +5031,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", @@ -5069,6 +5111,14 @@ $sync.configs.applications = '{ "link": "https://www.bcuninstaller.com/", "winget": "Klocman.BulkCrapUninstaller" }, + "WPFInstallbulkrenameutility": { + "category": "Utilities", + "choco": "bulkrenameutility", + "content": "Bulk Rename Utility", + "description": "Bulk Rename Utility allows you to easily rename files and folders recursively based upon find-replace, character place, fields, sequences, regular expressions, EXIF data, and more.", + "link": "https://www.bulkrenameutility.co.uk", + "winget": "TGRMNSoftware.BulkRenameUtility" + }, "WPFInstallcalibre": { "category": "Document", "choco": "calibre", @@ -5141,6 +5191,14 @@ $sync.configs.applications = '{ "link": "https://clonehero.net/", "winget": "CloneHeroTeam.CloneHero" }, + "WPFInstallcmake": { + "category": "Development", + "choco": "cmake", + "content": "CMake", + "description": "CMake is an open-source, cross-platform family of tools designed to build, test and package software.", + "link": "https://cmake.org/", + "winget": "Kitware.CMake" + }, "WPFInstallcopyq": { "category": "Utilities", "choco": "copyq", @@ -5165,6 +5223,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", @@ -5453,6 +5519,14 @@ $sync.configs.applications = '{ "link": "https://floorp.app/", "winget": "Ablaze.Floorp" }, + "WPFInstallflow": { + "category": "Utilities", + "choco": "flow-launcher", + "content": "Flow launcher", + "description": "Keystroke launcher for Windows to search, manage and launch files, folders bookmarks, websites and more.", + "link": "https://www.flowlauncher.com/", + "winget": "Flow-Launcher.Flow-Launcher" + }, "WPFInstallflux": { "category": "Utilities", "choco": "flux", @@ -5493,6 +5567,22 @@ $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" + }, + "WPFInstallfxsound": { + "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" + }, "WPFInstallfzf": { "category": "Utilities", "choco": "fzf", @@ -5621,6 +5711,14 @@ $sync.configs.applications = '{ "link": "https://handbrake.fr/", "winget": "HandBrake.HandBrake" }, + "WPFInstallharmonoid": { + "category": "Multimedia Tools", + "choco": "na", + "content": "Harmonoid", + "description": "Plays & manages your music library. Looks beautiful & juicy. Playlists, visuals, synced lyrics, pitch shift, volume boost & more.", + "link": "https://harmonoid.com/", + "winget": "Harmonoid.Harmonoid" + }, "WPFInstallheidisql": { "category": "Pro Tools", "choco": "heidisql", @@ -5661,6 +5759,14 @@ $sync.configs.applications = '{ "link": "https://www.hwinfo.com/", "winget": "REALiX.HWiNFO" }, + "WPFInstallhwmonitor": { + "category": "Utilities", + "choco": "hwmonitor", + "content": "HWMonitor", + "description": "HWMonitor is a hardware monitoring program that reads PC systems main health sensors.", + "link": "https://www.cpuid.com/softwares/hwmonitor.html", + "winget": "CPUID.HWMonitor" + }, "WPFInstallimageglass": { "category": "Multimedia Tools", "choco": "imageglass", @@ -5749,6 +5855,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", @@ -5789,6 +5927,14 @@ $sync.configs.applications = '{ "link": "https://joplinapp.org/", "winget": "Joplin.Joplin" }, + "WPFInstalljpegview": { + "category": "Utilities", + "choco": "jpegview", + "content": "JPEG View", + "description": "JPEGView is a lean, fast and highly configurable viewer/editor for JPEG, BMP, PNG, WEBP, TGA, GIF, JXL, HEIC, HEIF, AVIF and TIFF images with a minimal GUI", + "link": "https://github.com/sylikc/jpegview", + "winget": "sylikc.JPEGView" + }, "WPFInstallkdeconnect": { "category": "Utilities", "choco": "kdeconnect-kde", @@ -5861,6 +6007,14 @@ $sync.configs.applications = '{ "link": "https://librewolf-community.gitlab.io/", "winget": "LibreWolf.LibreWolf" }, + "WPFInstalllinkshellextension": { + "category": "Utilities", + "choco": "linkshellextension", + "content": "Link Shell extension", + "description": "Link Shell Extension (LSE) provides for the creation of Hardlinks, Junctions, Volume Mountpoints, Symbolic Links, a folder cloning process that utilises Hardlinks or Symbolic Links and a copy process taking care of Junctions, Symbolic Links, and Hardlinks. LSE, as its name implies is implemented as a Shell extension and is accessed from Windows Explorer, or similar file/folder managers.", + "link": "https://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html", + "winget": "HermannSchinagl.LinkShellExtension" + }, "WPFInstalllinphone": { "category": "Communications", "choco": "linphone", @@ -5885,6 +6039,14 @@ $sync.configs.applications = '{ "link": "https://localsend.org/", "winget": "LocalSend.LocalSend" }, + "WPFInstalllockhunter": { + "category": "Utilities", + "choco": "lockhunter", + "content": "LockHunter", + "description": "LockHunter is a free tool to delete files blocked by something you do not know.", + "link": "https://lockhunter.com/", + "winget": "CrystalRich.LockHunter" + }, "WPFInstalllogseq": { "category": "Document", "choco": "logseq", @@ -5981,6 +6143,14 @@ $sync.configs.applications = '{ "link": "https://mullvad.net/browser", "winget": "MullvadVPN.MullvadBrowser" }, + "WPFInstallmusescore": { + "category": "Multimedia Tools", + "choco": "musescore", + "content": "MuseScore", + "description": "Create, play back and print beautiful sheet music with free and easy to use music notation software MuseScore.", + "link": "https://musescore.org/en", + "winget": "Musescore.Musescore" + }, "WPFInstallmusicbee": { "category": "Multimedia Tools", "choco": "musicbee", @@ -6405,6 +6575,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", @@ -6413,6 +6591,14 @@ $sync.configs.applications = '{ "link": "https://qtox.github.io/", "winget": "Tox.qTox" }, + "WPFInstallquicklook": { + "category": "Utilities", + "choco": "quicklook", + "content": "Quicklook", + "description": "Bring macOS ???Quick Look??? feature to Windows", + "link": "https://github.com/QL-Win/QuickLook", + "winget": "QL-Win.QuickLook" + }, "WPFInstallrainmeter": { "category": "Utilities", "choco": "na", @@ -6429,6 +6615,14 @@ $sync.configs.applications = '{ "link": "https://www.revouninstaller.com/", "winget": "RevoUninstaller.RevoUninstaller" }, + "WPFInstallrevolt": { + "category": "Communications", + "choco": "na", + "content": "Revolt", + "description": "Find your community, connect with the world. Revolt is one of the best ways to stay connected with your friends and community without sacrificing any usability.", + "link": "https://revolt.chat/", + "winget": "Revolt.RevoltDesktop" + }, "WPFInstallripgrep": { "category": "Utilities", "choco": "ripgrep", @@ -6525,11 +6719,27 @@ $sync.configs.applications = '{ "link": "https://signal.org/", "winget": "OpenWhisperSystems.Signal" }, + "WPFInstallsignalrgb": { + "category": "Utilities", + "choco": "na", + "content": "SignalRGB", + "description": "SignalRGB lets you control and sync your favorite RGB devices with one free application.", + "link": "https://www.signalrgb.com/", + "winget": "WhirlwindFX.SignalRgb" + }, + "WPFInstallsimplenote": { + "category": "Document", + "choco": "simplenote", + "content": "simplenote", + "description": "Simplenote is an easy way to keep notes, lists, ideas and more.", + "link": "https://simplenote.com/", + "winget": "Automattic.Simplenote" + }, "WPFInstallsimplewall": { "category": "Pro Tools", "choco": "simplewall", "content": "Simplewall", - "description": "simplewall is a free and open-source firewall application for Windows. It allows users to control and manage the inbound and outbound network traffic of applications.", + "description": "Simplewall is a free and open-source firewall application for Windows. It allows users to control and manage the inbound and outbound network traffic of applications.", "link": "https://github.com/henrypp/simplewall", "winget": "Henry++.simplewall" }, @@ -6557,6 +6767,14 @@ $sync.configs.applications = '{ "link": "https://www.spacedrive.com/", "winget": "spacedrive.Spacedrive" }, + "WPFInstallspacesniffer": { + "category": "Utilities", + "choco": "spacesniffer", + "content": "SpaceSniffer", + "description": "A tool application that lets you understand how folders and files are structured on your disks", + "link": "http://www.uderzo.it/main_products/space_sniffer/", + "winget": "UderzoSoftware.SpaceSniffer" + }, "WPFInstallstarship": { "category": "Development", "choco": "starship", @@ -6621,6 +6839,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", @@ -6641,7 +6867,7 @@ $sync.configs.applications = '{ "category": "Development", "choco": "na", "content": "Swift toolchain", - "description": "Swift is a general-purpose programming language that???s approachable for newcomers and powerful for experts.", + "description": "Swift is a general-purpose programming language that is approachable for newcomers and powerful for experts.", "link": "https://www.swift.org/", "winget": "Swift.Toolchain" }, @@ -6653,6 +6879,22 @@ $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" + }, + "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" + }, "WPFInstalltailscale": { "category": "Utilities", "choco": "tailscale", @@ -6701,6 +6943,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", @@ -7029,6 +7279,14 @@ $sync.configs.applications = '{ "link": "https://toys.wisecleaner.com/", "winget": "WiseCleaner.WiseToys" }, + "WPFInstallwizfile": { + "category": "Utilities", + "choco": "na", + "content": "WizFile", + "description": "Find files by name on your hard drives almost instantly.", + "link": "https://antibody-software.com/wizfile/", + "winget": "AntibodySoftware.WizFile" + }, "WPFInstallwiztree": { "category": "Utilities", "choco": "wiztree", @@ -7061,6 +7319,14 @@ $sync.configs.applications = '{ "link": "https://xemu.app/", "winget": "xemu-project.xemu" }, + "WPFInstallxnview": { + "category": "Utilities", + "choco": "xnview", + "content": "XnView classic", + "description": "XnView is an efficient image viewer, browser and converter for Windows.", + "link": "https://www.xnview.com/en/xnview/", + "winget": "XnSoft.XnView.Classic" + }, "WPFInstallxournal": { "category": "Document", "choco": "xournalplusplus", @@ -7196,6 +7462,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 +7988,9 @@ $sync.configs.tweaks = '{ ], "InvokeScript": [ "powercfg.exe /hibernate off" + ], + "UndoScript": [ + "powercfg.exe /hibernate on" ] }, "WPFTweaksHome": { @@ -9518,6 +9827,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 +10179,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 +10218,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": { @@ -10311,6 +10643,7 @@ $inputXML = ' @@ -11088,6 +11421,9 @@ $inputXML = ' + + + @@ -11109,6 +11445,9 @@ $inputXML = ' + + + @@ -11134,6 +11473,9 @@ $inputXML = ' + + + @@ -11158,12 +11500,24 @@ $inputXML = ' + + + + + + + + + + + + @@ -11223,7 +11577,7 @@ $inputXML = ' - + @@ -11302,9 +11656,15 @@ $inputXML = ' + + + + + + @@ -11365,11 +11725,6 @@ $inputXML = ' - - - - - @@ -11385,6 +11740,11 @@ $inputXML = ' + + + + + @@ -11396,6 +11756,12 @@ $inputXML = ' - - - @@ -11569,6 +11945,11 @@ $inputXML = ' + + + + + @@ -11607,7 +11988,7 @@ $inputXML = ' - + @@ -11641,6 +12022,9 @@ $inputXML = ' + + + @@ -11662,6 +12046,12 @@ $inputXML = ' + + + + + + @@ -11707,6 +12097,9 @@ $inputXML = ' + + + @@ -11727,11 +12120,9 @@ $inputXML = ' - + + - - - @@ -11739,18 +12130,35 @@ $inputXML = ' + + + - + + + + + + + + + + + + + + + @@ -11820,6 +12228,9 @@ $inputXML = ' + + + @@ -11841,9 +12252,15 @@ $inputXML = ' + + + + + + @@ -11856,6 +12273,9 @@ $inputXML = ' + + + @@ -11865,6 +12285,9 @@ $inputXML = ' + + + @@ -11877,9 +12300,18 @@ $inputXML = ' + + + + + + + + + @@ -11895,6 +12327,9 @@ $inputXML = ' + + + @@ -11904,6 +12339,9 @@ $inputXML = ' + + + @@ -11935,6 +12373,7 @@ $inputXML = ' + + + @@ -103,6 +106,9 @@ + + + @@ -128,6 +134,9 @@ + + + @@ -152,12 +161,24 @@ + + + + + + + + + + + + @@ -217,7 +238,7 @@ - + @@ -296,9 +317,15 @@ + + + + + + @@ -359,11 +386,6 @@ - - - - - @@ -379,6 +401,11 @@ + + + + + @@ -390,6 +417,12 @@ - - @@ -563,6 +606,11 @@ + + + + + @@ -601,7 +649,7 @@ - + @@ -635,6 +683,9 @@ + + + @@ -656,6 +707,12 @@ + + + + + + @@ -701,6 +758,9 @@ + + + @@ -721,11 +781,9 @@ - + + - - - @@ -733,18 +791,35 @@ + + + - + + + + + + + + + + + + + + + @@ -814,6 +889,9 @@ + + + @@ -835,9 +913,15 @@ + + + + + + @@ -850,6 +934,9 @@ + + + @@ -859,6 +946,9 @@ + + + @@ -871,9 +961,18 @@ + + + + + + + + + @@ -889,6 +988,9 @@ + + + @@ -898,6 +1000,9 @@ + + + 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 @@