Compare commits

..

40 Commits

Author SHA1 Message Date
Chris Titus
e0237642c8 commit for removal of user scope progs and user scope winget (#3727) 2025-11-17 13:10:44 -06:00
Gabi
aedaa2f789 Update-WPFTweaksStorage (#3717)
* Update tweaks.json

* Syntax fix for WPFTweaksStorage

* Merge branch 'ChrisTitusTech:main' into Update-WPFTweaksStorage
2025-11-17 12:52:14 -06:00
Gabi
8c2f9075a0 Rename-WPFTweaksAH (#3715)
* Update tweaks.json

* Update preset.json

* Merge branch 'ChrisTitusTech:main' into Rename-WPFTweaksAH
2025-11-17 12:51:29 -06:00
Chris Titus Tech
c9e6861ad4 final fix for tweaks order 2025-11-17 06:50:06 -06:00
Chris Titus Tech
43ec73684e fix up ordering for tweaks 2025-11-17 06:46:54 -06:00
Gabi
bfbb643543 Update-WPFTweaksEndTaskOnTaskbar (#3714)
* Update tweaks.json

* Syntax fix on WPFTweaksEndTaskOnTaskbar

* Merge branch 'ChrisTitusTech:main' into Update-WPFTweaksEndTaskOnTaskbar
2025-11-17 12:11:39 -06:00
Gabi
067ec31086 Update-WPFTweaksBlockAdobeNet (#3708)
* Update tweaks.json

* Fix

* Final Fix

* Added comments to WPFTweaksBlockAdobeNet

* Syntax change for WPFTweaksBlockAdobeNet

* Removed double \ from WPFTweaksBlockAdobeNet

* Added back double \ for WPFTweaksBlockAdobeNet

* Syntax fix for WPFTweaksBlockAdobeNet

* Syntax fix for WPFTweaksBlockAdobeNet again

* Fix for WPFTweaksBlockAdobeNet

* Merge branch 'ChrisTitusTech:main' into Update-WPFTweaksBlockAdobeNet
2025-11-17 12:07:23 -06:00
Gabi
63221a7cb9 Remove-WPFFeatureSearchSuggestions (#3706)
* Update feature.json

* Merge branch 'ChrisTitusTech:main' into Remove-WPFFeatureSearchSuggestions
2025-11-17 12:04:31 -06:00
Gabi
7e40d379d8 Update-WPFTweaksDeleteTempFiles (#3705)
* Update tweaks.json

* Add -Path for better syntax

* Fix

* Merge branch 'ChrisTitusTech:main' into Update-WPFTweaksDeleteTempFiles
2025-11-17 12:00:21 -06:00
Myles Markevich
c766c974cf Fix typo in oscdimg.exe message box text (#3701) 2025-11-17 11:55:42 -06:00
Gabi
7d2804c706 Remove WPFTweaksHome (#3687)
* Remove WPFTweaksHome from tweaks.jsom

* Remove WPFTweaksHome from preset.json

* Merge branch 'ChrisTitusTech:main' into Remove-WPFTweaksHome

* Merge branch 'ChrisTitusTech:main' into Remove-WPFTweaksHome
2025-11-17 11:54:58 -06:00
Gabi
2ee9047dd6 Duplicates and Typos (#3660)
* Rename m to M

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Merge branch 'ChrisTitusTech:main' into Typo-Fix

* Merge branch 'ChrisTitusTech:main' into Typo-Fix

* Extra space

* From Tweaks to Toggle

* Merge branch 'ChrisTitusTech:main' into Typo-Fix
2025-11-17 11:48:07 -06:00
Ivan Lepekha
21c49d6a75 Fix explanation logic in 'WPFToggleSnapFlyout' (#3648) 2025-11-17 11:44:53 -06:00
Chris Titus Tech
351a77043e fix application errors from hyphens 2025-11-17 05:42:43 -06:00
Cube1ber
c8bb38f3a9 Added Proton Authenticator to applications.json (#3643)
* Added Proton Authenticator to applications.json

Proton Authenticator is a popular open source 2fa app from proton.

* Update name in applications.json

---------

Co-authored-by: CyberSphinx <202843220+CyberSphonx@users.noreply.github.com>
2025-11-17 11:33:49 -06:00
Ivan Lepekha
5fb5e43cc7 [Applications] Adding Ente Auth (#3635)
* Applications: Added Ente Auth

* Applications: Added Kando

* Revert "Applications: Added Kando"

This reverts commit 6a3e22f868.
2025-11-17 11:32:53 -06:00
Akhil Kumar Achanta
eeb410e985 fix(tweaks): Correct operator for checking tweak type in Invoke-WinUtilTweaks (#3625)
The Invoke-WinUtilTweaks function was using the '-contains' operator on a string variable to check for toggle-type tweaks. This operator is intended for collections (arrays), not for substring matching within a string, leading to incorrect logic flow.

This caused an issue where selecting one tweak (e.g., WPFTweaksRightClickMenu) could erroneously trigger the action of another (e.g., WPFTweaksDisableCrossDeviceResume).

This commit replaces the incorrect '-contains' operator with the '-like' operator and appropriate wildcards ('*Toggle*'). This ensures that tweak types are identified correctly, resolving the bug and preventing unintended system modifications.
2025-11-17 11:29:56 -06:00
Akhil Kumar Achanta
8eaf6ddd9c feat: Add Beeper to Messaging applications (#3617)
* feat: Add Beeper to Messaging applications

This commit adds the Beeper desktop application to the list of installable packages in the "Messaging" category.

The entry has been added to `config/applications.json` with the official download URL and the correct silent installation arguments.

Fixes #3608

* Fix job failure: ensure excluded directory exists before processing

This commit updates the Invoke-Preprocessing function to prevent workflow failures caused by missing excluded directories.
Previously, the script would attempt to recursively list files in excluded paths, resulting in an error if a directory did not exist.
The updated logic checks if the excluded path refers to a directory (ends with a backslash) and creates it if necessary before proceeding. This avoids "Cannot find path" errors and ensures smoother preprocessing, especially for jobs that depend on directory existence for exclusion logic.
No changes are made for excluded files or wildcard patterns.
2025-11-17 11:24:28 -06:00
Brian
3c54e0ea3f Fix Multiplane Overlay toggle (#3632) 2025-11-17 11:19:12 -06:00
Gabi
d17e8bcd98 Remove dns0.eu (#3682)
* Update dns.json

* Forgot one

* Forgot this
2025-11-17 11:18:31 -06:00
ChrisTitusTech
ef1fc2ae59 Deploying to main from @ ChrisTitusTech/winutil@7d1fb52277 🚀 2025-11-17 15:35:22 +00:00
ChrisTitusTech
7d1fb52277 Deploying to main from @ ChrisTitusTech/winutil@95988fca80 🚀 2025-11-15 15:31:46 +00:00
ChrisTitusTech
95988fca80 Deploying to main from @ ChrisTitusTech/winutil@451040b5b1 🚀 2025-11-14 15:33:01 +00:00
ChrisTitusTech
451040b5b1 Deploying to main from @ ChrisTitusTech/winutil@47cb6b9273 🚀 2025-11-08 15:31:28 +00:00
ChrisTitusTech
47cb6b9273 Deploying to main from @ ChrisTitusTech/winutil@69233b1d8a 🚀 2025-11-01 15:30:51 +00:00
Gabi
69233b1d8a Update Disable Edge Tweak (#3649)
* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Remove Disable edge invoke script

Removed scripts for disabling and enabling Microsoft Edge Update tasks.

* Update tweaks.json

* Update tweaks.json
2025-10-23 13:55:52 -05:00
ChrisTitusTech
b621d9104e Deploying to main from @ ChrisTitusTech/winutil@1f81eec8f1 🚀 2025-10-20 15:33:21 +00:00
Viktor Szépe
1f81eec8f1 Fix typos (#3637) 2025-10-14 12:51:53 -05:00
Robyn C. Maehl
72cbdca556 Fix christitustech.github.io 404 links (#3629)
* Fix Contributing Link in Pull Request Template

* Update 404 to christitustech.github.io
2025-10-14 12:44:36 -05:00
CatBraaain
d5127b14a3 fix(tweaks): remove duplicated (#3626) 2025-10-14 12:43:03 -05:00
Gabi
e2c84d9834 Add Disable Edge Tweak (#3613)
* Update tweaks.json

* Update tweaks.json

* Update tweaks.json
2025-10-14 12:20:00 -05:00
ChrisTitusTech
c454c93563 Deploying to main from @ ChrisTitusTech/winutil@70b1274425 🚀 2025-10-14 15:33:52 +00:00
ChrisTitusTech
70b1274425 Deploying to main from @ ChrisTitusTech/winutil@3b26620627 🚀 2025-10-08 15:33:58 +00:00
Chris Titus Tech
3b26620627 fix missing file paths for unit test during prepossess 2025-10-06 10:05:36 -05:00
Chris Titus Tech
eeee941eb3 fix formatting 2025-10-06 09:57:32 -05:00
Chris Titus Tech
242fa6f210 temp disable of offline for online users 2025-10-06 09:55:25 -05:00
Chris Titus Tech
634ef3266c add windows restore to config tab 2025-10-06 09:51:48 -05:00
ChrisTitusTech
a87c301636 Deploying to main from @ ChrisTitusTech/winutil@674d1368bb 🚀 2025-10-01 15:33:36 +00:00
CodingWonders
674d1368bb [Offline] Fixed invalid command in PWSH 5 (#3604)
-TimeoutSeconds is not a parameter in Test-Connection for PWSH 5
2025-09-21 16:21:18 -05:00
Chris Titus Tech
c7495059fd Offline Capabilities 2025-09-18 10:26:11 -05:00
31 changed files with 229 additions and 317 deletions

View File

@@ -87,7 +87,7 @@ graph TD
### Testing your changes
* To test to see if your changes work as intended run following commands in a powershell teminal as admin:
* To test to see if your changes work as intended run following commands in a powershell terminal as admin:
* Change the directory where you are running the commands to the forked project.
* `cd {path to the folder with the compile.ps1}`

View File

@@ -1,4 +1,4 @@
<!--Before you make this PR have you followed the docs here? - https://christitustech.github.io/winutil/contribute/ -->
<!--Before you make this PR have you followed the docs here? - https://winutil.christitus.com/contributing/ -->
## Type of Change
- [ ] New feature

View File

@@ -51,7 +51,24 @@ Update-Progress "Pre-req: Running Preprocessor..." 0
$preprocessingFilePath = ".\tools\Invoke-Preprocessing.ps1"
. $preprocessingFilePath
$excludedFiles = @('.\.git\', '.\.gitignore', '.\.gitattributes', '.\.github\CODEOWNERS', '.\LICENSE', "$preprocessingFilePath", '*.png', '*.exe','.\.preprocessor_hashes.json')
$excludedFiles = @()
# Add directories only if they exist
if (Test-Path '.\.git\') { $excludedFiles += '.\.git\' }
if (Test-Path '.\binary\') { $excludedFiles += '.\binary\' }
# Add files that should always be excluded
$excludedFiles += @(
'.\.gitignore',
'.\.gitattributes',
'.\.github\CODEOWNERS',
'.\LICENSE',
"$preprocessingFilePath",
'*.png',
'*.exe',
'.\.preprocessor_hashes.json'
)
$msg = "Pre-req: Code Formatting"
Invoke-Preprocessing -WorkingDir "$workingdir" -ExcludedFiles $excludedFiles -ProgressStatusMessage $msg

View File

@@ -79,7 +79,7 @@ You'll see a new file named `winutil.ps1`, which's created by `Compile.ps1` scri
These are the sponsors that help keep this project alive with monthly contributions.
<!-- sponsors --><a href="https://github.com/TriHydera"><img src="https:&#x2F;&#x2F;github.com&#x2F;TriHydera.png" width="60px" alt="User avatar: TriHydera" /></a><a href="https://github.com/DelDongo"><img src="https:&#x2F;&#x2F;github.com&#x2F;DelDongo.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/markamos"><img src="https:&#x2F;&#x2F;github.com&#x2F;markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https:&#x2F;&#x2F;github.com&#x2F;dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https:&#x2F;&#x2F;github.com&#x2F;mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https:&#x2F;&#x2F;github.com&#x2F;jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https:&#x2F;&#x2F;github.com&#x2F;robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https:&#x2F;&#x2F;github.com&#x2F;KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https:&#x2F;&#x2F;github.com&#x2F;paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https:&#x2F;&#x2F;github.com&#x2F;djones369.png" width="60px" alt="User avatar: Dave J. - WhamGeek" /></a><a href="https://github.com/anthonymendez"><img src="https:&#x2F;&#x2F;github.com&#x2F;anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https:&#x2F;&#x2F;github.com&#x2F;FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https:&#x2F;&#x2F;github.com&#x2F;DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/realmuddy"><img src="https:&#x2F;&#x2F;github.com&#x2F;realmuddy.png" width="60px" alt="User avatar: Phillip Waters" /></a><a href="https://github.com/quaszi"><img src="https:&#x2F;&#x2F;github.com&#x2F;quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https:&#x2F;&#x2F;github.com&#x2F;DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https:&#x2F;&#x2F;github.com&#x2F;KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/danhively"><img src="https:&#x2F;&#x2F;github.com&#x2F;danhively.png" width="60px" alt="User avatar: Dan Hively" /></a><!-- sponsors -->
<!-- sponsors --><a href="https://github.com/markamos"><img src="https:&#x2F;&#x2F;github.com&#x2F;markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https:&#x2F;&#x2F;github.com&#x2F;dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https:&#x2F;&#x2F;github.com&#x2F;mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https:&#x2F;&#x2F;github.com&#x2F;jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https:&#x2F;&#x2F;github.com&#x2F;robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https:&#x2F;&#x2F;github.com&#x2F;KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https:&#x2F;&#x2F;github.com&#x2F;paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https:&#x2F;&#x2F;github.com&#x2F;djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https:&#x2F;&#x2F;github.com&#x2F;anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https:&#x2F;&#x2F;github.com&#x2F;FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https:&#x2F;&#x2F;github.com&#x2F;DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/realmuddy"><img src="https:&#x2F;&#x2F;github.com&#x2F;realmuddy.png" width="60px" alt="User avatar: Phillip Waters" /></a><a href="https://github.com/quaszi"><img src="https:&#x2F;&#x2F;github.com&#x2F;quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https:&#x2F;&#x2F;github.com&#x2F;DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https:&#x2F;&#x2F;github.com&#x2F;KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/novello-dev"><img src="https:&#x2F;&#x2F;github.com&#x2F;novello-dev.png" width="60px" alt="User avatar: João Pedro Novello" /></a><!-- sponsors -->
## 🏅 Thanks to all Contributors
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.

View File

@@ -143,6 +143,15 @@
"link": "https://github.com/sharkdp/bat",
"winget": "sharkdp.bat"
},
"beeper": {
"category": "Communications",
"choco": "na",
"content": "Beeper",
"description": "All your chats in one app",
"link": "https://www.beeper.com/",
"winget": "Beeper.Beeper"
},
"bitwarden": {
"category": "Utilities",
"choco": "bitwarden",
@@ -511,6 +520,14 @@
"link": "https://emulationstation.org/",
"winget": "Emulationstation.Emulationstation"
},
"enteauth": {
"category": "Utilities",
"choco": "ente-auth",
"content": "Ente Auth",
"description": "Ente Auth is a free, cross-platform, end-to-end encrypted authenticator app.",
"link": "https://ente.io/auth/",
"winget": "ente-io.auth-desktop"
},
"epicgames": {
"category": "Games",
"choco": "epicgameslauncher",
@@ -1703,13 +1720,13 @@
"link": "https://bitsum.com/",
"winget": "BitSum.ProcessLasso"
},
"spotify": {
"category": "Multimedia Tools",
"choco": "spotify",
"content": "Spotify",
"description": "Spotify is a digital music service that gives you access to millions of songs, podcasts, and videos from artists all over the world.",
"link": "https://www.spotify.com/",
"winget": "Spotify.Spotify"
"protonauth": {
"category": "Utilities",
"choco": "protonauth",
"content": "Proton Authenticator",
"description": "2FA app from Proton to securely sync and backup 2FA codes.",
"link": "https://proton.me/authenticator",
"winget": "Proton.ProtonAuthenticator"
},
"processmonitor": {
"category": "Microsoft Tools",
@@ -2699,7 +2716,7 @@
"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.",
"description": "UltraVNC is a powerful, easy to use and free - remote pc access software - 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"
},

View File

@@ -46,23 +46,5 @@
"Secondary": "94.140.15.16",
"Primary6": "2a10:50c0::bad1:ff",
"Secondary6": "2a10:50c0::bad2:ff"
},
"dns0.eu_Open":{
"Primary": "193.110.81.254",
"Secondary": "185.253.5.254",
"Primary6": "2a0f:fc80::ffff",
"Secondary6": "2a0f:fc81::ffff"
},
"dns0.eu_ZERO":{
"Primary": "193.110.81.9",
"Secondary": "185.253.5.9",
"Primary6": "2a0f:fc80::9",
"Secondary6": "2a0f:fc81::9"
},
"dns0.eu_KIDS":{
"Primary": "193.110.81.1",
"Secondary": "185.253.5.1",
"Primary6": "2a0f:fc80::1",
"Secondary6": "2a0f:fc81::1"
}
}

View File

@@ -81,42 +81,6 @@
],
"link": "https://winutil.christitus.com/dev/features/features/nfs"
},
"WPFFeatureEnableSearchSuggestions": {
"Content": "Enable Search Box Web Suggestions in Registry(explorer restart)",
"Description": "Enables web suggestions when searching using Windows Search.",
"category": "Features",
"panel": "1",
"Order": "a015_",
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 0 -Force
Stop-Process -name explorer -force
"
],
"link": "https://winutil.christitus.com/dev/features/features/enablesearchsuggestions"
},
"WPFFeatureDisableSearchSuggestions": {
"Content": "Disable Search Box Web Suggestions in Registry(explorer restart)",
"Description": "Disables web suggestions when searching using Windows Search.",
"category": "Features",
"panel": "1",
"Order": "a016_",
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 1 -Force
Stop-Process -name explorer -force
"
],
"link": "https://winutil.christitus.com/dev/features/features/disablesearchsuggestions"
},
"WPFFeatureRegBackup": {
"Content": "Enable Daily Registry Backup Task 12.30am",
"Description": "Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.",
@@ -290,6 +254,14 @@
"ButtonWidth": "300",
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/region"
},
"WPFPanelRestore": {
"Content": "Windows Restore",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/restore"
},
"WPFPanelSound": {
"Content": "Sound Settings",
"category": "Legacy Windows Panels",
@@ -298,7 +270,6 @@
"ButtonWidth": "300",
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/user"
},
"WPFPanelSystem": {
"Content": "System Properties",
"category": "Legacy Windows Panels",

View File

@@ -1,10 +1,9 @@
{
"Standard": [
"WPFTweaksAH",
"WPFTweaksActivity",
"WPFTweaksConsumerFeatures",
"WPFTweaksDisableExplorerAutoDiscovery",
"WPFTweaksDVR",
"WPFTweaksHome",
"WPFTweaksLoc",
"WPFTweaksServices",
"WPFTweaksStorage",
@@ -19,7 +18,6 @@
"Minimal": [
"WPFTweaksConsumerFeatures",
"WPFTweaksDisableExplorerAutoDiscovery",
"WPFTweaksHome",
"WPFTweaksServices",
"WPFTweaksTele"
]

View File

@@ -3,7 +3,7 @@
"AppEntryWidth": "130",
"AppEntryFontSize": "11",
"AppEntryMargin": "1,1,1,1",
"AppEntryBorderTickness": "0",
"AppEntryBorderThickness": "0",
"CustomDialogFontSize": "12",
"CustomDialogFontSizeHeader": "14",
"CustomDialogLogoSize": "25",

View File

@@ -1,5 +1,5 @@
{
"WPFTweaksAH": {
"WPFTweaksActivity": {
"Content": "Disable Activity History",
"Description": "This erases recent docs, clipboard, and run history.",
"category": "Essential Tweaks",
@@ -63,9 +63,9 @@
"WPFTweaksLaptopHibernation": {
"Content": "Set Hibernation as default (good for laptops)",
"Description": "Most modern laptops have connected standby enabled which drains the battery, this sets hibernation as default which will not drain the battery. See issue https://github.com/ChrisTitusTech/winutil/issues/1399",
"category": "Essential Tweaks",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a014_",
"Order": "a027_",
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Power\\PowerSettings\\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0",
@@ -99,7 +99,7 @@
Write-Host \"Turn off Hibernation\"
Start-Process -FilePath powercfg -ArgumentList \"/hibernate off\" -NoNewWindow -Wait
# Set standby to detault values
# Set standby to default values
Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-ac 15\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-dc 15\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-ac 15\" -NoNewWindow -Wait
@@ -108,26 +108,6 @@
],
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/laptophibernation"
},
"WPFTweaksHome": {
"Content": "Disable Homegroup",
"Description": "Disables HomeGroup - HomeGroup is a password-protected home networking service that lets you share your stuff with other PCs that are currently running and connected to your network.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"service": [
{
"Name": "HomeGroupListener",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "HomeGroupProvider",
"StartupType": "Manual",
"OriginalType": "Automatic"
}
],
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/home"
},
"WPFTweaksLoc": {
"Content": "Disable Location Tracking",
"Description": "Disables Location Tracking...DUH!",
@@ -1552,11 +1532,11 @@
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/services"
},
"WPFTweaksBraveDebloat": {
"Content": "Debloat Brave",
"Content": "Brave Debloat",
"Description": "Disables various annoyances like Brave Rewards,Leo AI,Crypto Wallet and VPN",
"category": "Essential Tweaks",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a016_",
"Order": "a022_",
"registry": [
{
"Path":"HKLM:\\SOFTWARE\\Policies\\BraveSoftware\\Brave",
@@ -1589,11 +1569,11 @@
]
},
"WPFTweaksEdgeDebloat": {
"Content": "Debloat Edge",
"Content": "Edge Debloat",
"Description": "Disables various telemetry options, popups, and other annoyances in Edge.",
"category": "Essential Tweaks",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a016_",
"Order": "a022_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\EdgeUpdate",
@@ -1665,13 +1645,6 @@
"Value": "0",
"OriginalValue": "<RemoveEntry>"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "PersonalizationReportingEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "<RemoveEntry>"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ShowMicrosoftRewards",
@@ -1700,13 +1673,6 @@
"Value": "0",
"OriginalValue": "<RemoveEntry>"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeCollectionsEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "<RemoveEntry>"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "CryptoWalletEnabled",
@@ -2129,6 +2095,30 @@
],
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/wifi"
},
"WPFTweaksDisableEdge": {
"Content": "Disable Edge",
"Description": "Disables Microsoft Edge via the registry and prevents scheduled tasks from running Edge updates.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a023_",
"registry": [
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\DisallowRun",
"Name": "DisableEdge",
"Type": "String",
"Value": "msedge.exe",
"OriginalValue": "<RemoveEntry>"
},
{
"Path": "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
"Name": "DisallowRun",
"Type": "DWord",
"Value": "1",
"OriginalValue": "<RemoveEntry>"
}
],
"link": ""
},
"WPFTweaksUTC": {
"Content": "Set Time to UTC (Dual Boot)",
"Description": "Essential for computers that are dual booting. Fixes the time sync with Linux Systems.",
@@ -2313,9 +2303,8 @@
"Microsoft.MinecraftUWP",
"Microsoft.GamingServices",
"Microsoft.GetHelp",
"Microsoft.Getstarted",
"Microsoft.GetStarted",
"Microsoft.Messaging",
"Microsoft.Microsoft3DViewer",
"Microsoft.MicrosoftSolitaireCollection",
"Microsoft.NetworkSpeedTest",
"Microsoft.News",
@@ -2329,7 +2318,7 @@
"Microsoft.Wallet",
"Microsoft.Whiteboard",
"Microsoft.WindowsAlarms",
"microsoft.windowscommunicationsapps",
"Microsoft.WindowsCommunicationsApps",
"Microsoft.WindowsFeedbackHub",
"Microsoft.WindowsMaps",
"Microsoft.WindowsSoundRecorder",
@@ -2338,7 +2327,6 @@
"Microsoft.MixedReality.Portal",
"Microsoft.ZuneMusic",
"Microsoft.ZuneVideo",
"Microsoft.Getstarted",
"Microsoft.MicrosoftOfficeHub",
"*EclipseManager*",
"*ActiproSoftwareLLC*",
@@ -2359,7 +2347,7 @@
"*ACGMediaPlayer*",
"*Netflix*",
"*OneCalendar*",
"*LinkedInforWindows*",
"*LinkedInForWindows*",
"*HiddenCityMysteryofShadows*",
"*Hulu*",
"*HiddenCity*",
@@ -2462,40 +2450,23 @@
"category": "Essential Tweaks",
"panel": "1",
"Order": "a006_",
"InvokeScript": [
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
$name = \"TaskbarEndTask\"
$value = 1
# Ensure the registry key exists
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
"registry": [
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings",
"Name": "TaskbarEndTask",
"Type": "DWord",
"Value": "1",
"OriginalValue": "<RemoveEntry>"
}
# Set the property, creating it if it doesn't exist
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
],
"UndoScript": [
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
$name = \"TaskbarEndTask\"
$value = 0
# Ensure the registry key exists
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
}
# Set the property, creating it if it doesn't exist
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
],
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/endtaskontaskbar"
},
"WPFTweaksPowershell7": {
"Content": "Change Windows Terminal default: PowerShell 5 -> PowerShell 7",
"Description": "This will edit the config file of the Windows Terminal replacing PowerShell 5 with PowerShell 7 and installing PS7 if necessary",
"category": "Essential Tweaks",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a009_",
"Order": "a022_",
"InvokeScript": [
"Invoke-WPFTweakPS7 -action \"PS7\""
],
@@ -2524,11 +2495,14 @@
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"InvokeScript": [
"Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 0 -Type Dword -Force"
],
"UndoScript": [
"Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 1 -Type Dword -Force"
"registry": [
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy",
"Name": "01",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
],
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/storage"
},
@@ -2616,9 +2590,9 @@
"WPFTweaksRecallOff": {
"Content": "Disable Recall",
"Description": "Turn Recall off",
"category": "Essential Tweaks",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a011_",
"Order": "a025_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsAI",
@@ -2844,7 +2818,7 @@
"Description": "Blocks ALL Razer Software installations. The hardware works fine without any software. WARNING: this will also block all Windows third-party driver installations.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a032_",
"Order": "a021_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DriverSearching",
@@ -3062,102 +3036,26 @@
"Order": "a021_",
"InvokeScript": [
"
# Define the URL of the remote HOSTS file and the local paths
$remoteHostsUrl = \"https://raw.githubusercontent.com/Ruddernation-Designs/Adobe-URL-Block-List/master/hosts\"
$localHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\hosts\"
$tempHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\temp_hosts\"
$hostsUrl = \"https://github.com/Ruddernation-Designs/Adobe-URL-Block-List/raw/refs/heads/master/hosts\"
$hosts = \"$env:SystemRoot\\System32\\drivers\\etc\\hosts\"
# Download the remote HOSTS file to a temporary location
try {
Invoke-WebRequest -Uri $remoteHostsUrl -OutFile $tempHostsPath
Write-Output \"Downloaded the remote HOSTS file to a temporary location.\"
} catch {
Write-Error \"Failed to download the HOSTS file. Error: $_\"
}
Copy-Item $hosts \"$hosts.bak\"
Invoke-WebRequest $hostsUrl -OutFile $hosts
ipconfig flushdns
# Check if the AdobeNetBlock has already been started
try {
$localHostsContent = Get-Content $localHostsPath -ErrorAction Stop
# Check if AdobeNetBlock markers exist
$blockStartExists = $localHostsContent -like \"*#AdobeNetBlock-start*\"
if ($blockStartExists) {
Write-Output \"AdobeNetBlock-start already exists. Skipping addition of new block.\"
} else {
# Load the new block from the downloaded file
$newBlockContent = Get-Content $tempHostsPath -ErrorAction Stop
$newBlockContent = $newBlockContent | Where-Object { $_ -notmatch \"^\\s*#\" -and $_ -ne \"\" } # Exclude empty lines and comments
$newBlockHeader = \"#AdobeNetBlock-start\"
$newBlockFooter = \"#AdobeNetBlock-end\"
# Combine the contents, ensuring new block is properly formatted
$combinedContent = $localHostsContent + $newBlockHeader, $newBlockContent, $newBlockFooter | Out-String
# Write the combined content back to the original HOSTS file
$combinedContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output \"Successfully added the AdobeNetBlock.\"
}
} catch {
Write-Error \"Error during processing: $_\"
}
# Clean up temporary file
Remove-Item $tempHostsPath -ErrorAction Ignore
# Flush the DNS resolver cache
try {
Invoke-Expression \"ipconfig /flushdns\"
Write-Output \"DNS cache flushed successfully.\"
} catch {
Write-Error \"Failed to flush DNS cache. Error: $_\"
}
Write-Host \"Added Adobe url block list from host file\"
"
],
"UndoScript": [
"
# Define the local path of the HOSTS file
$localHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\hosts\"
$hosts = \"$env:SystemRoot\\System32\\drivers\\etc\\hosts\"
$backup = \"$hosts.bak\"
# Load the content of the HOSTS file
try {
$hostsContent = Get-Content $localHostsPath -ErrorAction Stop
} catch {
Write-Error \"Failed to load the HOSTS file. Error: $_\"
return
}
Copy-Item $backup $hosts
Remove-Item $backup
ipconfig flushdns
# Initialize flags and buffer for new content
$recording = $true
$newContent = @()
# Iterate over each line of the HOSTS file
foreach ($line in $hostsContent) {
if ($line -match \"#AdobeNetBlock-start\") {
$recording = $false
}
if ($recording) {
$newContent += $line
}
if ($line -match \"#AdobeNetBlock-end\") {
$recording = $true
}
}
# Write the filtered content back to the HOSTS file
try {
$newContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output \"Successfully removed the AdobeNetBlock section from the HOSTS file.\"
} catch {
Write-Error \"Failed to write back to the HOSTS file. Error: $_\"
}
# Flush the DNS resolver cache
try {
Invoke-Expression \"ipconfig /flushdns\"
Write-Output \"DNS cache flushed successfully.\"
} catch {
Write-Error \"Failed to flush DNS cache. Error: $_\"
}
Write-Host \"Removed Adobe url block list from host file\"
"
],
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/blockadobenet"
@@ -3206,8 +3104,10 @@
"panel": "1",
"Order": "a002_",
"InvokeScript": [
"Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
"
Remove-Item -Path \"$Env:Temp\\*\" -Recurse -Force
Remove-Item -Path \"$Env:SystemRoot\\Temp\\*\" -Recurse -Force
"
],
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/deletetempfiles"
},
@@ -3261,7 +3161,7 @@
"Description": "To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a023_",
"Order": "a024_",
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
@@ -3278,7 +3178,7 @@
"Description": "Teredo network tunneling is a ipv6 feature that can cause additional latency, but may cause problems with some games",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a023_",
"Order": "a024_",
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
@@ -3301,7 +3201,7 @@
"Description": "Disables IPv6.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a023_",
"Order": "a024_",
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
@@ -3535,7 +3435,7 @@
},
"WPFToggleSnapFlyout": {
"Content": "Snap Assist Flyout",
"Description": "If enabled then Snap preview is disabled when maximize button is hovered.",
"Description": "If disabled then Snap preview is disabled when maximize button is hovered.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a107_",
@@ -3690,7 +3590,7 @@
},
"WPFToggleMultiplaneOverlay": {
"Content": "Multiplane Overlay",
"Content": "Disable Multiplane Overlay",
"Description": "Disable the Multiplane Overlay which can sometimes cause issues with Graphics Cards.",
"category": "Customize Preferences",
"panel": "2",
@@ -3702,7 +3602,7 @@
"Name": "OverlayTestMode",
"Value": "5",
"OriginalValue": "<RemoveEntry>",
"DefaultState": "true",
"DefaultState": "false",
"Type": "DWord"
}
],
@@ -3901,7 +3801,7 @@
"panel": "1",
"Order": "a040_",
"Type": "Combobox",
"ComboItems": "Default DHCP Google Cloudflare Cloudflare_Malware Cloudflare_Malware_Adult Open_DNS Quad9 AdGuard_Ads_Trackers AdGuard_Ads_Trackers_Malware_Adult dns0.eu_Open dns0.eu_ZERO dns0.eu_KIDS",
"ComboItems": "Default DHCP Google Cloudflare Cloudflare_Malware Cloudflare_Malware_Adult Open_DNS Quad9 AdGuard_Ads_Trackers AdGuard_Ads_Trackers_Malware_Adult",
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/changedns"
},
"WPFAddUltPerf": {
@@ -3977,7 +3877,7 @@
"
]
},
"WPFTweaksDisableCrossDeviceResume": {
"WPFToggleDisableCrossDeviceResume": {
"Content": "Cross-Device Resume",
"Description": "This tweak controls the Resume function in Windows 11 24H2 and later, which allows you to resume an activity from a mobile device and vice-versa.",
"category": "Customize Preferences",

View File

@@ -132,7 +132,7 @@ function Invoke-MicrowinGetIso {
if (!$downloadFromGitHub) {
# only show the message to people who did check the box to download from github, if you check the box
# you consent to downloading it, no need to show extra dialogs
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.")
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.")
# the step below needs choco to download oscdimg
# Install Choco if not already present
Install-WinUtilChoco
@@ -149,7 +149,7 @@ function Invoke-MicrowinGetIso {
[System.Windows.MessageBox]::Show($msg)
return
} else {
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.")
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.")
Invoke-MicrowinBusyInfo -action "wip" -message "Downloading oscdimg.exe..." -interactive $false
Microwin-GetOscdimg -oscdimgPath $oscdimgPath
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
@@ -200,7 +200,7 @@ function Invoke-MicrowinGetIso {
$msg = "Failed to mount the image. Error: $($_.Exception.Message)"
Write-Error $msg
Write-Error "This is NOT winutil's problem, your ISO might be corrupt, or there is a problem on the system"
Write-Host "Please refer to this wiki for more details: https://christitustech.github.io/winutil/KnownIssues/#troubleshoot-errors-during-microwin-usage" -ForegroundColor Red
Write-Host "Please refer to this wiki for more details: https://winutil.christitus.com/knownissues/" -ForegroundColor Red
Set-WinUtilTaskbaritem -state "Error" -value 1 -overlay "warning"
Invoke-MicrowinBusyInfo -action "warning" -message $msg
return

View File

@@ -1,6 +1,6 @@
function Microwin-NewCheckInstall {
# using here string to embedd firstrun
# using here string to embed firstrun
$checkInstall = @'
@echo off
if exist "%HOMEDRIVE%\windows\cpu.txt" (

View File

@@ -1,6 +1,6 @@
function Microwin-NewFirstRun {
# using here string to embedd firstrun
# using here string to embed firstrun
$firstRun = @'
# Set the global error action preference to continue
$ErrorActionPreference = "Continue"

View File

@@ -41,7 +41,7 @@
$selectedAppRemoveButton.Add_MouseEnter({ $this.Foreground = "Red" })
$selectedAppRemoveButton.Add_MouseLeave({ $this.SetResourceReference([Windows.Controls.Control]::ForegroundProperty, "MainForegroundColor") })
$selectedAppRemoveButton.Add_Click({
$sync.($this.Tag).isChecked = $false # On click of the remove button, we only have to uncheck the corresponding checkbox. This will kick of all neccessary changes to update the UI
$sync.($this.Tag).isChecked = $false # On click of the remove button, we only have to uncheck the corresponding checkbox. This will kick of all necessary changes to update the UI
})
[System.Windows.Controls.Grid]::SetColumn($selectedAppRemoveButton, 1)
$selectedAppGrid.Children.Add($selectedAppRemoveButton)

View File

@@ -13,7 +13,7 @@ function Get-LocalizedYesNo {
#>
# Run choice and capture its options as output
# The output shows the options for Yes and No as "[Y,N]?" in the (partitially) localized format.
# The output shows the options for Yes and No as "[Y,N]?" in the (partially) localized format.
# eg. English: [Y,N]?
# Dutch: [Y,N]?
# German: [J,N]?

View File

@@ -8,7 +8,7 @@
Also creates an overlay with a progress bar and text to indicate that an install or uninstall is in progress
.PARAMETER TargetElement
The element to which the AppArea shoud be added
The element to which the AppArea should be added
#>
param($TargetElement)

View File

@@ -1,7 +1,7 @@
function Initialize-InstallAppEntry {
<#
.SYNOPSIS
Creates the app entry to be placed on the isntall tab for a given app
Creates the app entry to be placed on the install tab for a given app
Used to as part of the Install Tab UI generation
.PARAMETER TargetElement
The Element into which the Apps should be placed

View File

@@ -30,24 +30,16 @@ Function Install-WinUtilProgramWinget {
.PARAMETER wingetId
The Id of the Program that Winget should Install/Uninstall
.PARAMETER scope
Determines the installation mode. Can be "user" or "machine" (For more info look at the winget documentation)
.PARAMETER credential
The PSCredential Object of the user that should be used to run winget
.NOTES
Invoke Winget uses the public variable $Action defined outside the function to determine if a Program should be installed or removed
#>
param (
[string]$wingetId,
[string]$scope = "",
[PScredential]$credential = $null
[string]$wingetId
)
$commonArguments = "--id $wingetId --silent"
$arguments = if ($Action -eq "Install") {
"install $commonArguments --accept-source-agreements --accept-package-agreements $(if ($scope) {" --scope $scope"})"
"install $commonArguments --accept-source-agreements --accept-package-agreements"
} else {
"uninstall $commonArguments"
}
@@ -60,10 +52,6 @@ Function Install-WinUtilProgramWinget {
NoNewWindow = $true
}
if ($credential) {
$processParams.credential = $credential
}
return (Start-Process @processParams).ExitCode
}
@@ -87,28 +75,6 @@ Function Install-WinUtilProgramWinget {
return $true
}
Write-Host "Attempt installation of $($Program) with User scope"
$status = Invoke-Winget -wingetId $Program -scope "user"
if ($status -eq 0) {
Write-Host "$($Program) installed successfully with User scope."
return $true
} elseif ($status -eq -1978335189) {
Write-Host "$($Program) No applicable update found"
return $true
}
$userAcknowledgment = [System.Windows.MessageBox]::Show("You need to input your password to install $($Program) with specific user credentials.", "User credential Prompt", [System.Windows.MessageBoxButton]::Ok)
if ($userAcknowledgment -eq 'Ok') {
$getcreds = Get-Credential $env:USERNAME
$status = Invoke-Winget -wingetId $Program -credential $getcreds
if ($status -eq 0) {
Write-Host "$($Program) installed successfully with User prompt."
return $true
}
} else {
Write-Host "Skipping installation with specific user credentials."
}
Write-Host "Failed to install $($Program)."
return $false
}

View File

@@ -21,7 +21,7 @@ function Invoke-WinUtilTweaks {
$KeepServiceStartup = $true
)
if ($Checkbox -contains "Toggle") {
if ($Checkbox -like "*Toggle*") {
$CheckBox = $sync.configs.tweaks.$CheckBox
}
@@ -54,7 +54,7 @@ function Invoke-WinUtilTweaks {
$sync.configs.tweaks.$CheckBox.service | ForEach-Object {
$changeservice = $true
# The check for !($undo) is required, without it the script will throw an error for accessing unavailable memeber, which's the 'OriginalService' Property
# The check for !($undo) is required, without it the script will throw an error for accessing unavailable member, which's the 'OriginalService' Property
if($KeepServiceStartup -AND !($undo)) {
try {
# Check if the service exists

View File

@@ -6,35 +6,35 @@ function Set-PackageManagerPreference {
Reads from preference.ini if no argument sent.
.PARAMETER preferedPackageManager
.PARAMETER preferredPackageManager
The PackageManager that was selected.
#>
param(
[Parameter(Position=0, Mandatory=$false)]
[PackageManagers]$preferedPackageManager
[PackageManagers]$preferredPackageManager
)
$preferencePath = "$env:LOCALAPPDATA\winutil\preferences.ini"
$oldChocoPath = "$env:LOCALAPPDATA\winutil\preferChocolatey.ini"
#Try loading from file if no argument given.
if ($null -eq $preferedPackageManager) {
if ($null -eq $preferredPackageManager) {
# Backwards compat for preferChocolatey.ini
if (Test-Path -Path $oldChocoPath) {
$preferedPackageManager = [PackageManagers]::Choco
$preferredPackageManager = [PackageManagers]::Choco
Remove-Item -Path $oldChocoPath
}
elseif (Test-Path -Path $preferencePath) {
$potential = Get-Content -Path $preferencePath -TotalCount 1
$preferedPackageManager = [PackageManagers]$potential
$preferredPackageManager = [PackageManagers]$potential
}
else {
Write-Debug "Creating new preference file, defaulting to winget."
$preferedPackageManager = [PackageManagers]::Winget
$preferredPackageManager = [PackageManagers]::Winget
}
}
$sync["ManagerPreference"] = [PackageManagers]::$preferedPackageManager
$sync["ManagerPreference"] = [PackageManagers]::$preferredPackageManager
Write-Debug "Manager Preference changed to '$($sync["ManagerPreference"])'"

View File

@@ -4,7 +4,7 @@ function Set-WinUtilProgressbar{
This function is used to Update the Progress Bar displayed in the winutil GUI.
It will be automatically hidden if the user clicks something and no process is running
.PARAMETER Label
The Text to be overlayed onto the Progress Bar
The Text to be overlaid onto the Progress Bar
.PARAMETER PERCENT
The percentage of the Progress Bar that should be filled (0-100)
#>

View File

@@ -0,0 +1,26 @@
function Test-WinUtilInternetConnection {
<#
.SYNOPSIS
Tests if the computer has internet connectivity
.OUTPUTS
Boolean - True if connected, False if offline
#>
try {
# Test multiple reliable endpoints
$testSites = @(
"8.8.8.8", # Google DNS
"1.1.1.1", # Cloudflare DNS
"208.67.222.222" # OpenDNS
)
foreach ($site in $testSites) {
if (Test-Connection -ComputerName $site -Count 1 -Quiet -ErrorAction SilentlyContinue) {
return $true
}
}
return $false
}
catch {
return $false
}
}

View File

@@ -33,7 +33,7 @@ function Test-WinUtilPackageManager {
$wingetVersionFull = ($wingetInfo | Select-String -Pattern 'Package Manager v\d+\.\d+\.\d+').Matches.Value.Split(' ')[-1]
}
} catch [System.Management.Automation.CommandNotFoundException], [System.Management.Automation.ApplicationFailedException] {
Write-Warning "Winget was not found due to un-availablity reasons"
Write-Warning "Winget was not found due to un-availability reasons"
$wingetExists = $false
} catch {
Write-Warning "Winget was not found due to un-known reasons, The Stack Trace is:`n$($psitem.Exception.StackTrace)"
@@ -41,7 +41,7 @@ function Test-WinUtilPackageManager {
}
# If Winget is available, Parse it's Version and give proper information to Terminal Output.
# If it isn't available, the return of this funtion will be "not-installed", indicating that
# If it isn't available, the return of this function will be "not-installed", indicating that
# Winget isn't installed/available on The System.
if ($wingetExists) {
# Check if Preview Version
@@ -55,7 +55,7 @@ function Test-WinUtilPackageManager {
# Check if Winget's Version is too old.
$wingetCurrentVersion = [System.Version]::Parse($wingetVersion.Trim('v'))
# Grabs the latest release of Winget from the Github API for version check process.
# Grabs the latest release of Winget from the GitHub API for version check process.
$response = winget search -e Microsoft.AppInstaller --accept-source-agreements
$wingetLatestVersion = ($response | Select-String -Pattern '\d+\.\d+\.\d+\.\d+').Matches.Value
Write-Host "Latest Search Version: $wingetLatestVersion" -ForegroundColor White

View File

@@ -4,7 +4,7 @@ function Invoke-ScratchDialog {
<#
.SYNOPSIS
Enable Editable Text box Alternate Scartch path
Enable Editable Text box Alternate Scratch path
.PARAMETER Button
#>

View File

@@ -41,6 +41,7 @@ function Invoke-WPFButton {
"WPFPanelPower" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelPrinter" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelRegion" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelRestore" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelSound" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelSystem" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelTimedate" {Invoke-WPFControlPanel -Panel $button}

View File

@@ -17,6 +17,7 @@ function Invoke-WPFControlPanel {
"WPFPanelPower" {powercfg.cpl}
"WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelRegion" {intl.cpl}
"WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}

View File

@@ -12,7 +12,7 @@ function Invoke-WPFInstallUpgrade {
Write-Host "Upgrade Successful"
}
else{
Write-Host "Error Occured. Return Code: $chocoUpgradeStatus"
Write-Host "Error Occurred. Return Code: $chocoUpgradeStatus"
}
}
else{

View File

@@ -24,7 +24,7 @@ function Invoke-WPFtweaksbutton {
Write-Debug "Number of tweaks to process: $($Tweaks.Count)"
# The leading "," in the ParameterList is nessecary because we only provide one argument and powershell cannot be convinced that we want a nested loop with only one argument otherwise
# The leading "," in the ParameterList is necessary because we only provide one argument and powershell cannot be convinced that we want a nested loop with only one argument otherwise
Invoke-WPFRunspace -ParameterList @(,("tweaks",$tweaks)) -DebugPreference $DebugPreference -ScriptBlock {
param(
$tweaks,

View File

@@ -310,7 +310,36 @@ $sync["Form"].Add_ContentRendered({
Write-Debug "Unable to retrieve information about the primary monitor."
}
Invoke-WPFTab "WPFTab1BT"
# Check internet connectivity and disable install tab if offline
#$isOnline = Test-WinUtilInternetConnection
$isOnline = $true # Temporarily force online mode until we can resolve false negatives
if (-not $isOnline) {
# Disable the install tab
$sync.WPFTab1BT.IsEnabled = $false
$sync.WPFTab1BT.Opacity = 0.5
$sync.WPFTab1BT.ToolTip = "Internet connection required for installing applications"
# Disable install-related buttons
$sync.WPFInstall.IsEnabled = $false
$sync.WPFUninstall.IsEnabled = $false
$sync.WPFInstallUpgrade.IsEnabled = $false
$sync.WPFGetInstalled.IsEnabled = $false
# Show offline indicator
Write-Host "Offline mode detected - Install tab disabled" -ForegroundColor Yellow
# Optionally switch to a different tab if install tab was going to be default
Invoke-WPFTab "WPFTab2BT" # Switch to Tweaks tab instead
}
else {
# Online - ensure install tab is enabled
$sync.WPFTab1BT.IsEnabled = $true
$sync.WPFTab1BT.Opacity = 1.0
$sync.WPFTab1BT.ToolTip = $null
Invoke-WPFTab "WPFTab1BT" # Default to install tab
}
$sync["Form"].Focus()
# maybe this is not the best place to load and execute config file?

View File

@@ -23,7 +23,7 @@ function Invoke-Preprocessing {
.EXAMPLE
Invoke-Preprocessing -WorkingDir "DRIVE:\Path\To\Folder\" -ExcludedFiles @('file.txt', '.\.git\', '*.png') -ProgressStatusMessage "Doing Preprocessing"
Calls 'Invoke-Preprocessing' function using Named Paramters, with 'WorkingDir' (Mandatory Parameter) which's used as the base folder when searching for files recursively (using 'Get-ChildItem'), other two paramters are, in order from right to left, the Optional 'ExcludeFiles', which can be a path to a file, folder, or pattern-matched (like '*.png'), and the 'ProgressStatusMessage', which's used in Progress Bar.
Calls 'Invoke-Preprocessing' function using Named Parameters, with 'WorkingDir' (Mandatory Parameter) which's used as the base folder when searching for files recursively (using 'Get-ChildItem'), other two parameters are, in order from right to left, the Optional 'ExcludeFiles', which can be a path to a file, folder, or pattern-matched (like '*.png'), and the 'ProgressStatusMessage', which's used in Progress Bar.
.EXAMPLE
Invoke-Preprocessing -WorkingDir "DRIVE:\Path\To\Folder\" -ExcludedFiles @('file.txt', '.\.git\', '*.png') -ProgressStatusMessage "Doing Preprocessing" -ProgressActivity "Re-Formatting Code"
@@ -51,7 +51,7 @@ function Invoke-Preprocessing {
)
if (-NOT (Test-Path -PathType Container -Path "$WorkingDir")) {
throw "[Invoke-Preprocessing] Invalid Paramter Value for 'WorkingDir', passed value: '$WorkingDir'. Either the path is a File or Non-Existing/Invlid, please double check your code."
throw "[Invoke-Preprocessing] Invalid Parameter Value for 'WorkingDir', passed value: '$WorkingDir'. Either the path is a File or Non-Existing/Invlid, please double check your code."
}
$InternalExcludedFiles = [System.Collections.Generic.List[string]]::new($ExcludedFiles.Count)
@@ -63,6 +63,10 @@ function Invoke-Preprocessing {
if ($ExcludedFiles.Count -gt 0) {
ForEach ($excludedFile in $ExcludedFiles) {
$filePath = "$(($WorkingDir -replace ('\\$', '')) + '\' + ($excludedFile -replace ('\.\\', '')))"
# Only attempt to create the directory if the excludedFile ends with '\'
if ($excludedFile -match '\\$' -and -not (Test-Path "$filePath")) {
New-Item -Path "$filePath" -ItemType Directory -Force | Out-Null
}
$files = Get-ChildItem -Recurse -Path "$filePath" -File -Force
if ($files.Count -gt 0) {
ForEach ($file in $files) {

View File

@@ -1350,7 +1350,7 @@
HorizontalAlignment="Stretch">
<StackPanel Name="MicrowinMain" Background="{DynamicResource MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Grid.Row="0">
<StackPanel Name="MicrowinISOPanel" Background="Transparent" SnapsToDevicePixels="True" Margin="1">
<CheckBox x:Name="WPFMicrowinDownloadFromGitHub" Content="Download oscdimg.exe from CTT Github repo" IsChecked="True" Margin="{DynamicResource MicrowinCheckBoxMargin}" />
<CheckBox x:Name="WPFMicrowinDownloadFromGitHub" Content="Download oscdimg.exe from CTT GitHub repo" IsChecked="True" Margin="{DynamicResource MicrowinCheckBoxMargin}" />
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}">
Choose a Windows ISO file that you've downloaded <LineBreak/>
Check the status in the console