mirror of
https://github.com/ChrisTitusTech/winutil
synced 2026-04-06 06:38:31 +00:00
Compare commits
7 Commits
58dacd5b0b
...
26.03.03
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b493737982 | ||
|
|
7ceb303f00 | ||
|
|
30c9812d37 | ||
|
|
ddc10b0935 | ||
|
|
a2e2395ce9 | ||
|
|
ce5e407a76 | ||
|
|
3fb5c04693 |
@@ -36,7 +36,7 @@
|
|||||||
"category": "Document",
|
"category": "Document",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "AFFiNE",
|
"content": "AFFiNE",
|
||||||
"description": "AFFiNE is an open source alternative to Notion. Write, draw, plan all at once. Selfhost it to sync across devices.",
|
"description": "AFFiNE is an open-source alternative to Notion. Write, draw, plan all at once. Selfhost it to sync across devices.",
|
||||||
"link": "https://affine.pro/",
|
"link": "https://affine.pro/",
|
||||||
"winget": "ToEverything.AFFiNE",
|
"winget": "ToEverything.AFFiNE",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
"category": "Microsoft Tools",
|
"category": "Microsoft Tools",
|
||||||
"choco": "autoruns",
|
"choco": "autoruns",
|
||||||
"content": "Autoruns",
|
"content": "Autoruns",
|
||||||
"description": "This utility shows you what programs are configured to run during system bootup or login",
|
"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",
|
"link": "https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns",
|
||||||
"winget": "Microsoft.Sysinternals.Autoruns"
|
"winget": "Microsoft.Sysinternals.Autoruns"
|
||||||
},
|
},
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
"category": "Communications",
|
"category": "Communications",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Beeper",
|
"content": "Beeper",
|
||||||
"description": "All your chats in one app",
|
"description": "All your chats in one app.",
|
||||||
"link": "https://www.beeper.com/",
|
"link": "https://www.beeper.com/",
|
||||||
"winget": "Beeper.Beeper"
|
"winget": "Beeper.Beeper"
|
||||||
},
|
},
|
||||||
@@ -173,7 +173,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "bleachbit",
|
"choco": "bleachbit",
|
||||||
"content": "BleachBit",
|
"content": "BleachBit",
|
||||||
"description": "Clean Your System and Free Disk Space",
|
"description": "Clean Your System and Free Disk Space.",
|
||||||
"link": "https://www.bleachbit.org/",
|
"link": "https://www.bleachbit.org/",
|
||||||
"winget": "BleachBit.BleachBit",
|
"winget": "BleachBit.BleachBit",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -593,7 +593,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "espanso",
|
"choco": "espanso",
|
||||||
"content": "Espanso",
|
"content": "Espanso",
|
||||||
"description": "Cross-platform and open-source Text Expander written in Rust",
|
"description": "Cross-platform and open-source Text Expander written in Rust.",
|
||||||
"link": "https://espanso.org/",
|
"link": "https://espanso.org/",
|
||||||
"winget": "Espanso.Espanso",
|
"winget": "Espanso.Espanso",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -620,7 +620,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Fastfetch",
|
"content": "Fastfetch",
|
||||||
"description": "Fastfetch is a neofetch-like tool for fetching system information and displaying them in a pretty way",
|
"description": "Fastfetch is a neofetch-like tool for fetching system information and displaying them in a pretty way.",
|
||||||
"link": "https://github.com/fastfetch-cli/fastfetch/",
|
"link": "https://github.com/fastfetch-cli/fastfetch/",
|
||||||
"winget": "Fastfetch-cli.Fastfetch",
|
"winget": "Fastfetch-cli.Fastfetch",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -646,7 +646,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "file-converter",
|
"choco": "file-converter",
|
||||||
"content": "File-Converter",
|
"content": "File-Converter",
|
||||||
"description": "File Converter is a very simple tool which allows you to convert and compress one or several file(s) using the context menu in windows explorer.",
|
"description": "File Converter is a very simple tool which allows you to convert and compress one or several file(s) using the context menu in Windows Explorer.",
|
||||||
"link": "https://file-converter.io/",
|
"link": "https://file-converter.io/",
|
||||||
"winget": "AdrienAllard.FileConverter",
|
"winget": "AdrienAllard.FileConverter",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -699,7 +699,7 @@
|
|||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "lightshot",
|
"choco": "lightshot",
|
||||||
"content": "Lightshot (Screenshots)",
|
"content": "Lightshot (Screenshots)",
|
||||||
"description": "Ligthshot is an Easy-to-use, light-weight screenshot software tool, where you can optionally edit your screenshots using different tools, share them via Internet and/or save to disk, and customize the available options.",
|
"description": "Ligthshot is an easy-to-use, light-weight screenshot software tool, where you can optionally edit your screenshots using different tools, share them via Internet and/or save to disk, and customize the available options.",
|
||||||
"link": "https://app.prntscr.com/",
|
"link": "https://app.prntscr.com/",
|
||||||
"winget": "Skillbrains.Lightshot"
|
"winget": "Skillbrains.Lightshot"
|
||||||
},
|
},
|
||||||
@@ -775,7 +775,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "fzf",
|
"choco": "fzf",
|
||||||
"content": "Fzf",
|
"content": "Fzf",
|
||||||
"description": "A command-line fuzzy finder",
|
"description": "A command-line fuzzy finder.",
|
||||||
"link": "https://github.com/junegunn/fzf/",
|
"link": "https://github.com/junegunn/fzf/",
|
||||||
"winget": "junegunn.fzf",
|
"winget": "junegunn.fzf",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -895,7 +895,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "googledrive",
|
"choco": "googledrive",
|
||||||
"content": "Google Drive",
|
"content": "Google Drive",
|
||||||
"description": "File syncing across devices all tied to your google account",
|
"description": "File syncing across devices all tied to your Google account.",
|
||||||
"link": "https://www.google.com/drive/",
|
"link": "https://www.google.com/drive/",
|
||||||
"winget": "Google.GoogleDrive"
|
"winget": "Google.GoogleDrive"
|
||||||
},
|
},
|
||||||
@@ -955,7 +955,7 @@
|
|||||||
"category": "Development",
|
"category": "Development",
|
||||||
"choco": "helix",
|
"choco": "helix",
|
||||||
"content": "Helix",
|
"content": "Helix",
|
||||||
"description": "Helix is a neovim alternative built in rust.",
|
"description": "Helix is a neovim alternative built in Rust.",
|
||||||
"link": "https://helix-editor.com/",
|
"link": "https://helix-editor.com/",
|
||||||
"winget": "Helix.Helix",
|
"winget": "Helix.Helix",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1147,7 +1147,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "jpegview",
|
"choco": "jpegview",
|
||||||
"content": "JPEG View",
|
"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",
|
"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",
|
"link": "https://github.com/sylikc/jpegview",
|
||||||
"winget": "sylikc.JPEGView",
|
"winget": "sylikc.JPEGView",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1209,7 +1209,7 @@
|
|||||||
"category": "Development",
|
"category": "Development",
|
||||||
"choco": "lazygit",
|
"choco": "lazygit",
|
||||||
"content": "Lazygit",
|
"content": "Lazygit",
|
||||||
"description": "Simple terminal UI for git commands",
|
"description": "Simple terminal UI for git commands.",
|
||||||
"link": "https://github.com/jesseduffield/lazygit/",
|
"link": "https://github.com/jesseduffield/lazygit/",
|
||||||
"winget": "JesseDuffield.lazygit",
|
"winget": "JesseDuffield.lazygit",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1262,7 +1262,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "localsend.install",
|
"choco": "localsend.install",
|
||||||
"content": "LocalSend",
|
"content": "LocalSend",
|
||||||
"description": "An open source cross-platform alternative to AirDrop.",
|
"description": "An open-source cross-platform alternative to AirDrop.",
|
||||||
"link": "https://localsend.org/",
|
"link": "https://localsend.org/",
|
||||||
"winget": "LocalSend.LocalSend",
|
"winget": "LocalSend.LocalSend",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1323,7 +1323,7 @@
|
|||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Modern Flyouts",
|
"content": "Modern Flyouts",
|
||||||
"description": "An open source, modern, Fluent Design-based set of flyouts for Windows.",
|
"description": "An open-source, modern, Fluent Design-based set of flyouts for Windows.",
|
||||||
"link": "https://github.com/ModernFlyouts-Community/ModernFlyouts/",
|
"link": "https://github.com/ModernFlyouts-Community/ModernFlyouts/",
|
||||||
"winget": "ModernFlyouts.ModernFlyouts",
|
"winget": "ModernFlyouts.ModernFlyouts",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1377,7 +1377,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "msedgeredirect",
|
"choco": "msedgeredirect",
|
||||||
"content": "MSEdgeRedirect",
|
"content": "MSEdgeRedirect",
|
||||||
"description": "A Tool to Redirect News, Search, Widgets, Weather, and More to Your Default Browser.",
|
"description": "A Tool to Redirect News, Search, Widgets, Weather, and More to your default browser.",
|
||||||
"link": "https://github.com/rcmaehl/MSEdgeRedirect",
|
"link": "https://github.com/rcmaehl/MSEdgeRedirect",
|
||||||
"winget": "rcmaehl.MSEdgeRedirect",
|
"winget": "rcmaehl.MSEdgeRedirect",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1473,7 +1473,7 @@
|
|||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "tagscanner",
|
"choco": "tagscanner",
|
||||||
"content": "TagScanner (Tag Scanner)",
|
"content": "TagScanner (Tag Scanner)",
|
||||||
"description": "TagScanner is a powerful tool for organizing and managing your music collection",
|
"description": "TagScanner is a powerful tool for organizing and managing your music collection.",
|
||||||
"link": "https://www.xdlab.ru/en/",
|
"link": "https://www.xdlab.ru/en/",
|
||||||
"winget": "SergeySerkov.TagScanner"
|
"winget": "SergeySerkov.TagScanner"
|
||||||
},
|
},
|
||||||
@@ -1490,7 +1490,7 @@
|
|||||||
"category": "Pro Tools",
|
"category": "Pro Tools",
|
||||||
"choco": "netbird",
|
"choco": "netbird",
|
||||||
"content": "NetBird",
|
"content": "NetBird",
|
||||||
"description": "NetBird is a Open Source alternative comparable to TailScale that can be connected to a selfhosted Server.",
|
"description": "NetBird is a open-source alternative comparable to TailScale that can be connected to a selfhosted Server.",
|
||||||
"link": "https://netbird.io/",
|
"link": "https://netbird.io/",
|
||||||
"winget": "netbird",
|
"winget": "netbird",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1895,7 +1895,7 @@
|
|||||||
"category": "Games",
|
"category": "Games",
|
||||||
"choco": "prismlauncher",
|
"choco": "prismlauncher",
|
||||||
"content": "Prism Launcher",
|
"content": "Prism Launcher",
|
||||||
"description": "Prism Launcher is an Open Source Minecraft launcher with the ability to manage multiple instances, accounts and mods.",
|
"description": "Prism Launcher is an open-source Minecraft launcher with the ability to manage multiple instances, accounts and mods.",
|
||||||
"link": "https://prismlauncher.org/",
|
"link": "https://prismlauncher.org/",
|
||||||
"winget": "PrismLauncher.PrismLauncher",
|
"winget": "PrismLauncher.PrismLauncher",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1929,7 +1929,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "orcaslicer",
|
"choco": "orcaslicer",
|
||||||
"content": "OrcaSlicer",
|
"content": "OrcaSlicer",
|
||||||
"description": "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)",
|
"description": "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.).",
|
||||||
"link": "https://github.com/SoftFever/OrcaSlicer",
|
"link": "https://github.com/SoftFever/OrcaSlicer",
|
||||||
"winget": "SoftFever.OrcaSlicer",
|
"winget": "SoftFever.OrcaSlicer",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -1982,7 +1982,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "transmission",
|
"choco": "transmission",
|
||||||
"content": "Transmission",
|
"content": "Transmission",
|
||||||
"description": "Transmission is a cross-platform BitTorrent client that is open source, easy, powerful, and lean.",
|
"description": "Transmission is a cross-platform BitTorrent client that is open-source, easy, powerful, and lean.",
|
||||||
"link": "https://transmissionbt.com/",
|
"link": "https://transmissionbt.com/",
|
||||||
"winget": "Transmission.Transmission",
|
"winget": "Transmission.Transmission",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2008,7 +2008,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "quicklook",
|
"choco": "quicklook",
|
||||||
"content": "Quicklook",
|
"content": "Quicklook",
|
||||||
"description": "Bring macOS \u201cQuick Look\u201d feature to Windows",
|
"description": "Bring macOS \u201cQuick Look\u201d feature to Windows.",
|
||||||
"link": "https://github.com/QL-Win/QuickLook",
|
"link": "https://github.com/QL-Win/QuickLook",
|
||||||
"winget": "QL-Win.QuickLook",
|
"winget": "QL-Win.QuickLook",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2051,7 +2051,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "ripgrep",
|
"choco": "ripgrep",
|
||||||
"content": "Ripgrep",
|
"content": "Ripgrep",
|
||||||
"description": "Fast and powerful commandline search tool",
|
"description": "Fast and powerful commandline search tool.",
|
||||||
"link": "https://github.com/BurntSushi/ripgrep/",
|
"link": "https://github.com/BurntSushi/ripgrep/",
|
||||||
"winget": "BurntSushi.ripgrep.MSVC",
|
"winget": "BurntSushi.ripgrep.MSVC",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2209,7 +2209,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "spacesniffer",
|
"choco": "spacesniffer",
|
||||||
"content": "SpaceSniffer",
|
"content": "SpaceSniffer",
|
||||||
"description": "A tool application that lets you understand how folders and files are structured on your disks",
|
"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/",
|
"link": "http://www.uderzo.it/main_products/space_sniffer/",
|
||||||
"winget": "UderzoSoftware.SpaceSniffer"
|
"winget": "UderzoSoftware.SpaceSniffer"
|
||||||
},
|
},
|
||||||
@@ -2277,7 +2277,7 @@
|
|||||||
"category": "Document",
|
"category": "Document",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "PDFgear",
|
"content": "PDFgear",
|
||||||
"description": "PDFgear is a piece of full-featured PDF management software for Windows, Mac, and mobile, and it's completely free to use.",
|
"description": "PDFgear is a piece of full-featured PDF management software for Windows, macOS, and mobile, and it's completely free to use.",
|
||||||
"link": "https://www.pdfgear.com/",
|
"link": "https://www.pdfgear.com/",
|
||||||
"winget": "PDFgear.PDFgear"
|
"winget": "PDFgear.PDFgear"
|
||||||
},
|
},
|
||||||
@@ -2312,7 +2312,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "synctrayzor",
|
"choco": "synctrayzor",
|
||||||
"content": "SyncTrayzor",
|
"content": "SyncTrayzor",
|
||||||
"description": "Windows tray utility / filesystem watcher / launcher for Syncthing",
|
"description": "Windows tray utility / filesystem watcher / launcher for Syncthing.",
|
||||||
"link": "https://github.com/GermanCoding/SyncTrayzor",
|
"link": "https://github.com/GermanCoding/SyncTrayzor",
|
||||||
"winget": "GermanCoding.SyncTrayzor",
|
"winget": "GermanCoding.SyncTrayzor",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2329,7 +2329,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "tabby",
|
"choco": "tabby",
|
||||||
"content": "Tabby.sh",
|
"content": "Tabby.sh",
|
||||||
"description": "Tabby is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux",
|
"description": "Tabby is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux.",
|
||||||
"link": "https://tabby.sh/",
|
"link": "https://tabby.sh/",
|
||||||
"winget": "Eugeny.Tabby",
|
"winget": "Eugeny.Tabby",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2389,7 +2389,7 @@
|
|||||||
"category": "Communications",
|
"category": "Communications",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Unigram",
|
"content": "Unigram",
|
||||||
"description": "Unigram - Telegram for Windows",
|
"description": "Unigram - Telegram for Windows.",
|
||||||
"link": "https://unigramdev.github.io/",
|
"link": "https://unigramdev.github.io/",
|
||||||
"winget": "Telegram.Unigram",
|
"winget": "Telegram.Unigram",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2416,7 +2416,7 @@
|
|||||||
"category": "Development",
|
"category": "Development",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Code With Mu (Mu Editor)",
|
"content": "Code With Mu (Mu Editor)",
|
||||||
"description": "Mu is a Python code editor for beginner programmers",
|
"description": "Mu is a Python code editor for beginner programmers.",
|
||||||
"link": "https://codewith.mu/",
|
"link": "https://codewith.mu/",
|
||||||
"winget": "Mu.Mu",
|
"winget": "Mu.Mu",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2425,7 +2425,7 @@
|
|||||||
"category": "Browsers",
|
"category": "Browsers",
|
||||||
"choco": "thorium",
|
"choco": "thorium",
|
||||||
"content": "Thorium Browser AVX2",
|
"content": "Thorium Browser AVX2",
|
||||||
"description": "Browser built for speed over vanilla chromium. It is built with AVX2 optimizations and is the fastest browser on the market.",
|
"description": "Browser built for speed over vanilla Chromium. It is built with AVX2 optimizations and is the fastest browser on the market.",
|
||||||
"link": "https://thorium.rocks/",
|
"link": "https://thorium.rocks/",
|
||||||
"winget": "Alex313031.Thorium.AVX2",
|
"winget": "Alex313031.Thorium.AVX2",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2485,7 +2485,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "translucenttb",
|
"choco": "translucenttb",
|
||||||
"content": "TranslucentTB",
|
"content": "TranslucentTB",
|
||||||
"description": "TranslucentTB is a tool that allows you to customize the transparency of the Windows taskbar.",
|
"description": "TranslucentTB is a tool that allows you to customize the transparency of the Windows Taskbar.",
|
||||||
"link": "https://github.com/TranslucentTB/TranslucentTB",
|
"link": "https://github.com/TranslucentTB/TranslucentTB",
|
||||||
"winget": "9PF4KZ2VN4W9",
|
"winget": "9PF4KZ2VN4W9",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2673,7 +2673,7 @@
|
|||||||
"category": "Development",
|
"category": "Development",
|
||||||
"choco": "wezterm",
|
"choco": "wezterm",
|
||||||
"content": "Wezterm",
|
"content": "Wezterm",
|
||||||
"description": "WezTerm is a powerful cross-platform terminal emulator and multiplexer",
|
"description": "WezTerm is a powerful cross-platform terminal emulator and multiplexer.",
|
||||||
"link": "https://wezfurlong.org/wezterm/index.html",
|
"link": "https://wezfurlong.org/wezterm/index.html",
|
||||||
"winget": "wez.wezterm",
|
"winget": "wez.wezterm",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2768,7 +2768,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "TeraCopy",
|
"choco": "TeraCopy",
|
||||||
"content": "TeraCopy",
|
"content": "TeraCopy",
|
||||||
"description": "Copy your files faster and more securely",
|
"description": "Copy your files faster and more securely.",
|
||||||
"link": "https://codesector.com/teracopy",
|
"link": "https://codesector.com/teracopy",
|
||||||
"winget": "CodeSector.TeraCopy"
|
"winget": "CodeSector.TeraCopy"
|
||||||
},
|
},
|
||||||
@@ -2792,7 +2792,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "xdm",
|
"choco": "xdm",
|
||||||
"content": "Xtreme Download Manager",
|
"content": "Xtreme Download Manager",
|
||||||
"description": "Xtreme Download Manager is an advanced download manager with support for various protocols and browsers.*Browser integration deprecated by google store. No official release.*",
|
"description": "Xtreme Download Manager is an advanced download manager with support for various protocols and browsers. *Browser integration deprecated by google store. No official release.*",
|
||||||
"link": "https://xtremedownloadmanager.com/",
|
"link": "https://xtremedownloadmanager.com/",
|
||||||
"winget": "subhra74.XtremeDownloadManager",
|
"winget": "subhra74.XtremeDownloadManager",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2896,7 +2896,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "ZoomIt",
|
"content": "ZoomIt",
|
||||||
"description": "A screen zoom, annotation, and recording tool for technical presentations and demos",
|
"description": "A screen zoom, annotation, and recording tool for technical presentations and demos.",
|
||||||
"link": "https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit",
|
"link": "https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit",
|
||||||
"winget": "Microsoft.Sysinternals.ZoomIt"
|
"winget": "Microsoft.Sysinternals.ZoomIt"
|
||||||
},
|
},
|
||||||
@@ -2931,7 +2931,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "syncthingtray",
|
"choco": "syncthingtray",
|
||||||
"content": "Syncthingtray",
|
"content": "Syncthingtray",
|
||||||
"description": "Might be the alternative for Synctrayzor. Windows tray utility / filesystem watcher / launcher for Syncthing",
|
"description": "Might be the alternative for Synctrayzor. Windows tray utility / filesystem watcher / launcher for Syncthing.",
|
||||||
"link": "https://github.com/Martchus/syncthingtray",
|
"link": "https://github.com/Martchus/syncthingtray",
|
||||||
"winget": "Martchus.syncthingtray",
|
"winget": "Martchus.syncthingtray",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2958,7 +2958,7 @@
|
|||||||
"category": "Development",
|
"category": "Development",
|
||||||
"choco": "temurin",
|
"choco": "temurin",
|
||||||
"content": "Eclipse Temurin",
|
"content": "Eclipse Temurin",
|
||||||
"description": "Eclipse Temurin is the open source Java SE build based upon OpenJDK.",
|
"description": "Eclipse Temurin is the open-source Java SE build based upon OpenJDK.",
|
||||||
"link": "https://adoptium.net/temurin/",
|
"link": "https://adoptium.net/temurin/",
|
||||||
"winget": "EclipseAdoptium.Temurin.21.JDK",
|
"winget": "EclipseAdoptium.Temurin.21.JDK",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -2985,7 +2985,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "TightVNC",
|
"choco": "TightVNC",
|
||||||
"content": "TightVNC",
|
"content": "TightVNC",
|
||||||
"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",
|
"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/",
|
"link": "https://www.tightvnc.com/",
|
||||||
"winget": "GlavSoft.TightVNC",
|
"winget": "GlavSoft.TightVNC",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3019,7 +3019,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "auto-dark-mode",
|
"choco": "auto-dark-mode",
|
||||||
"content": "Windows Auto Dark Mode",
|
"content": "Windows Auto Dark Mode",
|
||||||
"description": "Automatically switches between the dark and light theme of Windows 10 and Windows 11",
|
"description": "Automatically switches between the dark and light theme of Windows 10 and Windows 11.",
|
||||||
"link": "https://github.com/AutoDarkMode/Windows-Auto-Night-Mode",
|
"link": "https://github.com/AutoDarkMode/Windows-Auto-Night-Mode",
|
||||||
"winget": "Armin2208.WindowsAutoNightMode",
|
"winget": "Armin2208.WindowsAutoNightMode",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3037,7 +3037,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "magic-wormhole",
|
"choco": "magic-wormhole",
|
||||||
"content": "Magic Wormhole",
|
"content": "Magic Wormhole",
|
||||||
"description": "get things from one computer to another, safely",
|
"description": "get things from one computer to another, safely.",
|
||||||
"link": "https://github.com/magic-wormhole/magic-wormhole",
|
"link": "https://github.com/magic-wormhole/magic-wormhole",
|
||||||
"winget": "magic-wormhole.magic-wormhole",
|
"winget": "magic-wormhole.magic-wormhole",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3055,7 +3055,7 @@
|
|||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "qgis",
|
"choco": "qgis",
|
||||||
"content": "QGIS",
|
"content": "QGIS",
|
||||||
"description": "QGIS (Quantum GIS) is an open-source Geographic Information System (GIS) software that enables users to create, edit, visualize, analyze, and publish geospatial information on Windows, Mac, and Linux platforms.",
|
"description": "QGIS (Quantum GIS) is an open-source Geographic Information System (GIS) software that enables users to create, edit, visualize, analyze, and publish geospatial information on Windows, macOS, and Linux platforms.",
|
||||||
"link": "https://qgis.org/en/site/",
|
"link": "https://qgis.org/en/site/",
|
||||||
"winget": "OSGeo.QGIS",
|
"winget": "OSGeo.QGIS",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3073,7 +3073,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "GlazeWM",
|
"content": "GlazeWM",
|
||||||
"description": "GlazeWM is a tiling window manager for Windows inspired by i3 and Polybar",
|
"description": "GlazeWM is a tiling window manager for Windows inspired by i3 and Polybar.",
|
||||||
"link": "https://github.com/glzr-io/glazewm",
|
"link": "https://github.com/glzr-io/glazewm",
|
||||||
"winget": "glzr-io.glazewm",
|
"winget": "glzr-io.glazewm",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3091,7 +3091,7 @@
|
|||||||
"category": "Development",
|
"category": "Development",
|
||||||
"choco": "fnm",
|
"choco": "fnm",
|
||||||
"content": "Fast Node Manager",
|
"content": "Fast Node Manager",
|
||||||
"description": "Fast Node Manager (fnm) allows you to switch your Node version by using the Terminal",
|
"description": "Fast Node Manager (fnm) allows you to switch your Node version by using the terminal.",
|
||||||
"link": "https://github.com/Schniz/fnm",
|
"link": "https://github.com/Schniz/fnm",
|
||||||
"winget": "Schniz.fnm",
|
"winget": "Schniz.fnm",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3100,7 +3100,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "windhawk",
|
"choco": "windhawk",
|
||||||
"content": "Windhawk",
|
"content": "Windhawk",
|
||||||
"description": "The customization marketplace for Windows programs",
|
"description": "The customization marketplace for Windows programs.",
|
||||||
"link": "https://windhawk.net",
|
"link": "https://windhawk.net",
|
||||||
"winget": "RamenSoftware.Windhawk"
|
"winget": "RamenSoftware.Windhawk"
|
||||||
},
|
},
|
||||||
@@ -3108,7 +3108,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "ForceAutoHDR",
|
"content": "ForceAutoHDR",
|
||||||
"description": "ForceAutoHDR simplifies the process of adding games to the AutoHDR list in the Windows Registry",
|
"description": "ForceAutoHDR simplifies the process of adding games to the AutoHDR list in the Windows Registry.",
|
||||||
"link": "https://github.com/7gxycn08/ForceAutoHDR",
|
"link": "https://github.com/7gxycn08/ForceAutoHDR",
|
||||||
"winget": "ForceAutoHDR.7gxycn08",
|
"winget": "ForceAutoHDR.7gxycn08",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3117,7 +3117,7 @@
|
|||||||
"category": "Utilities",
|
"category": "Utilities",
|
||||||
"choco": "joytokey",
|
"choco": "joytokey",
|
||||||
"content": "JoyToKey",
|
"content": "JoyToKey",
|
||||||
"description": "enables PC game controllers to emulate the keyboard and mouse input",
|
"description": "Enables PC game controllers to emulate the keyboard and mouse input.",
|
||||||
"link": "https://joytokey.net/en/",
|
"link": "https://joytokey.net/en/",
|
||||||
"winget": "JTKsoftware.JoyToKey"
|
"winget": "JTKsoftware.JoyToKey"
|
||||||
},
|
},
|
||||||
@@ -3159,7 +3159,7 @@
|
|||||||
"category": "Browsers",
|
"category": "Browsers",
|
||||||
"choco": "paleMoon",
|
"choco": "paleMoon",
|
||||||
"content": "PaleMoon",
|
"content": "PaleMoon",
|
||||||
"description": "Pale Moon is an Open Source, Goanna-based web browser available for Microsoft Windows and Linux (with other operating systems in development), focusing on efficiency and ease of use.",
|
"description": "Pale Moon is an open-source, Goanna-based web browser available for Microsoft Windows and Linux (with other operating systems in development), focusing on efficiency and ease of use.",
|
||||||
"link": "https://www.palemoon.org/download.shtml",
|
"link": "https://www.palemoon.org/download.shtml",
|
||||||
"winget": "MoonchildProductions.PaleMoon",
|
"winget": "MoonchildProductions.PaleMoon",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3168,7 +3168,7 @@
|
|||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Shotcut",
|
"content": "Shotcut",
|
||||||
"description": "Shotcut is a free, open source, cross-platform video editor.",
|
"description": "Shotcut is a free, open-source, cross-platform video editor.",
|
||||||
"link": "https://shotcut.org/",
|
"link": "https://shotcut.org/",
|
||||||
"winget": "Meltytech.Shotcut",
|
"winget": "Meltytech.Shotcut",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3195,7 +3195,7 @@
|
|||||||
"category": "Development",
|
"category": "Development",
|
||||||
"choco": "aegisub",
|
"choco": "aegisub",
|
||||||
"content": "Aegisub",
|
"content": "Aegisub",
|
||||||
"description": "Aegisub is a free, cross-platform open source tool for creating and modifying subtitles. Aegisub makes it quick and easy to time subtitles to audio, and features many powerful tools for styling them, including a built-in real-time video preview.",
|
"description": "Aegisub is a free, cross-platform open-source tool for creating and modifying subtitles. Aegisub makes it quick and easy to time subtitles to audio, and features many powerful tools for styling them, including a built-in real-time video preview.",
|
||||||
"link": "https://github.com/Aegisub/Aegisub",
|
"link": "https://github.com/Aegisub/Aegisub",
|
||||||
"winget": "Aegisub.Aegisub",
|
"winget": "Aegisub.Aegisub",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3204,7 +3204,7 @@
|
|||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Subtitle Edit",
|
"content": "Subtitle Edit",
|
||||||
"description": "Subtitle Edit is a free and open source editor for video subtitles.",
|
"description": "Subtitle Edit is a free and open-source editor for video subtitles.",
|
||||||
"link": "https://github.com/SubtitleEdit/subtitleedit",
|
"link": "https://github.com/SubtitleEdit/subtitleedit",
|
||||||
"winget": "Nikse.SubtitleEdit",
|
"winget": "Nikse.SubtitleEdit",
|
||||||
"foss": true
|
"foss": true
|
||||||
@@ -3221,7 +3221,7 @@
|
|||||||
"category": "Browsers",
|
"category": "Browsers",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
"content": "Zen Browser",
|
"content": "Zen Browser",
|
||||||
"description": "The modern, privacy-focused, performance-driven browser built on Firefox",
|
"description": "The modern, privacy-focused, performance-driven browser built on Firefox.",
|
||||||
"link": "https://zen-browser.app/",
|
"link": "https://zen-browser.app/",
|
||||||
"winget": "Zen-Team.Zen-Browser",
|
"winget": "Zen-Team.Zen-Browser",
|
||||||
"foss": true
|
"foss": true
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
},
|
},
|
||||||
"WPFFeatureslegacymedia": {
|
"WPFFeatureslegacymedia": {
|
||||||
"Content": "Legacy Media (WMP, DirectPlay)",
|
"Content": "Legacy Media (WMP, DirectPlay)",
|
||||||
"Description": "Enables legacy programs from previous versions of windows",
|
"Description": "Enables legacy programs from previous versions of Windows.",
|
||||||
"category": "Features",
|
"category": "Features",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"feature": [
|
"feature": [
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"WPFTweaksActivity": {
|
"WPFTweaksActivity": {
|
||||||
"Content": "Disable Activity History",
|
"Content": "Disable Activity History",
|
||||||
"Description": "This erases recent docs, clipboard, and run history.",
|
"Description": "Erases recent docs, clipboard, and run history.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksHiber": {
|
"WPFTweaksHiber": {
|
||||||
"Content": "Disable Hibernation",
|
"Content": "Disable Hibernation",
|
||||||
"Description": "Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used",
|
"Description": "Hibernation is really meant for laptops as it saves what's in memory before turning the PC off. It really should never be used.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksWidget": {
|
"WPFTweaksWidget": {
|
||||||
"Content": "Remove Widgets",
|
"Content": "Remove Widgets",
|
||||||
"Description": "Removes the annoying widgets in the bottom left of the taskbar",
|
"Description": "Removes the annoying widgets in the bottom left of the Taskbar.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksRevertStartMenu": {
|
"WPFTweaksRevertStartMenu": {
|
||||||
"Content": "Revert the new start menu",
|
"Content": "Revert the new start menu",
|
||||||
"Description": "Uses vivetool to revert the the original start menu from 24h2",
|
"Description": "Uses vivetool to revert to the original start menu from 24H2.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksLocation": {
|
"WPFTweaksLocation": {
|
||||||
"Content": "Disable Location Tracking",
|
"Content": "Disable Location Tracking",
|
||||||
"Description": "Disables Location Tracking...DUH!",
|
"Description": "Disables Location Tracking.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -1125,7 +1125,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksBraveDebloat": {
|
"WPFTweaksBraveDebloat": {
|
||||||
"Content": "Brave Debloat",
|
"Content": "Brave Debloat",
|
||||||
"Description": "Disables various annoyances like Brave Rewards,Leo AI,Crypto Wallet and VPN",
|
"Description": "Disables various annoyances like Brave Rewards, Leo AI, Crypto Wallet and VPN.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -1290,7 +1290,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksConsumerFeatures": {
|
"WPFTweaksConsumerFeatures": {
|
||||||
"Content": "Disable ConsumerFeatures",
|
"Content": "Disable ConsumerFeatures",
|
||||||
"Description": "Windows will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
|
"Description": "Windows will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link).",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -1306,7 +1306,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksTelemetry": {
|
"WPFTweaksTelemetry": {
|
||||||
"Content": "Disable Telemetry",
|
"Content": "Disable Telemetry",
|
||||||
"Description": "Disables Microsoft Telemetry...Duh",
|
"Description": "Disables Microsoft Telemetry.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -1428,7 +1428,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksRemoveEdge": {
|
"WPFTweaksRemoveEdge": {
|
||||||
"Content": "Remove Microsoft Edge",
|
"Content": "Remove Microsoft Edge",
|
||||||
"Description": "Unblocks Microsoft Edge uninstaller restrictions than uses that uninstaller to remove Microsoft Edge",
|
"Description": "Unblocks Microsoft Edge uninstaller restrictions then uses that uninstaller to remove Microsoft Edge.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -1460,7 +1460,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksRemoveOneDrive": {
|
"WPFTweaksRemoveOneDrive": {
|
||||||
"Content": "Remove OneDrive",
|
"Content": "Remove OneDrive",
|
||||||
"Description": "Denys permission to remove onedrive user files than uses its own uninstaller to remove it than brings back permissions",
|
"Description": "Denies permission to remove OneDrive user files, then uses its own uninstaller to remove it and restores the original permission afterward.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -1497,7 +1497,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksRemoveHome": {
|
"WPFTweaksRemoveHome": {
|
||||||
"Content": "Remove Home from Explorer",
|
"Content": "Remove Home from Explorer",
|
||||||
"Description": "Removes the Home from Explorer and sets This PC as default",
|
"Description": "Removes the Home from Explorer and sets This PC as default.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -1516,7 +1516,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksRemoveGallery": {
|
"WPFTweaksRemoveGallery": {
|
||||||
"Content": "Remove Gallery from explorer",
|
"Content": "Remove Gallery from explorer",
|
||||||
"Description": "Removes the Gallery from Explorer and sets This PC as default",
|
"Description": "Removes the Gallery from Explorer and sets This PC as default.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -1646,7 +1646,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksDeBloat": {
|
"WPFTweaksDeBloat": {
|
||||||
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
|
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
|
||||||
"Description": "USE WITH CAUTION!!! This will remove ALL Microsoft store apps.",
|
"Description": "USE WITH CAUTION!!! This will remove ALL Microsoft Store apps.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"appx": [
|
"appx": [
|
||||||
@@ -1735,7 +1735,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksRestorePoint": {
|
"WPFTweaksRestorePoint": {
|
||||||
"Content": "Create Restore Point",
|
"Content": "Create Restore Point",
|
||||||
"Description": "Creates a restore point at runtime in case a revert is needed from WinUtil modifications",
|
"Description": "Creates a restore point at runtime in case a revert is needed from WinUtil modifications.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Checked": "False",
|
"Checked": "False",
|
||||||
@@ -1762,7 +1762,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksEndTaskOnTaskbar": {
|
"WPFTweaksEndTaskOnTaskbar": {
|
||||||
"Content": "Enable End Task With Right Click",
|
"Content": "Enable End Task With Right Click",
|
||||||
"Description": "Enables option to end task when right clicking a program in the taskbar",
|
"Description": "Enables option to end task when right clicking a program in the taskbar.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -1778,7 +1778,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksPowershell7Tele": {
|
"WPFTweaksPowershell7Tele": {
|
||||||
"Content": "Disable Powershell 7 Telemetry",
|
"Content": "Disable Powershell 7 Telemetry",
|
||||||
"Description": "This will create an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell Powershell 7 to not send Telemetry Data.",
|
"Description": "Creates an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell PowerShell 7 to not send Telemetry Data.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -1891,7 +1891,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksWPBT": {
|
"WPFTweaksWPBT": {
|
||||||
"Content": "Disable Windows Platform Binary Table (WPBT)",
|
"Content": "Disable Windows Platform Binary Table (WPBT)",
|
||||||
"Description": "If enabled then allows your computer vendor to execute a program each time it boots. It enables computer vendors to force install anti-theft software, software drivers, or a software program conveniently. This could also be a security risk.",
|
"Description": "If enabled, WPBT allows your computer vendor to execute programs at boot time, such as anti-theft software, software drivers, as well as force install software without user consent. Poses potential security risk.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -1949,7 +1949,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksDisableNotifications": {
|
"WPFTweaksDisableNotifications": {
|
||||||
"Content": "Disable Notification Tray/Calendar",
|
"Content": "Disable Notification Tray/Calendar",
|
||||||
"Description": "Disables all Notifications INCLUDING Calendar",
|
"Description": "Disables all Notifications INCLUDING Calendar.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -1972,7 +1972,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksBlockAdobeNet": {
|
"WPFTweaksBlockAdobeNet": {
|
||||||
"Content": "Adobe Network Block",
|
"Content": "Adobe Network Block",
|
||||||
"Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
|
"Description": "Reduces user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -2001,8 +2001,8 @@
|
|||||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/blockadobenet"
|
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/blockadobenet"
|
||||||
},
|
},
|
||||||
"WPFTweaksRightClickMenu": {
|
"WPFTweaksRightClickMenu": {
|
||||||
"Content": "Set Classic Right-Click Menu ",
|
"Content": "Set Classic Right-Click Menu",
|
||||||
"Description": "Great Windows 11 tweak to bring back good context menus when right clicking things in explorer.",
|
"Description": "Restores the classic context menu when right-clicking in File Explorer, replacing the simplified Windows 11 version.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -2037,7 +2037,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksDeleteTempFiles": {
|
"WPFTweaksDeleteTempFiles": {
|
||||||
"Content": "Delete Temporary Files",
|
"Content": "Delete Temporary Files",
|
||||||
"Description": "Erases TEMP Folders",
|
"Description": "Erases TEMP Folders.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
@@ -2050,7 +2050,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksIPv46": {
|
"WPFTweaksIPv46": {
|
||||||
"Content": "Prefer IPv4 over IPv6",
|
"Content": "Prefer IPv4 over IPv6",
|
||||||
"Description": "To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.",
|
"Description": "Setting the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -2066,7 +2066,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksTeredo": {
|
"WPFTweaksTeredo": {
|
||||||
"Content": "Disable Teredo",
|
"Content": "Disable Teredo",
|
||||||
"Description": "Teredo network tunneling is a ipv6 feature that can cause additional latency, but may cause problems with some games",
|
"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",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -2110,7 +2110,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksDisableBGapps": {
|
"WPFTweaksDisableBGapps": {
|
||||||
"Content": "Disable Background Apps",
|
"Content": "Disable Background Apps",
|
||||||
"Description": "Disables all Microsoft Store apps from running in the background, which has to be done individually since Win11",
|
"Description": "Disables all Microsoft Store apps from running in the background, which has to be done individually since Windows 11.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -2126,7 +2126,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksDisableFSO": {
|
"WPFTweaksDisableFSO": {
|
||||||
"Content": "Disable Fullscreen Optimizations",
|
"Content": "Disable Fullscreen Optimizations",
|
||||||
"Description": "Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen",
|
"Description": "Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
@@ -2184,7 +2184,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleBingSearch": {
|
"WPFToggleBingSearch": {
|
||||||
"Content": "Bing Search in Start Menu",
|
"Content": "Bing Search in Start Menu",
|
||||||
"Description": "If enable then includes web search results from Bing in your Start Menu search.",
|
"Description": "If enabled, Bing web search results will be included in your Start Menu search.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2200,8 +2200,26 @@
|
|||||||
],
|
],
|
||||||
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/bingsearch"
|
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/bingsearch"
|
||||||
},
|
},
|
||||||
|
"WPFToggleStandbyFix": {
|
||||||
|
"Content": "Modern Standby fix",
|
||||||
|
"Description": "Disable network connection during S0 sleep. If network connectivity is turned on during S0 sleep it could cause overheating on modern laptops",
|
||||||
|
"category": "Customize Preferences",
|
||||||
|
"panel": "2",
|
||||||
|
"Type": "Toggle",
|
||||||
|
"registry": [
|
||||||
|
{
|
||||||
|
"Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\f15576e8-98b7-4186-b944-eafa664402d9",
|
||||||
|
"Name": "ACSettingIndex",
|
||||||
|
"Value": "0",
|
||||||
|
"Type": "DWord",
|
||||||
|
"OriginalValue": "<RemoveEntry>",
|
||||||
|
"DefaultState": "true"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/standbyfix"
|
||||||
|
},
|
||||||
"WPFToggleNumLock": {
|
"WPFToggleNumLock": {
|
||||||
"Content": "NumLock on Startup",
|
"Content": "Num Lock on Startup",
|
||||||
"Description": "Toggle the Num Lock key state when your computer starts.",
|
"Description": "Toggle the Num Lock key state when your computer starts.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
@@ -2246,7 +2264,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleStartMenuRecommendations": {
|
"WPFToggleStartMenuRecommendations": {
|
||||||
"Content": "Recommendations in Start Menu",
|
"Content": "Recommendations in Start Menu",
|
||||||
"Description": "If disabled then you will not see recommendations in the Start Menu. WARNING: This will also disable Windows Spotlight on your Lock Screen as a side effect.",
|
"Description": "If disabled, then you will not see recommendations in the Start Menu. WARNING: This will also disable Windows Spotlight on your Lock Screen as a side effect.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2290,7 +2308,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleHideSettingsHome": {
|
"WPFToggleHideSettingsHome": {
|
||||||
"Content": "Remove Settings Home Page",
|
"Content": "Remove Settings Home Page",
|
||||||
"Description": "Removes the Home page in the Windows Settings app.",
|
"Description": "Removes the Home Page in the Windows Settings app.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2308,7 +2326,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleMouseAcceleration": {
|
"WPFToggleMouseAcceleration": {
|
||||||
"Content": "Mouse Acceleration",
|
"Content": "Mouse Acceleration",
|
||||||
"Description": "If Enabled then Cursor movement is affected by the speed of your physical mouse movements.",
|
"Description": "If enabled, the Cursor movement is affected by the speed of your physical mouse movements.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2342,7 +2360,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleStickyKeys": {
|
"WPFToggleStickyKeys": {
|
||||||
"Content": "Sticky Keys",
|
"Content": "Sticky Keys",
|
||||||
"Description": "If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.",
|
"Description": "If enabled, Sticky Keys is activated. Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2360,7 +2378,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleNewOutlook": {
|
"WPFToggleNewOutlook": {
|
||||||
"Content": "New Outlook",
|
"Content": "New Outlook",
|
||||||
"Description": "If disabled it removes the toggle for new Outlook, disables the new Outlook migration and makes sure the Outlook Application actually uses the old Outlook.",
|
"Description": "If disabled, it removes the new Outlook toggle, disables the new Outlook migration, and ensures the classic Outlook application is used.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2420,7 +2438,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleHiddenFiles": {
|
"WPFToggleHiddenFiles": {
|
||||||
"Content": "Show Hidden Files",
|
"Content": "Show Hidden Files",
|
||||||
"Description": "If Enabled then Hidden Files will be shown.",
|
"Description": "If enabled, Hidden Files will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2448,7 +2466,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleShowExt": {
|
"WPFToggleShowExt": {
|
||||||
"Content": "Show File Extensions",
|
"Content": "Show File Extensions",
|
||||||
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
|
"Description": "If enabled, File extensions (e.g., .txt, .jpg) are visible.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2476,7 +2494,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleTaskbarSearch": {
|
"WPFToggleTaskbarSearch": {
|
||||||
"Content": "Search Button in Taskbar",
|
"Content": "Search Button in Taskbar",
|
||||||
"Description": "If Enabled Search Button will be on the taskbar.",
|
"Description": "If enabled, Search Button will be on the Taskbar.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2494,7 +2512,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleTaskView": {
|
"WPFToggleTaskView": {
|
||||||
"Content": "Task View Button in Taskbar",
|
"Content": "Task View Button in Taskbar",
|
||||||
"Description": "If Enabled then Task View Button in Taskbar will be shown.",
|
"Description": "If enabled, Task View Button in Taskbar will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2512,7 +2530,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleTaskbarAlignment": {
|
"WPFToggleTaskbarAlignment": {
|
||||||
"Content": "Center Taskbar Items",
|
"Content": "Center Taskbar Items",
|
||||||
"Description": "[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
|
"Description": "[Windows 11] If enabled, the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2540,7 +2558,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleDetailedBSoD": {
|
"WPFToggleDetailedBSoD": {
|
||||||
"Content": "Detailed BSoD",
|
"Content": "Detailed BSoD",
|
||||||
"Description": "If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.",
|
"Description": "If enabled, you will see a detailed Blue Screen of Death (BSOD) with more information.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2566,7 +2584,7 @@
|
|||||||
},
|
},
|
||||||
"WPFToggleS3Sleep": {
|
"WPFToggleS3Sleep": {
|
||||||
"Content": "S3 Sleep",
|
"Content": "S3 Sleep",
|
||||||
"Description": "Toggles between Modern Standby and S3 sleep.",
|
"Description": "Toggles between Modern Standby and S3 Sleep.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
@@ -2615,7 +2633,7 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksDisableExplorerAutoDiscovery": {
|
"WPFTweaksDisableExplorerAutoDiscovery": {
|
||||||
"Content": "Disable Explorer Automatic Folder Discovery",
|
"Content": "Disable Explorer Automatic Folder Discovery",
|
||||||
"Description": "Windows Explorer automatically tries to guess the type of the folder based on its contents, slowing down the browsing experience. WARNING! Will disable file explorer grouping",
|
"Description": "Windows Explorer automatically tries to guess the type of the folder based on its contents, slowing down the browsing experience. WARNING! Will disable File Explorer grouping.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/feature.json",linenos=inline,linenostart=27}
|
```json {filename="config/feature.json",linenos=inline,linenostart=27}
|
||||||
"WPFFeatureslegacymedia": {
|
"WPFFeatureslegacymedia": {
|
||||||
"Content": "Legacy Media (WMP, DirectPlay)",
|
"Content": "Legacy Media (WMP, DirectPlay)",
|
||||||
"Description": "Enables legacy programs from previous versions of windows",
|
"Description": "Enables legacy programs from previous versions of Windows.",
|
||||||
"category": "Features",
|
"category": "Features",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"feature": [
|
"feature": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2185}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2185}
|
||||||
"WPFToggleBingSearch": {
|
"WPFToggleBingSearch": {
|
||||||
"Content": "Bing Search in Start Menu",
|
"Content": "Bing Search in Start Menu",
|
||||||
"Description": "If enable then includes web search results from Bing in your Start Menu search.",
|
"Description": "If enabled, Bing web search results will be included in your Start Menu search.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Detailed BSoD"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2541}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2559}
|
||||||
"WPFToggleDetailedBSoD": {
|
"WPFToggleDetailedBSoD": {
|
||||||
"Content": "Detailed BSoD",
|
"Content": "Detailed BSoD",
|
||||||
"Description": "If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.",
|
"Description": "If enabled, you will see a detailed Blue Screen of Death (BSOD) with more information.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ title: "Cross-Device Resume"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2671}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2689}
|
||||||
"WPFToggleDisableCrossDeviceResume": {
|
"WPFToggleDisableCrossDeviceResume": {
|
||||||
"Content": "Cross-Device Resume",
|
"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.",
|
"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.",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Show Hidden Files"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2421}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2439}
|
||||||
"WPFToggleHiddenFiles": {
|
"WPFToggleHiddenFiles": {
|
||||||
"Content": "Show Hidden Files",
|
"Content": "Show Hidden Files",
|
||||||
"Description": "If Enabled then Hidden Files will be shown.",
|
"Description": "If enabled, Hidden Files will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Remove Settings Home Page"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2291}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2309}
|
||||||
"WPFToggleHideSettingsHome": {
|
"WPFToggleHideSettingsHome": {
|
||||||
"Content": "Remove Settings Home Page",
|
"Content": "Remove Settings Home Page",
|
||||||
"Description": "Removes the Home page in the Windows Settings app.",
|
"Description": "Removes the Home Page in the Windows Settings app.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Mouse Acceleration"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2309}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2327}
|
||||||
"WPFToggleMouseAcceleration": {
|
"WPFToggleMouseAcceleration": {
|
||||||
"Content": "Mouse Acceleration",
|
"Content": "Mouse Acceleration",
|
||||||
"Description": "If Enabled then Cursor movement is affected by the speed of your physical mouse movements.",
|
"Description": "If enabled, the Cursor movement is affected by the speed of your physical mouse movements.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ title: "Disable Multiplane Overlay"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2403}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2421}
|
||||||
"WPFToggleMultiplaneOverlay": {
|
"WPFToggleMultiplaneOverlay": {
|
||||||
"Content": "Disable Multiplane Overlay",
|
"Content": "Disable Multiplane Overlay",
|
||||||
"Description": "Disable the Multiplane Overlay which can sometimes cause issues with Graphics Cards.",
|
"Description": "Disable the Multiplane Overlay which can sometimes cause issues with Graphics Cards.",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "New Outlook"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2361}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2379}
|
||||||
"WPFToggleNewOutlook": {
|
"WPFToggleNewOutlook": {
|
||||||
"Content": "New Outlook",
|
"Content": "New Outlook",
|
||||||
"Description": "If disabled it removes the toggle for new Outlook, disables the new Outlook migration and makes sure the Outlook Application actually uses the old Outlook.",
|
"Description": "If disabled, it removes the new Outlook toggle, disables the new Outlook migration, and ensures the classic Outlook application is used.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
title: "NumLock on Startup"
|
title: "Num Lock on Startup"
|
||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2203}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2221}
|
||||||
"WPFToggleNumLock": {
|
"WPFToggleNumLock": {
|
||||||
"Content": "NumLock on Startup",
|
"Content": "Num Lock on Startup",
|
||||||
"Description": "Toggle the Num Lock key state when your computer starts.",
|
"Description": "Toggle the Num Lock key state when your computer starts.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "S3 Sleep"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2567}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2585}
|
||||||
"WPFToggleS3Sleep": {
|
"WPFToggleS3Sleep": {
|
||||||
"Content": "S3 Sleep",
|
"Content": "S3 Sleep",
|
||||||
"Description": "Toggles between Modern Standby and S3 sleep.",
|
"Description": "Toggles between Modern Standby and S3 Sleep.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Show File Extensions"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2449}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2467}
|
||||||
"WPFToggleShowExt": {
|
"WPFToggleShowExt": {
|
||||||
"Content": "Show File Extensions",
|
"Content": "Show File Extensions",
|
||||||
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
|
"Description": "If enabled, File extensions (e.g., .txt, .jpg) are visible.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
29
docs/content/dev/tweaks/Customize-Preferences/StandbyFix.md
Normal file
29
docs/content/dev/tweaks/Customize-Preferences/StandbyFix.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: "Modern Standby fix"
|
||||||
|
description: ""
|
||||||
|
---
|
||||||
|
|
||||||
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2203}
|
||||||
|
"WPFToggleStandbyFix": {
|
||||||
|
"Content": "Modern Standby fix",
|
||||||
|
"Description": "Disable network connection during S0 sleep. If network connectivity is turned on during S0 sleep it could cause overheating on modern laptops",
|
||||||
|
"category": "Customize Preferences",
|
||||||
|
"panel": "2",
|
||||||
|
"Type": "Toggle",
|
||||||
|
"registry": [
|
||||||
|
{
|
||||||
|
"Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\f15576e8-98b7-4186-b944-eafa664402d9",
|
||||||
|
"Name": "ACSettingIndex",
|
||||||
|
"Value": "0",
|
||||||
|
"Type": "DWord",
|
||||||
|
"OriginalValue": "<RemoveEntry>",
|
||||||
|
"DefaultState": "true"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
```
|
||||||
|
|
||||||
|
## Registry Changes
|
||||||
|
|
||||||
|
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
|
||||||
|
|
||||||
|
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
|
||||||
@@ -3,10 +3,10 @@ title: "Recommendations in Start Menu"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2247}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2265}
|
||||||
"WPFToggleStartMenuRecommendations": {
|
"WPFToggleStartMenuRecommendations": {
|
||||||
"Content": "Recommendations in Start Menu",
|
"Content": "Recommendations in Start Menu",
|
||||||
"Description": "If disabled then you will not see recommendations in the Start Menu. WARNING: This will also disable Windows Spotlight on your Lock Screen as a side effect.",
|
"Description": "If disabled, then you will not see recommendations in the Start Menu. WARNING: This will also disable Windows Spotlight on your Lock Screen as a side effect.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Sticky Keys"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2343}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2361}
|
||||||
"WPFToggleStickyKeys": {
|
"WPFToggleStickyKeys": {
|
||||||
"Content": "Sticky Keys",
|
"Content": "Sticky Keys",
|
||||||
"Description": "If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.",
|
"Description": "If enabled, Sticky Keys is activated. Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Task View Button in Taskbar"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2495}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2513}
|
||||||
"WPFToggleTaskView": {
|
"WPFToggleTaskView": {
|
||||||
"Content": "Task View Button in Taskbar",
|
"Content": "Task View Button in Taskbar",
|
||||||
"Description": "If Enabled then Task View Button in Taskbar will be shown.",
|
"Description": "If enabled, Task View Button in Taskbar will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Center Taskbar Items"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2513}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2531}
|
||||||
"WPFToggleTaskbarAlignment": {
|
"WPFToggleTaskbarAlignment": {
|
||||||
"Content": "Center Taskbar Items",
|
"Content": "Center Taskbar Items",
|
||||||
"Description": "[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
|
"Description": "[Windows 11] If enabled, the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Search Button in Taskbar"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2477}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2495}
|
||||||
"WPFToggleTaskbarSearch": {
|
"WPFToggleTaskbarSearch": {
|
||||||
"Content": "Search Button in Taskbar",
|
"Content": "Search Button in Taskbar",
|
||||||
"Description": "If Enabled Search Button will be on the taskbar.",
|
"Description": "If enabled, Search Button will be on the Taskbar.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Type": "Toggle",
|
"Type": "Toggle",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ title: "Verbose Messages During Logon"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2229}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2247}
|
||||||
"WPFToggleVerboseLogon": {
|
"WPFToggleVerboseLogon": {
|
||||||
"Content": "Verbose Messages During Logon",
|
"Content": "Verbose Messages During Logon",
|
||||||
"Description": "Show detailed messages during the login process for troubleshooting and diagnostics.",
|
"Description": "Show detailed messages during the login process for troubleshooting and diagnostics.",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2}
|
||||||
"WPFTweaksActivity": {
|
"WPFTweaksActivity": {
|
||||||
"Content": "Disable Activity History",
|
"Content": "Disable Activity History",
|
||||||
"Description": "This erases recent docs, clipboard, and run history.",
|
"Description": "Erases recent docs, clipboard, and run history.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1291}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1291}
|
||||||
"WPFTweaksConsumerFeatures": {
|
"WPFTweaksConsumerFeatures": {
|
||||||
"Content": "Disable ConsumerFeatures",
|
"Content": "Disable ConsumerFeatures",
|
||||||
"Description": "Windows will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
|
"Description": "Windows will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link).",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2038}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2038}
|
||||||
"WPFTweaksDeleteTempFiles": {
|
"WPFTweaksDeleteTempFiles": {
|
||||||
"Content": "Delete Temporary Files",
|
"Content": "Delete Temporary Files",
|
||||||
"Description": "Erases TEMP Folders",
|
"Description": "Erases TEMP Folders.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Disable Explorer Automatic Folder Discovery"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2616}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2634}
|
||||||
"WPFTweaksDisableExplorerAutoDiscovery": {
|
"WPFTweaksDisableExplorerAutoDiscovery": {
|
||||||
"Content": "Disable Explorer Automatic Folder Discovery",
|
"Content": "Disable Explorer Automatic Folder Discovery",
|
||||||
"Description": "Windows Explorer automatically tries to guess the type of the folder based on its contents, slowing down the browsing experience. WARNING! Will disable file explorer grouping",
|
"Description": "Windows Explorer automatically tries to guess the type of the folder based on its contents, slowing down the browsing experience. WARNING! Will disable File Explorer grouping.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1763}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1763}
|
||||||
"WPFTweaksEndTaskOnTaskbar": {
|
"WPFTweaksEndTaskOnTaskbar": {
|
||||||
"Content": "Enable End Task With Right Click",
|
"Content": "Enable End Task With Right Click",
|
||||||
"Description": "Enables option to end task when right clicking a program in the taskbar",
|
"Description": "Enables option to end task when right clicking a program in the taskbar.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=32}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=32}
|
||||||
"WPFTweaksHiber": {
|
"WPFTweaksHiber": {
|
||||||
"Content": "Disable Hibernation",
|
"Content": "Disable Hibernation",
|
||||||
"Description": "Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used",
|
"Description": "Hibernation is really meant for laptops as it saves what's in memory before turning the PC off. It really should never be used.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=125}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=125}
|
||||||
"WPFTweaksLocation": {
|
"WPFTweaksLocation": {
|
||||||
"Content": "Disable Location Tracking",
|
"Content": "Disable Location Tracking",
|
||||||
"Description": "Disables Location Tracking...DUH!",
|
"Description": "Disables Location Tracking.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1779}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1779}
|
||||||
"WPFTweaksPowershell7Tele": {
|
"WPFTweaksPowershell7Tele": {
|
||||||
"Content": "Disable Powershell 7 Telemetry",
|
"Content": "Disable Powershell 7 Telemetry",
|
||||||
"Description": "This will create an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell Powershell 7 to not send Telemetry Data.",
|
"Description": "Creates an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell PowerShell 7 to not send Telemetry Data.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1736}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1736}
|
||||||
"WPFTweaksRestorePoint": {
|
"WPFTweaksRestorePoint": {
|
||||||
"Content": "Create Restore Point",
|
"Content": "Create Restore Point",
|
||||||
"Description": "Creates a restore point at runtime in case a revert is needed from WinUtil modifications",
|
"Description": "Creates a restore point at runtime in case a revert is needed from WinUtil modifications.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Checked": "False",
|
"Checked": "False",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1307}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1307}
|
||||||
"WPFTweaksTelemetry": {
|
"WPFTweaksTelemetry": {
|
||||||
"Content": "Disable Telemetry",
|
"Content": "Disable Telemetry",
|
||||||
"Description": "Disables Microsoft Telemetry...Duh",
|
"Description": "Disables Microsoft Telemetry.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1892}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1892}
|
||||||
"WPFTweaksWPBT": {
|
"WPFTweaksWPBT": {
|
||||||
"Content": "Disable Windows Platform Binary Table (WPBT)",
|
"Content": "Disable Windows Platform Binary Table (WPBT)",
|
||||||
"Description": "If enabled then allows your computer vendor to execute a program each time it boots. It enables computer vendors to force install anti-theft software, software drivers, or a software program conveniently. This could also be a security risk.",
|
"Description": "If enabled, WPBT allows your computer vendor to execute programs at boot time, such as anti-theft software, software drivers, as well as force install software without user consent. Poses potential security risk.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=61}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=61}
|
||||||
"WPFTweaksWidget": {
|
"WPFTweaksWidget": {
|
||||||
"Content": "Remove Widgets",
|
"Content": "Remove Widgets",
|
||||||
"Description": "Removes the annoying widgets in the bottom left of the taskbar",
|
"Description": "Removes the annoying widgets in the bottom left of the Taskbar.",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1973}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1973}
|
||||||
"WPFTweaksBlockAdobeNet": {
|
"WPFTweaksBlockAdobeNet": {
|
||||||
"Content": "Adobe Network Block",
|
"Content": "Adobe Network Block",
|
||||||
"Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
|
"Description": "Reduces user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1126}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1126}
|
||||||
"WPFTweaksBraveDebloat": {
|
"WPFTweaksBraveDebloat": {
|
||||||
"Content": "Brave Debloat",
|
"Content": "Brave Debloat",
|
||||||
"Description": "Disables various annoyances like Brave Rewards,Leo AI,Crypto Wallet and VPN",
|
"Description": "Disables various annoyances like Brave Rewards, Leo AI, Crypto Wallet and VPN.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1647}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1647}
|
||||||
"WPFTweaksDeBloat": {
|
"WPFTweaksDeBloat": {
|
||||||
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
|
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
|
||||||
"Description": "USE WITH CAUTION!!! This will remove ALL Microsoft store apps.",
|
"Description": "USE WITH CAUTION!!! This will remove ALL Microsoft Store apps.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"appx": [
|
"appx": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2111}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2111}
|
||||||
"WPFTweaksDisableBGapps": {
|
"WPFTweaksDisableBGapps": {
|
||||||
"Content": "Disable Background Apps",
|
"Content": "Disable Background Apps",
|
||||||
"Description": "Disables all Microsoft Store apps from running in the background, which has to be done individually since Win11",
|
"Description": "Disables all Microsoft Store apps from running in the background, which has to be done individually since Windows 11.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2127}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2127}
|
||||||
"WPFTweaksDisableFSO": {
|
"WPFTweaksDisableFSO": {
|
||||||
"Content": "Disable Fullscreen Optimizations",
|
"Content": "Disable Fullscreen Optimizations",
|
||||||
"Description": "Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen",
|
"Description": "Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1950}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1950}
|
||||||
"WPFTweaksDisableNotifications": {
|
"WPFTweaksDisableNotifications": {
|
||||||
"Content": "Disable Notification Tray/Calendar",
|
"Content": "Disable Notification Tray/Calendar",
|
||||||
"Description": "Disables all Notifications INCLUDING Calendar",
|
"Description": "Disables all Notifications INCLUDING Calendar.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2051}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2051}
|
||||||
"WPFTweaksIPv46": {
|
"WPFTweaksIPv46": {
|
||||||
"Content": "Prefer IPv4 over IPv6",
|
"Content": "Prefer IPv4 over IPv6",
|
||||||
"Description": "To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.",
|
"Description": "Setting the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1429}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1429}
|
||||||
"WPFTweaksRemoveEdge": {
|
"WPFTweaksRemoveEdge": {
|
||||||
"Content": "Remove Microsoft Edge",
|
"Content": "Remove Microsoft Edge",
|
||||||
"Description": "Unblocks Microsoft Edge uninstaller restrictions than uses that uninstaller to remove Microsoft Edge",
|
"Description": "Unblocks Microsoft Edge uninstaller restrictions then uses that uninstaller to remove Microsoft Edge.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1517}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1517}
|
||||||
"WPFTweaksRemoveGallery": {
|
"WPFTweaksRemoveGallery": {
|
||||||
"Content": "Remove Gallery from explorer",
|
"Content": "Remove Gallery from explorer",
|
||||||
"Description": "Removes the Gallery from Explorer and sets This PC as default",
|
"Description": "Removes the Gallery from Explorer and sets This PC as default.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1498}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1498}
|
||||||
"WPFTweaksRemoveHome": {
|
"WPFTweaksRemoveHome": {
|
||||||
"Content": "Remove Home from Explorer",
|
"Content": "Remove Home from Explorer",
|
||||||
"Description": "Removes the Home from Explorer and sets This PC as default",
|
"Description": "Removes the Home from Explorer and sets This PC as default.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=1461}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=1461}
|
||||||
"WPFTweaksRemoveOneDrive": {
|
"WPFTweaksRemoveOneDrive": {
|
||||||
"Content": "Remove OneDrive",
|
"Content": "Remove OneDrive",
|
||||||
"Description": "Denys permission to remove onedrive user files than uses its own uninstaller to remove it than brings back permissions",
|
"Description": "Denies permission to remove OneDrive user files, then uses its own uninstaller to remove it and restores the original permission afterward.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=90}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=90}
|
||||||
"WPFTweaksRevertStartMenu": {
|
"WPFTweaksRevertStartMenu": {
|
||||||
"Content": "Revert the new start menu",
|
"Content": "Revert the new start menu",
|
||||||
"Description": "Uses vivetool to revert the the original start menu from 24h2",
|
"Description": "Uses vivetool to revert to the original start menu from 24H2.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
title: "Set Classic Right-Click Menu "
|
title: "Set Classic Right-Click Menu"
|
||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2003}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2003}
|
||||||
"WPFTweaksRightClickMenu": {
|
"WPFTweaksRightClickMenu": {
|
||||||
"Content": "Set Classic Right-Click Menu ",
|
"Content": "Set Classic Right-Click Menu",
|
||||||
"Description": "Great Windows 11 tweak to bring back good context menus when right clicking things in explorer.",
|
"Description": "Restores the classic context menu when right-clicking in File Explorer, replacing the simplified Windows 11 version.",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ description: ""
|
|||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2067}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2067}
|
||||||
"WPFTweaksTeredo": {
|
"WPFTweaksTeredo": {
|
||||||
"Content": "Disable Teredo",
|
"Content": "Disable Teredo",
|
||||||
"Description": "Teredo network tunneling is a ipv6 feature that can cause additional latency, but may cause problems with some games",
|
"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",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"registry": [
|
"registry": [
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ title: "DNS"
|
|||||||
description: ""
|
description: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
```json {filename="config/tweaks.json",linenos=inline,linenostart=2592}
|
```json {filename="config/tweaks.json",linenos=inline,linenostart=2610}
|
||||||
"WPFchangedns": {
|
"WPFchangedns": {
|
||||||
"Content": "DNS",
|
"Content": "DNS",
|
||||||
"category": "z__Advanced Tweaks - CAUTION",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,50 +4,38 @@ function Invoke-WinUtilISOScript {
|
|||||||
Applies WinUtil modifications to a mounted Windows 11 install.wim image.
|
Applies WinUtil modifications to a mounted Windows 11 install.wim image.
|
||||||
|
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
Performs the following operations against an already-mounted WIM image:
|
Removes AppX bloatware and OneDrive, optionally injects all drivers exported from
|
||||||
|
the running system into install.wim and boot.wim (controlled by the
|
||||||
|
-InjectCurrentSystemDrivers switch), applies offline registry tweaks (hardware
|
||||||
|
bypass, privacy, OOBE, telemetry, update suppression), deletes CEIP/WU
|
||||||
|
scheduled-task definition files, and optionally writes autounattend.xml to the ISO
|
||||||
|
root and removes the support\ folder from the ISO contents directory.
|
||||||
|
|
||||||
1. Removes provisioned AppX bloatware packages via DISM.
|
All setup scripts embedded in the autounattend.xml <Extensions><File> nodes are
|
||||||
2. Removes OneDriveSetup.exe from the system image.
|
written directly into the WIM at their target paths under C:\Windows\Setup\Scripts\
|
||||||
3. Loads offline registry hives (COMPONENTS, DEFAULT, NTUSER, SOFTWARE, SYSTEM)
|
to ensure they survive Windows Setup stripping unrecognised-namespace XML elements
|
||||||
and applies the following tweaks:
|
from the Panther copy of the answer file.
|
||||||
- Bypasses hardware requirement checks (CPU, RAM, SecureBoot, Storage, TPM).
|
|
||||||
- Disables sponsored-app delivery and ContentDeliveryManager features.
|
|
||||||
- Enables local-account OOBE path (BypassNRO).
|
|
||||||
- Writes autounattend.xml to the Sysprep directory inside the WIM and,
|
|
||||||
optionally, to the ISO/USB root so Windows Setup picks it up at boot.
|
|
||||||
- Disables reserved storage.
|
|
||||||
- Disables BitLocker device encryption.
|
|
||||||
- Hides the Chat (Teams) taskbar icon.
|
|
||||||
- Disables OneDrive folder backup (KFM).
|
|
||||||
- Disables telemetry, advertising ID, and input personalization.
|
|
||||||
- Blocks post-install delivery of DevHome, Outlook, and Teams.
|
|
||||||
- Disables Windows Copilot.
|
|
||||||
- Disables Windows Update during OOBE.
|
|
||||||
4. Deletes unwanted scheduled-task XML definition files (CEIP, Appraiser, etc.).
|
|
||||||
5. Removes the support\ folder from the ISO contents directory (if supplied).
|
|
||||||
|
|
||||||
Mounting and dismounting the WIM is the responsibility of the caller
|
Mounting/dismounting the WIM is the caller's responsibility (e.g. Invoke-WinUtilISO).
|
||||||
(e.g. Invoke-WinUtilISO).
|
|
||||||
|
|
||||||
.PARAMETER ScratchDir
|
.PARAMETER ScratchDir
|
||||||
Mandatory. Full path to the directory where the Windows image is currently mounted.
|
Mandatory. Full path to the directory where the Windows image is currently mounted.
|
||||||
Example: C:\Users\USERNAME\AppData\Local\Temp\WinUtil_Win11ISO_20260222\wim_mount
|
|
||||||
|
|
||||||
.PARAMETER ISOContentsDir
|
.PARAMETER ISOContentsDir
|
||||||
Optional. Root directory of the extracted ISO contents.
|
Optional. Root directory of the extracted ISO contents. When supplied,
|
||||||
When supplied, autounattend.xml is also written here so Windows Setup picks it
|
autounattend.xml is written here and the support\ folder is removed.
|
||||||
up automatically at boot, and the support\ folder is deleted from that location.
|
|
||||||
|
|
||||||
.PARAMETER AutoUnattendXml
|
.PARAMETER AutoUnattendXml
|
||||||
Optional. Full XML content for autounattend.xml.
|
Optional. Full XML content for autounattend.xml. If empty, the OOBE bypass
|
||||||
In compiled winutil.ps1 this is the embedded $WinUtilAutounattendXml here-string;
|
file is skipped and a warning is logged.
|
||||||
in dev mode it is read from tools\autounattend.xml.
|
|
||||||
If empty, the OOBE bypass file is skipped and a warning is logged.
|
.PARAMETER InjectCurrentSystemDrivers
|
||||||
|
Optional. When $true, exports all drivers from the running system and injects
|
||||||
|
them into install.wim and boot.wim index 2 (Windows Setup PE).
|
||||||
|
Defaults to $false.
|
||||||
|
|
||||||
.PARAMETER Log
|
.PARAMETER Log
|
||||||
Optional ScriptBlock used for progress/status logging.
|
Optional ScriptBlock for progress/status logging. Receives a single [string] argument.
|
||||||
Receives a single [string] message argument.
|
|
||||||
Defaults to { param($m) Write-Output $m } when not supplied.
|
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
Invoke-WinUtilISOScript -ScratchDir "C:\Temp\wim_mount"
|
Invoke-WinUtilISOScript -ScratchDir "C:\Temp\wim_mount"
|
||||||
@@ -62,24 +50,19 @@ function Invoke-WinUtilISOScript {
|
|||||||
.NOTES
|
.NOTES
|
||||||
Author : Chris Titus @christitustech
|
Author : Chris Titus @christitustech
|
||||||
GitHub : https://github.com/ChrisTitusTech
|
GitHub : https://github.com/ChrisTitusTech
|
||||||
Version : 26.02.22
|
Version : 26.03.02
|
||||||
#>
|
#>
|
||||||
param (
|
param (
|
||||||
[Parameter(Mandatory)][string]$ScratchDir,
|
[Parameter(Mandatory)][string]$ScratchDir,
|
||||||
# Root directory of the extracted ISO contents. When supplied, autounattend.xml
|
|
||||||
# is written here so Windows Setup picks it up automatically at boot.
|
|
||||||
[string]$ISOContentsDir = "",
|
[string]$ISOContentsDir = "",
|
||||||
# Autounattend XML content. In compiled winutil.ps1 this comes from the embedded
|
|
||||||
# $WinUtilAutounattendXml here-string; in dev mode it is read from tools\autounattend.xml.
|
|
||||||
[string]$AutoUnattendXml = "",
|
[string]$AutoUnattendXml = "",
|
||||||
|
[bool]$InjectCurrentSystemDrivers = $false,
|
||||||
[scriptblock]$Log = { param($m) Write-Output $m }
|
[scriptblock]$Log = { param($m) Write-Output $m }
|
||||||
)
|
)
|
||||||
|
|
||||||
# ── Resolve admin group name (for takeown / icacls) ──────────────────────
|
|
||||||
$adminSID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')
|
$adminSID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')
|
||||||
$adminGroup = $adminSID.Translate([System.Security.Principal.NTAccount])
|
$adminGroup = $adminSID.Translate([System.Security.Principal.NTAccount])
|
||||||
|
|
||||||
# ── Local helpers ─────────────────────────────────────────────────────────
|
|
||||||
function Set-ISOScriptReg {
|
function Set-ISOScriptReg {
|
||||||
param ([string]$path, [string]$name, [string]$type, [string]$value)
|
param ([string]$path, [string]$name, [string]$type, [string]$value)
|
||||||
try {
|
try {
|
||||||
@@ -100,15 +83,37 @@ function Invoke-WinUtilISOScript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
function Add-DriversToImage {
|
||||||
# 1. Remove provisioned AppX packages
|
param ([string]$MountPath, [string]$DriverDir, [string]$Label = "image", [scriptblock]$Logger)
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
& dism /English "/image:$MountPath" /Add-Driver "/Driver:$DriverDir" /Recurse 2>&1 |
|
||||||
|
ForEach-Object { & $Logger " dism[$Label]: $_" }
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-BootWimInject {
|
||||||
|
param ([string]$BootWimPath, [string]$DriverDir, [scriptblock]$Logger)
|
||||||
|
Set-ItemProperty -Path $BootWimPath -Name IsReadOnly -Value $false -ErrorAction SilentlyContinue
|
||||||
|
$mountDir = Join-Path $env:TEMP "WinUtil_BootMount_$(Get-Random)"
|
||||||
|
New-Item -Path $mountDir -ItemType Directory -Force | Out-Null
|
||||||
|
try {
|
||||||
|
& $Logger "Mounting boot.wim (index 2) for driver injection..."
|
||||||
|
Mount-WindowsImage -ImagePath $BootWimPath -Index 2 -Path $mountDir -ErrorAction Stop | Out-Null
|
||||||
|
Add-DriversToImage -MountPath $mountDir -DriverDir $DriverDir -Label "boot" -Logger $Logger
|
||||||
|
& $Logger "Saving boot.wim..."
|
||||||
|
Dismount-WindowsImage -Path $mountDir -Save -ErrorAction Stop | Out-Null
|
||||||
|
& $Logger "boot.wim driver injection complete."
|
||||||
|
} catch {
|
||||||
|
& $Logger "Warning: boot.wim driver injection failed: $_"
|
||||||
|
try { Dismount-WindowsImage -Path $mountDir -Discard -ErrorAction SilentlyContinue | Out-Null } catch {}
|
||||||
|
} finally {
|
||||||
|
Remove-Item -Path $mountDir -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ── 1. Remove provisioned AppX packages ──────────────────────────────────
|
||||||
& $Log "Removing provisioned AppX packages..."
|
& $Log "Removing provisioned AppX packages..."
|
||||||
|
|
||||||
$packages = & dism /English "/image:$ScratchDir" /Get-ProvisionedAppxPackages |
|
$packages = & dism /English "/image:$ScratchDir" /Get-ProvisionedAppxPackages |
|
||||||
ForEach-Object {
|
ForEach-Object { if ($_ -match 'PackageName : (.*)') { $matches[1] } }
|
||||||
if ($_ -match 'PackageName : (.*)') { $matches[1] }
|
|
||||||
}
|
|
||||||
|
|
||||||
$packagePrefixes = @(
|
$packagePrefixes = @(
|
||||||
'AppUp.IntelManagementandSecurityStatus',
|
'AppUp.IntelManagementandSecurityStatus',
|
||||||
@@ -155,25 +160,46 @@ function Invoke-WinUtilISOScript {
|
|||||||
'MicrosoftTeams'
|
'MicrosoftTeams'
|
||||||
)
|
)
|
||||||
|
|
||||||
$packagesToRemove = $packages | Where-Object {
|
$packages | Where-Object { $pkg = $_; $packagePrefixes | Where-Object { $pkg -like "*$_*" } } |
|
||||||
$pkg = $_
|
ForEach-Object { & dism /English "/image:$ScratchDir" /Remove-ProvisionedAppxPackage "/PackageName:$_" }
|
||||||
$packagePrefixes | Where-Object { $pkg -like "*$_*" }
|
|
||||||
}
|
# ── 2. Inject current system drivers (optional) ───────────────────────────
|
||||||
foreach ($package in $packagesToRemove) {
|
if ($InjectCurrentSystemDrivers) {
|
||||||
& dism /English "/image:$ScratchDir" /Remove-ProvisionedAppxPackage "/PackageName:$package"
|
& $Log "Exporting all drivers from running system..."
|
||||||
|
$driverExportRoot = Join-Path $env:TEMP "WinUtil_DriverExport_$(Get-Random)"
|
||||||
|
New-Item -Path $driverExportRoot -ItemType Directory -Force | Out-Null
|
||||||
|
try {
|
||||||
|
Export-WindowsDriver -Online -Destination $driverExportRoot | Out-Null
|
||||||
|
|
||||||
|
& $Log "Injecting current system drivers into install.wim..."
|
||||||
|
Add-DriversToImage -MountPath $ScratchDir -DriverDir $driverExportRoot -Label "install" -Logger $Log
|
||||||
|
& $Log "install.wim driver injection complete."
|
||||||
|
|
||||||
|
if ($ISOContentsDir -and (Test-Path $ISOContentsDir)) {
|
||||||
|
$bootWim = Join-Path $ISOContentsDir "sources\boot.wim"
|
||||||
|
if (Test-Path $bootWim) {
|
||||||
|
& $Log "Injecting current system drivers into boot.wim..."
|
||||||
|
Invoke-BootWimInject -BootWimPath $bootWim -DriverDir $driverExportRoot -Logger $Log
|
||||||
|
} else {
|
||||||
|
& $Log "Warning: boot.wim not found — skipping boot.wim driver injection."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
& $Log "Error during driver export/injection: $_"
|
||||||
|
} finally {
|
||||||
|
Remove-Item -Path $driverExportRoot -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
& $Log "Driver injection skipped."
|
||||||
}
|
}
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ── 3. Remove OneDrive ────────────────────────────────────────────────────
|
||||||
# 2. Remove OneDrive
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
|
||||||
& $Log "Removing OneDrive..."
|
& $Log "Removing OneDrive..."
|
||||||
& takeown /f "$ScratchDir\Windows\System32\OneDriveSetup.exe" | Out-Null
|
& takeown /f "$ScratchDir\Windows\System32\OneDriveSetup.exe" | Out-Null
|
||||||
& icacls "$ScratchDir\Windows\System32\OneDriveSetup.exe" /grant "$($adminGroup.Value):(F)" /T /C | Out-Null
|
& icacls "$ScratchDir\Windows\System32\OneDriveSetup.exe" /grant "$($adminGroup.Value):(F)" /T /C | Out-Null
|
||||||
Remove-Item -Path "$ScratchDir\Windows\System32\OneDriveSetup.exe" -Force -ErrorAction SilentlyContinue
|
Remove-Item -Path "$ScratchDir\Windows\System32\OneDriveSetup.exe" -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ── 4. Registry tweaks ────────────────────────────────────────────────────
|
||||||
# 3. Registry tweaks
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
|
||||||
& $Log "Loading offline registry hives..."
|
& $Log "Loading offline registry hives..."
|
||||||
reg load HKLM\zCOMPONENTS "$ScratchDir\Windows\System32\config\COMPONENTS"
|
reg load HKLM\zCOMPONENTS "$ScratchDir\Windows\System32\config\COMPONENTS"
|
||||||
reg load HKLM\zDEFAULT "$ScratchDir\Windows\System32\config\default"
|
reg load HKLM\zDEFAULT "$ScratchDir\Windows\System32\config\default"
|
||||||
@@ -222,14 +248,37 @@ function Invoke-WinUtilISOScript {
|
|||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\OOBE' 'BypassNRO' 'REG_DWORD' '1'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\OOBE' 'BypassNRO' 'REG_DWORD' '1'
|
||||||
|
|
||||||
if ($AutoUnattendXml) {
|
if ($AutoUnattendXml) {
|
||||||
# ── Place autounattend.xml inside the WIM (Sysprep) ──────────────────
|
try {
|
||||||
$sysprepDest = "$ScratchDir\Windows\System32\Sysprep\autounattend.xml"
|
$xmlDoc = [xml]::new()
|
||||||
Set-Content -Path $sysprepDest -Value $AutoUnattendXml -Encoding UTF8 -Force
|
$xmlDoc.LoadXml($AutoUnattendXml)
|
||||||
& $Log "Written autounattend.xml to Sysprep directory."
|
|
||||||
|
$nsMgr = New-Object System.Xml.XmlNamespaceManager($xmlDoc.NameTable)
|
||||||
|
$nsMgr.AddNamespace("sg", "https://schneegans.de/windows/unattend-generator/")
|
||||||
|
|
||||||
|
$fileNodes = $xmlDoc.SelectNodes("//sg:File", $nsMgr)
|
||||||
|
if ($fileNodes -and $fileNodes.Count -gt 0) {
|
||||||
|
foreach ($fileNode in $fileNodes) {
|
||||||
|
$absPath = $fileNode.GetAttribute("path")
|
||||||
|
$relPath = $absPath -replace '^[A-Za-z]:[/\\]', ''
|
||||||
|
$destPath = Join-Path $ScratchDir $relPath
|
||||||
|
New-Item -Path (Split-Path $destPath -Parent) -ItemType Directory -Force -ErrorAction SilentlyContinue | Out-Null
|
||||||
|
|
||||||
|
$ext = [IO.Path]::GetExtension($destPath).ToLower()
|
||||||
|
$encoding = switch ($ext) {
|
||||||
|
{ $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8 }
|
||||||
|
{ $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new($false, $true) }
|
||||||
|
default { [System.Text.Encoding]::Default }
|
||||||
|
}
|
||||||
|
[System.IO.File]::WriteAllBytes($destPath, ($encoding.GetPreamble() + $encoding.GetBytes($fileNode.InnerText.Trim())))
|
||||||
|
& $Log "Pre-staged setup script: $relPath"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
& $Log "Warning: no <Extensions><File> nodes found in autounattend.xml — setup scripts not pre-staged."
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
& $Log "Warning: could not pre-stage setup scripts from autounattend.xml: $_"
|
||||||
|
}
|
||||||
|
|
||||||
# ── Place autounattend.xml at the ISO / USB root ──────────────────────
|
|
||||||
# Windows Setup reads this file first (before booting into the OS),
|
|
||||||
# which is what drives the local-account / OOBE bypass at install time.
|
|
||||||
if ($ISOContentsDir -and (Test-Path $ISOContentsDir)) {
|
if ($ISOContentsDir -and (Test-Path $ISOContentsDir)) {
|
||||||
$isoDest = Join-Path $ISOContentsDir "autounattend.xml"
|
$isoDest = Join-Path $ISOContentsDir "autounattend.xml"
|
||||||
Set-Content -Path $isoDest -Value $AutoUnattendXml -Encoding UTF8 -Force
|
Set-Content -Path $isoDest -Value $AutoUnattendXml -Encoding UTF8 -Force
|
||||||
@@ -272,8 +321,8 @@ function Invoke-WinUtilISOScript {
|
|||||||
Remove-ISOScriptReg 'HKLM\zSOFTWARE\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate'
|
Remove-ISOScriptReg 'HKLM\zSOFTWARE\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate'
|
||||||
|
|
||||||
& $Log "Disabling Copilot..."
|
& $Log "Disabling Copilot..."
|
||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsCopilot' 'TurnOffWindowsCopilot' 'REG_DWORD' '1'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\WindowsCopilot' 'TurnOffWindowsCopilot' 'REG_DWORD' '1'
|
||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Edge' 'HubsSidebarEnabled' 'REG_DWORD' '0'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Edge' 'HubsSidebarEnabled' 'REG_DWORD' '0'
|
||||||
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\Explorer' 'DisableSearchBoxSuggestions' 'REG_DWORD' '1'
|
Set-ISOScriptReg 'HKLM\zSOFTWARE\Policies\Microsoft\Windows\Explorer' 'DisableSearchBoxSuggestions' 'REG_DWORD' '1'
|
||||||
|
|
||||||
& $Log "Disabling Windows Update during OOBE (re-enabled on first logon via FirstLogon.ps1)..."
|
& $Log "Disabling Windows Update during OOBE (re-enabled on first logon via FirstLogon.ps1)..."
|
||||||
@@ -304,12 +353,9 @@ function Invoke-WinUtilISOScript {
|
|||||||
reg unload HKLM\zSOFTWARE
|
reg unload HKLM\zSOFTWARE
|
||||||
reg unload HKLM\zSYSTEM
|
reg unload HKLM\zSYSTEM
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ── 5. Delete scheduled task definition files ─────────────────────────────
|
||||||
# 4. Delete scheduled task definition files
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
|
||||||
& $Log "Deleting scheduled task definition files..."
|
& $Log "Deleting scheduled task definition files..."
|
||||||
$tasksPath = "$ScratchDir\Windows\System32\Tasks"
|
$tasksPath = "$ScratchDir\Windows\System32\Tasks"
|
||||||
|
|
||||||
Remove-Item "$tasksPath\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" -Force -ErrorAction SilentlyContinue
|
||||||
Remove-Item "$tasksPath\Microsoft\Windows\Customer Experience Improvement Program" -Recurse -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\Customer Experience Improvement Program" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
Remove-Item "$tasksPath\Microsoft\Windows\Application Experience\ProgramDataUpdater" -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\Application Experience\ProgramDataUpdater" -Force -ErrorAction SilentlyContinue
|
||||||
@@ -321,12 +367,9 @@ function Invoke-WinUtilISOScript {
|
|||||||
Remove-Item "$tasksPath\Microsoft\Windows\WaaSMedic" -Recurse -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\WaaSMedic" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
Remove-Item "$tasksPath\Microsoft\Windows\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\Windows\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
Remove-Item "$tasksPath\Microsoft\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
Remove-Item "$tasksPath\Microsoft\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
& $Log "Scheduled task files deleted."
|
& $Log "Scheduled task files deleted."
|
||||||
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
# ── 6. Remove ISO support folder ─────────────────────────────────────────
|
||||||
# 5. Remove ISO support folder (fresh-install only; not needed)
|
|
||||||
# ═════════════════════════════════════════════════════════════════════════
|
|
||||||
if ($ISOContentsDir -and (Test-Path $ISOContentsDir)) {
|
if ($ISOContentsDir -and (Test-Path $ISOContentsDir)) {
|
||||||
& $Log "Removing ISO support\ folder..."
|
& $Log "Removing ISO support\ folder..."
|
||||||
Remove-Item -Path (Join-Path $ISOContentsDir "support") -Recurse -Force -ErrorAction SilentlyContinue
|
Remove-Item -Path (Join-Path $ISOContentsDir "support") -Recurse -Force -ErrorAction SilentlyContinue
|
||||||
|
|||||||
240
functions/private/Invoke-WinUtilISOUSB.ps1
Normal file
240
functions/private/Invoke-WinUtilISOUSB.ps1
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
function Invoke-WinUtilISORefreshUSBDrives {
|
||||||
|
$combo = $sync["WPFWin11ISOUSBDriveComboBox"]
|
||||||
|
$removable = @(Get-Disk | Where-Object { $_.BusType -eq "USB" } | Sort-Object Number)
|
||||||
|
|
||||||
|
$combo.Items.Clear()
|
||||||
|
|
||||||
|
if ($removable.Count -eq 0) {
|
||||||
|
$combo.Items.Add("No USB drives detected")
|
||||||
|
$combo.SelectedIndex = 0
|
||||||
|
$sync["Win11ISOUSBDisks"] = @()
|
||||||
|
Write-Win11ISOLog "No USB drives detected."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($disk in $removable) {
|
||||||
|
$sizeGB = [math]::Round($disk.Size / 1GB, 1)
|
||||||
|
$combo.Items.Add("Disk $($disk.Number): $($disk.FriendlyName) [$sizeGB GB] - $($disk.PartitionStyle)")
|
||||||
|
}
|
||||||
|
$combo.SelectedIndex = 0
|
||||||
|
Write-Win11ISOLog "Found $($removable.Count) USB drive(s)."
|
||||||
|
$sync["Win11ISOUSBDisks"] = $removable
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-WinUtilISOWriteUSB {
|
||||||
|
$contentsDir = $sync["Win11ISOContentsDir"]
|
||||||
|
$usbDisks = $sync["Win11ISOUSBDisks"]
|
||||||
|
|
||||||
|
if (-not $contentsDir -or -not (Test-Path $contentsDir)) {
|
||||||
|
[System.Windows.MessageBox]::Show("No modified ISO content found. Please complete Steps 1-3 first.", "Not Ready", "OK", "Warning")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
$combo = $sync["WPFWin11ISOUSBDriveComboBox"]
|
||||||
|
$selectedIndex = $combo.SelectedIndex
|
||||||
|
$selectedItemText = [string]$combo.SelectedItem
|
||||||
|
$usbDisks = @($usbDisks)
|
||||||
|
|
||||||
|
$targetDisk = $null
|
||||||
|
if ($selectedIndex -ge 0 -and $selectedIndex -lt $usbDisks.Count) {
|
||||||
|
$targetDisk = $usbDisks[$selectedIndex]
|
||||||
|
} elseif ($selectedItemText -match 'Disk\s+(\d+):') {
|
||||||
|
$selectedDiskNum = [int]$matches[1]
|
||||||
|
$targetDisk = $usbDisks | Where-Object { $_.Number -eq $selectedDiskNum } | Select-Object -First 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $targetDisk) {
|
||||||
|
[System.Windows.MessageBox]::Show("Please select a USB drive from the dropdown.", "No Drive Selected", "OK", "Warning")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
$diskNum = $targetDisk.Number
|
||||||
|
$sizeGB = [math]::Round($targetDisk.Size / 1GB, 1)
|
||||||
|
|
||||||
|
$confirm = [System.Windows.MessageBox]::Show(
|
||||||
|
"ALL data on Disk $diskNum ($($targetDisk.FriendlyName), $sizeGB GB) will be PERMANENTLY ERASED.`n`nAre you sure you want to continue?",
|
||||||
|
"Confirm USB Erase", "YesNo", "Warning")
|
||||||
|
|
||||||
|
if ($confirm -ne "Yes") {
|
||||||
|
Write-Win11ISOLog "USB write cancelled by user."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
$sync["WPFWin11ISOWriteUSBButton"].IsEnabled = $false
|
||||||
|
Write-Win11ISOLog "Starting USB write to Disk $diskNum..."
|
||||||
|
|
||||||
|
$runspace = [Management.Automation.Runspaces.RunspaceFactory]::CreateRunspace()
|
||||||
|
$runspace.ApartmentState = "STA"
|
||||||
|
$runspace.ThreadOptions = "ReuseThread"
|
||||||
|
$runspace.Open()
|
||||||
|
$runspace.SessionStateProxy.SetVariable("sync", $sync)
|
||||||
|
$runspace.SessionStateProxy.SetVariable("diskNum", $diskNum)
|
||||||
|
$runspace.SessionStateProxy.SetVariable("contentsDir", $contentsDir)
|
||||||
|
|
||||||
|
$script = [Management.Automation.PowerShell]::Create()
|
||||||
|
$script.Runspace = $runspace
|
||||||
|
$script.AddScript({
|
||||||
|
|
||||||
|
function Log($msg) {
|
||||||
|
$ts = (Get-Date).ToString("HH:mm:ss")
|
||||||
|
$sync["WPFWin11ISOStatusLog"].Dispatcher.Invoke([action]{
|
||||||
|
$sync["WPFWin11ISOStatusLog"].Text += "`n[$ts] $msg"
|
||||||
|
$sync["WPFWin11ISOStatusLog"].CaretIndex = $sync["WPFWin11ISOStatusLog"].Text.Length
|
||||||
|
$sync["WPFWin11ISOStatusLog"].ScrollToEnd()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetProgress($label, $pct) {
|
||||||
|
$sync["WPFWin11ISOStatusLog"].Dispatcher.Invoke([action]{
|
||||||
|
$sync.progressBarTextBlock.Text = $label
|
||||||
|
$sync.progressBarTextBlock.ToolTip = $label
|
||||||
|
$sync.ProgressBar.Value = [Math]::Max($pct, 5)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-FreeDriveLetter {
|
||||||
|
$used = (Get-PSDrive -PSProvider FileSystem -ErrorAction SilentlyContinue).Name
|
||||||
|
foreach ($c in [char[]](68..90)) {
|
||||||
|
if ($used -notcontains [string]$c) { return $c }
|
||||||
|
}
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
SetProgress "Formatting USB drive..." 10
|
||||||
|
|
||||||
|
# Phase 1: Clean disk via diskpart
|
||||||
|
$dpFile1 = Join-Path $env:TEMP "winutil_diskpart_$(Get-Random).txt"
|
||||||
|
"select disk $diskNum`nclean`nexit" | Set-Content -Path $dpFile1 -Encoding ASCII
|
||||||
|
Log "Running diskpart clean on Disk $diskNum..."
|
||||||
|
diskpart /s $dpFile1 2>&1 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
||||||
|
Remove-Item $dpFile1 -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Phase 2: Initialize as GPT
|
||||||
|
Start-Sleep -Seconds 2
|
||||||
|
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
||||||
|
$diskObj = Get-Disk -Number $diskNum -ErrorAction Stop
|
||||||
|
if ($diskObj.PartitionStyle -eq 'RAW') {
|
||||||
|
Initialize-Disk -Number $diskNum -PartitionStyle GPT -ErrorAction Stop
|
||||||
|
Log "Disk $diskNum initialized as GPT."
|
||||||
|
} else {
|
||||||
|
Set-Disk -Number $diskNum -PartitionStyle GPT -ErrorAction Stop
|
||||||
|
Log "Disk $diskNum converted to GPT (was $($diskObj.PartitionStyle))."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Phase 3: Create FAT32 partition via diskpart
|
||||||
|
$volLabel = "W11-" + (Get-Date).ToString('yyMMdd')
|
||||||
|
$dpFile2 = Join-Path $env:TEMP "winutil_diskpart2_$(Get-Random).txt"
|
||||||
|
$maxFat32PartitionMB = 32768
|
||||||
|
$diskSizeMB = [int][Math]::Floor((Get-Disk -Number $diskNum -ErrorAction Stop).Size / 1MB)
|
||||||
|
$createPartitionCommand = "create partition primary"
|
||||||
|
if ($diskSizeMB -gt $maxFat32PartitionMB) {
|
||||||
|
$createPartitionCommand = "create partition primary size=$maxFat32PartitionMB"
|
||||||
|
Log "Disk $diskNum is $diskSizeMB MB; creating FAT32 partition capped at $maxFat32PartitionMB MB (32 GB)."
|
||||||
|
}
|
||||||
|
|
||||||
|
@(
|
||||||
|
"select disk $diskNum"
|
||||||
|
$createPartitionCommand
|
||||||
|
"format quick fs=fat32 label=`"$volLabel`""
|
||||||
|
"exit"
|
||||||
|
) | Set-Content -Path $dpFile2 -Encoding ASCII
|
||||||
|
Log "Creating partitions on Disk $diskNum..."
|
||||||
|
diskpart /s $dpFile2 2>&1 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
||||||
|
Remove-Item $dpFile2 -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
SetProgress "Assigning drive letters..." 30
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
|
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
$partitions = Get-Partition -DiskNumber $diskNum -ErrorAction Stop
|
||||||
|
Log "Partitions on Disk $diskNum after format: $($partitions.Count)"
|
||||||
|
foreach ($p in $partitions) {
|
||||||
|
Log " Partition $($p.PartitionNumber) Type=$($p.Type) Letter=$($p.DriveLetter) Size=$([math]::Round($p.Size/1MB))MB"
|
||||||
|
}
|
||||||
|
|
||||||
|
$winpePart = $partitions | Where-Object { $_.Type -eq "Basic" } | Select-Object -Last 1
|
||||||
|
if (-not $winpePart) {
|
||||||
|
throw "Could not find the WINPE (Basic) partition on Disk $diskNum after format."
|
||||||
|
}
|
||||||
|
|
||||||
|
try { Remove-PartitionAccessPath -DiskNumber $diskNum -PartitionNumber $winpePart.PartitionNumber -AccessPath "$($winpePart.DriveLetter):" -ErrorAction SilentlyContinue } catch {}
|
||||||
|
$usbLetter = Get-FreeDriveLetter
|
||||||
|
if (-not $usbLetter) { throw "No free drive letters (D-Z) available to assign to the USB data partition." }
|
||||||
|
Set-Partition -DiskNumber $diskNum -PartitionNumber $winpePart.PartitionNumber -NewDriveLetter $usbLetter
|
||||||
|
Log "Assigned drive letter $usbLetter to WINPE partition (Partition $($winpePart.PartitionNumber))."
|
||||||
|
Start-Sleep -Seconds 2
|
||||||
|
|
||||||
|
$usbDrive = "${usbLetter}:"
|
||||||
|
if (-not (Test-Path $usbDrive)) { throw "Drive $usbDrive is not accessible after letter assignment." }
|
||||||
|
Log "USB data partition: $usbDrive"
|
||||||
|
|
||||||
|
$contentSizeBytes = (Get-ChildItem -LiteralPath $contentsDir -File -Recurse -Force -ErrorAction Stop | Measure-Object -Property Length -Sum).Sum
|
||||||
|
if (-not $contentSizeBytes) { $contentSizeBytes = 0 }
|
||||||
|
$usbVolume = Get-Volume -DriveLetter $usbLetter -ErrorAction Stop
|
||||||
|
$partitionCapacityBytes = [int64]$usbVolume.Size
|
||||||
|
$partitionFreeBytes = [int64]$usbVolume.SizeRemaining
|
||||||
|
|
||||||
|
$contentSizeGB = [math]::Round($contentSizeBytes / 1GB, 2)
|
||||||
|
$partitionCapacityGB = [math]::Round($partitionCapacityBytes / 1GB, 2)
|
||||||
|
$partitionFreeGB = [math]::Round($partitionFreeBytes / 1GB, 2)
|
||||||
|
|
||||||
|
Log "Source content size: $contentSizeGB GB. USB partition capacity: $partitionCapacityGB GB, free: $partitionFreeGB GB."
|
||||||
|
|
||||||
|
if ($contentSizeBytes -gt $partitionCapacityBytes) {
|
||||||
|
throw "ISO content ($contentSizeGB GB) is larger than the USB partition capacity ($partitionCapacityGB GB). Use a larger USB drive or reduce image size."
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($contentSizeBytes -gt $partitionFreeBytes) {
|
||||||
|
throw "Insufficient free space on USB partition. Required: $contentSizeGB GB, available: $partitionFreeGB GB."
|
||||||
|
}
|
||||||
|
|
||||||
|
SetProgress "Copying Windows 11 files to USB..." 45
|
||||||
|
|
||||||
|
# Copy files; split install.wim if > 4 GB (FAT32 limit)
|
||||||
|
$installWim = Join-Path $contentsDir "sources\install.wim"
|
||||||
|
if (Test-Path $installWim) {
|
||||||
|
$wimSizeMB = [math]::Round((Get-Item $installWim).Length / 1MB)
|
||||||
|
if ($wimSizeMB -gt 3800) {
|
||||||
|
Log "install.wim is $wimSizeMB MB - splitting for FAT32 compatibility... This will take several minutes."
|
||||||
|
$splitDest = Join-Path $usbDrive "sources\install.swm"
|
||||||
|
New-Item -ItemType Directory -Path (Split-Path $splitDest) -Force | Out-Null
|
||||||
|
Split-WindowsImage -ImagePath $installWim -SplitImagePath $splitDest -FileSize 3800 -CheckIntegrity
|
||||||
|
Log "install.wim split complete."
|
||||||
|
Log "Copying remaining files to USB..."
|
||||||
|
& robocopy $contentsDir $usbDrive /E /XF install.wim /NFL /NDL /NJH /NJS
|
||||||
|
} else {
|
||||||
|
& robocopy $contentsDir $usbDrive /E /NFL /NDL /NJH /NJS
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
& robocopy $contentsDir $usbDrive /E /NFL /NDL /NJH /NJS
|
||||||
|
}
|
||||||
|
|
||||||
|
SetProgress "Finalising USB drive..." 90
|
||||||
|
Log "Files copied to USB."
|
||||||
|
SetProgress "USB write complete" 100
|
||||||
|
Log "USB drive is ready for use."
|
||||||
|
|
||||||
|
$sync["WPFWin11ISOStatusLog"].Dispatcher.Invoke([action]{
|
||||||
|
[System.Windows.MessageBox]::Show(
|
||||||
|
"USB drive created successfully!`n`nYou can now boot from this drive to install Windows 11.",
|
||||||
|
"USB Ready", "OK", "Info")
|
||||||
|
})
|
||||||
|
} catch {
|
||||||
|
Log "ERROR during USB write: $_"
|
||||||
|
$sync["WPFWin11ISOStatusLog"].Dispatcher.Invoke([action]{
|
||||||
|
[System.Windows.MessageBox]::Show("USB write failed:`n`n$_", "USB Write Error", "OK", "Error")
|
||||||
|
})
|
||||||
|
} finally {
|
||||||
|
Start-Sleep -Milliseconds 800
|
||||||
|
$sync["WPFWin11ISOStatusLog"].Dispatcher.Invoke([action]{
|
||||||
|
$sync.progressBarTextBlock.Text = ""
|
||||||
|
$sync.progressBarTextBlock.ToolTip = ""
|
||||||
|
$sync.ProgressBar.Value = 0
|
||||||
|
$sync["WPFWin11ISOWriteUSBButton"].IsEnabled = $true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}) | Out-Null
|
||||||
|
|
||||||
|
$script.BeginInvoke() | Out-Null
|
||||||
|
}
|
||||||
@@ -8,20 +8,14 @@ function Invoke-WinutilThemeChange {
|
|||||||
modifying various UI elements such as colors, margins, corner radii, font families, etc.
|
modifying various UI elements such as colors, margins, corner radii, font families, etc.
|
||||||
If the '-init' switch is used, it initializes the theme based on the system's current dark mode setting.
|
If the '-init' switch is used, it initializes the theme based on the system's current dark mode setting.
|
||||||
|
|
||||||
.PARAMETER init
|
|
||||||
A switch parameter. If set to $true, the function initializes the theme based on the system’s current dark mode setting.
|
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
Invoke-WinutilThemeChange
|
Invoke-WinutilThemeChange
|
||||||
# Toggles the theme between 'Light' and 'Dark'.
|
# Toggles the theme between 'Light' and 'Dark'.
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
Invoke-WinutilThemeChange -init
|
|
||||||
# Initializes the theme based on the system's dark mode and applies the shared theme.
|
|
||||||
#>
|
#>
|
||||||
param (
|
param (
|
||||||
[switch]$init = $false,
|
[string]$theme = "Auto"
|
||||||
[string]$theme
|
|
||||||
)
|
)
|
||||||
|
|
||||||
function Set-WinutilTheme {
|
function Set-WinutilTheme {
|
||||||
@@ -129,48 +123,30 @@ function Invoke-WinutilThemeChange {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$LightPreferencePath = "$winutildir\LightTheme.ini"
|
$sync.preferences.theme = $theme
|
||||||
$DarkPreferencePath = "$winutildir\DarkTheme.ini"
|
Set-Preferences -save
|
||||||
|
Set-WinutilTheme -currentTheme "shared"
|
||||||
|
|
||||||
if ($init) {
|
switch ($sync.preferences.theme) {
|
||||||
Set-WinutilTheme -currentTheme "shared"
|
|
||||||
if (Test-Path $LightPreferencePath) {
|
|
||||||
$theme = "Light"
|
|
||||||
}
|
|
||||||
elseif (Test-Path $DarkPreferencePath) {
|
|
||||||
$theme = "Dark"
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$theme = "Auto"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($theme) {
|
|
||||||
"Auto" {
|
"Auto" {
|
||||||
$systemUsesDarkMode = Get-WinUtilToggleStatus WPFToggleDarkMode
|
$systemUsesDarkMode = Get-WinUtilToggleStatus WPFToggleDarkMode
|
||||||
if ($systemUsesDarkMode) {
|
if ($systemUsesDarkMode) {
|
||||||
Set-WinutilTheme -currentTheme "Dark"
|
$theme = "Dark"
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Set-WinutilTheme -currentTheme "Light"
|
$theme = "Light"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set-WinutilTheme -currentTheme $theme
|
||||||
$themeButtonIcon = [char]0xF08C
|
$themeButtonIcon = [char]0xF08C
|
||||||
Remove-Item $LightPreferencePath -Force -ErrorAction SilentlyContinue
|
|
||||||
Remove-Item $DarkPreferencePath -Force -ErrorAction SilentlyContinue
|
|
||||||
}
|
}
|
||||||
"Dark" {
|
"Dark" {
|
||||||
Set-WinutilTheme -currentTheme $theme
|
Set-WinutilTheme -currentTheme $sync.preferences.theme
|
||||||
$themeButtonIcon = [char]0xE708
|
$themeButtonIcon = [char]0xE708
|
||||||
$null = New-Item $DarkPreferencePath -Force
|
|
||||||
Remove-Item $LightPreferencePath -Force -ErrorAction SilentlyContinue
|
|
||||||
}
|
}
|
||||||
"Light" {
|
"Light" {
|
||||||
Set-WinutilTheme -currentTheme $theme
|
Set-WinutilTheme -currentTheme $sync.preferences.theme
|
||||||
$themeButtonIcon = [char]0xE706
|
$themeButtonIcon = [char]0xE706
|
||||||
$null = New-Item $LightPreferencePath -Force
|
|
||||||
Remove-Item $DarkPreferencePath -Force -ErrorAction SilentlyContinue
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
function Set-PackageManagerPreference {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Sets the currently selected package manager to global "ManagerPreference" in sync.
|
|
||||||
Also persists preference across Winutil restarts via preference.ini.
|
|
||||||
|
|
||||||
Reads from preference.ini if no argument sent.
|
|
||||||
|
|
||||||
.PARAMETER preferredPackageManager
|
|
||||||
The PackageManager that was selected.
|
|
||||||
#>
|
|
||||||
param(
|
|
||||||
[Parameter(Position=0, Mandatory=$false)]
|
|
||||||
[PackageManagers]$preferredPackageManager
|
|
||||||
)
|
|
||||||
|
|
||||||
$preferencePath = "$winutildir\preferences.ini"
|
|
||||||
$oldChocoPath = "$winutildir\preferChocolatey.ini"
|
|
||||||
|
|
||||||
#Try loading from file if no argument given.
|
|
||||||
if ($null -eq $preferredPackageManager) {
|
|
||||||
# Backwards compat for preferChocolatey.ini
|
|
||||||
if (Test-Path -Path $oldChocoPath) {
|
|
||||||
$preferredPackageManager = [PackageManagers]::Choco
|
|
||||||
Remove-Item -Path $oldChocoPath
|
|
||||||
}
|
|
||||||
elseif (Test-Path -Path $preferencePath) {
|
|
||||||
$potential = Get-Content -Path $preferencePath -TotalCount 1
|
|
||||||
$preferredPackageManager = [PackageManagers]$potential
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Write-Debug "Creating new preference file, defaulting to winget."
|
|
||||||
$preferredPackageManager = [PackageManagers]::Winget
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$sync["ManagerPreference"] = [PackageManagers]::$preferredPackageManager
|
|
||||||
Write-Debug "Manager Preference changed to '$($sync["ManagerPreference"])'"
|
|
||||||
|
|
||||||
|
|
||||||
# Write preference to file to persist across restarts.
|
|
||||||
Out-File -FilePath $preferencePath -InputObject $sync["ManagerPreference"]
|
|
||||||
}
|
|
||||||
83
functions/private/Set-Preferences.ps1
Normal file
83
functions/private/Set-Preferences.ps1
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
function Set-Preferences{
|
||||||
|
|
||||||
|
param(
|
||||||
|
[switch]$save=$false
|
||||||
|
)
|
||||||
|
|
||||||
|
# TODO delete this function sometime later
|
||||||
|
function Clean-OldPrefs{
|
||||||
|
if (Test-Path -Path "$winutildir\LightTheme.ini") {
|
||||||
|
$sync.preferences.theme = "Light"
|
||||||
|
Remove-Item -Path "$winutildir\LightTheme.ini"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path -Path "$winutildir\DarkTheme.ini") {
|
||||||
|
$sync.preferences.theme = "Dark"
|
||||||
|
Remove-Item -Path "$winutildir\DarkTheme.ini"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check old prefs, if its first line has no =, then absorb it as pm
|
||||||
|
if (Test-Path -Path $iniPath) {
|
||||||
|
$oldPM = Get-Content $iniPath
|
||||||
|
if ($oldPM -notlike "*=*") {
|
||||||
|
$sync.preferences.packagemanager = $oldPM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path -Path "$winutildir\preferChocolatey.ini") {
|
||||||
|
$sync.preferences.packagemanager = "Choco"
|
||||||
|
Remove-Item -Path "$winutildir\preferChocolatey.ini"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Save-Preferences{
|
||||||
|
$ini = ""
|
||||||
|
foreach($key in $sync.preferences.Keys) {
|
||||||
|
$pref = "$($key)=$($sync.preferences.$key)"
|
||||||
|
Write-Debug "Saving pref: $($pref)"
|
||||||
|
$ini = $ini + $pref + "`r`n"
|
||||||
|
}
|
||||||
|
$ini | Out-File $iniPath
|
||||||
|
}
|
||||||
|
|
||||||
|
function Load-Preferences{
|
||||||
|
Clean-OldPrefs
|
||||||
|
if (Test-Path -Path $iniPath) {
|
||||||
|
$iniData = Get-Content "$winutildir\preferences.ini"
|
||||||
|
foreach ($line in $iniData) {
|
||||||
|
if ($line -like "*=*") {
|
||||||
|
$arr = $line -split "=",-2
|
||||||
|
$key = $arr[0] -replace "\s",""
|
||||||
|
$value = $arr[1] -replace "\s",""
|
||||||
|
Write-Debug "Preference: Key = '$($key)' Value ='$($value)'"
|
||||||
|
$sync.preferences.$key = $value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# write defaults in case preferences dont exist
|
||||||
|
if ($null -eq $sync.preferences.theme) {
|
||||||
|
$sync.preferences.theme = "Auto"
|
||||||
|
}
|
||||||
|
if ($null -eq $sync.preferences.packagemanager) {
|
||||||
|
$sync.preferences.packagemanager = "Winget"
|
||||||
|
}
|
||||||
|
|
||||||
|
# convert packagemanager to enum
|
||||||
|
if ($sync.preferences.packagemanager -eq "Choco") {
|
||||||
|
$sync.preferences.packagemanager = [PackageManagers]::Choco
|
||||||
|
}
|
||||||
|
elseif ($sync.preferences.packagemanager -eq "Winget") {
|
||||||
|
$sync.preferences.packagemanager = [PackageManagers]::Winget
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$iniPath = "$winutildir\preferences.ini"
|
||||||
|
|
||||||
|
if ($save) {
|
||||||
|
Save-Preferences
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Load-Preferences
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,9 @@ function Update-WinUtilSelections {
|
|||||||
|
|
||||||
Write-Debug "JSON to import: $($flatJson)"
|
Write-Debug "JSON to import: $($flatJson)"
|
||||||
|
|
||||||
foreach ($cbkey in $flatJson) {
|
foreach ($item in $flatJson) {
|
||||||
|
# Ensure each item is treated as a string to handle PSCustomObject from JSON deserialization
|
||||||
|
$cbkey = [string]$item
|
||||||
$group = if ($cbkey.StartsWith("WPFInstall")) { "Install" }
|
$group = if ($cbkey.StartsWith("WPFInstall")) { "Install" }
|
||||||
elseif ($cbkey.StartsWith("WPFTweaks")) { "Tweaks" }
|
elseif ($cbkey.StartsWith("WPFTweaks")) { "Tweaks" }
|
||||||
elseif ($cbkey.StartsWith("WPFToggle")) { "Toggle" }
|
elseif ($cbkey.StartsWith("WPFToggle")) { "Toggle" }
|
||||||
@@ -26,7 +28,7 @@ function Update-WinUtilSelections {
|
|||||||
if (!$sync.selectedApps.Contains($cbkey)) {
|
if (!$sync.selectedApps.Contains($cbkey)) {
|
||||||
$sync.selectedApps.Add($cbkey)
|
$sync.selectedApps.Add($cbkey)
|
||||||
# The List type needs to be specified again, because otherwise Sort-Object will convert the list to a string if there is only a single entry
|
# The List type needs to be specified again, because otherwise Sort-Object will convert the list to a string if there is only a single entry
|
||||||
[System.Collections.Generic.List[pscustomobject]]$sync.selectedApps = $sync.SelectedApps | Sort-Object
|
[System.Collections.Generic.List[string]]$sync.selectedApps = $sync.SelectedApps | Sort-Object
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"Tweaks" {
|
"Tweaks" {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ function Invoke-WPFGetInstalled {
|
|||||||
if (($sync.ChocoRadioButton.IsChecked -eq $false) -and ((Test-WinUtilPackageManager -winget) -eq "not-installed") -and $checkbox -eq "winget") {
|
if (($sync.ChocoRadioButton.IsChecked -eq $false) -and ((Test-WinUtilPackageManager -winget) -eq "not-installed") -and $checkbox -eq "winget") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
$managerPreference = $sync["ManagerPreference"]
|
$managerPreference = $sync.preferences.packagemanager
|
||||||
|
|
||||||
Invoke-WPFRunspace -ParameterList @(("managerPreference", $managerPreference),("checkbox", $checkbox)) -ScriptBlock {
|
Invoke-WPFRunspace -ParameterList @(("managerPreference", $managerPreference),("checkbox", $checkbox)) -ScriptBlock {
|
||||||
param (
|
param (
|
||||||
|
|||||||
@@ -44,7 +44,13 @@ function Invoke-WPFImpex {
|
|||||||
try {
|
try {
|
||||||
$Config = ConfigDialog
|
$Config = ConfigDialog
|
||||||
if ($Config) {
|
if ($Config) {
|
||||||
$allConfs = $sync.selectedApps + $sync.selectedTweaks + $sync.selectedToggles + $sync.selectedFeatures
|
$allConfs = ($sync.selectedApps + $sync.selectedTweaks + $sync.selectedToggles + $sync.selectedFeatures) | ForEach-Object { [string]$_ }
|
||||||
|
if (-not $allConfs) {
|
||||||
|
[System.Windows.MessageBox]::Show(
|
||||||
|
"No settings are selected to export. Please select at least one app, tweak, toggle, or feature before exporting.",
|
||||||
|
"Nothing to Export", "OK", "Warning")
|
||||||
|
return
|
||||||
|
}
|
||||||
$jsonFile = $allConfs | ConvertTo-Json
|
$jsonFile = $allConfs | ConvertTo-Json
|
||||||
$jsonFile | Out-File $Config -Force
|
$jsonFile | Out-File $Config -Force
|
||||||
"iex ""& { `$(irm https://christitus.com/win) } -Config '$Config'""" | Set-Clipboard
|
"iex ""& { `$(irm https://christitus.com/win) } -Config '$Config'""" | Set-Clipboard
|
||||||
@@ -70,6 +76,21 @@ function Invoke-WPFImpex {
|
|||||||
# TODO how to handle old style? detected json type then flatten it in a func?
|
# TODO how to handle old style? detected json type then flatten it in a func?
|
||||||
# $flattenedJson = $jsonFile.PSObject.Properties.Where({ $_.Name -ne "Install" }).ForEach({ $_.Value })
|
# $flattenedJson = $jsonFile.PSObject.Properties.Where({ $_.Name -ne "Install" }).ForEach({ $_.Value })
|
||||||
$flattenedJson = $jsonFile
|
$flattenedJson = $jsonFile
|
||||||
|
|
||||||
|
if (-not $flattenedJson) {
|
||||||
|
[System.Windows.MessageBox]::Show(
|
||||||
|
"The selected file contains no settings to import. No changes have been made.",
|
||||||
|
"Empty Configuration", "OK", "Warning")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clear all existing selections before importing so the import replaces
|
||||||
|
# the current state rather than merging with it
|
||||||
|
$sync.selectedApps = [System.Collections.Generic.List[string]]::new()
|
||||||
|
$sync.selectedTweaks = [System.Collections.Generic.List[string]]::new()
|
||||||
|
$sync.selectedToggles = [System.Collections.Generic.List[string]]::new()
|
||||||
|
$sync.selectedFeatures = [System.Collections.Generic.List[string]]::new()
|
||||||
|
|
||||||
Update-WinUtilSelections -flatJson $flattenedJson
|
Update-WinUtilSelections -flatJson $flattenedJson
|
||||||
|
|
||||||
if (!$PARAM_NOUI) {
|
if (!$PARAM_NOUI) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ function Invoke-WPFInstall {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
$ManagerPreference = $sync["ManagerPreference"]
|
$ManagerPreference = $sync.preferences.packagemanager
|
||||||
|
|
||||||
$handle = Invoke-WPFRunspace -ParameterList @(("PackagesToInstall", $PackagesToInstall),("ManagerPreference", $ManagerPreference)) -ScriptBlock {
|
$handle = Invoke-WPFRunspace -ParameterList @(("PackagesToInstall", $PackagesToInstall),("ManagerPreference", $ManagerPreference)) -ScriptBlock {
|
||||||
param($PackagesToInstall, $ManagerPreference)
|
param($PackagesToInstall, $ManagerPreference)
|
||||||
|
|||||||
@@ -32,17 +32,17 @@ function Invoke-WPFPresets {
|
|||||||
$CheckBoxesToCheck = $sync.configs.preset.$preset
|
$CheckBoxesToCheck = $sync.configs.preset.$preset
|
||||||
}
|
}
|
||||||
|
|
||||||
# clear out the filtered pattern
|
# clear out the filtered pattern so applying a preset replaces the current
|
||||||
if (!$preset) {
|
# state rather than merging with it
|
||||||
switch ($checkboxfilterpattern) {
|
switch ($checkboxfilterpattern) {
|
||||||
"WPFTweak*" { $sync.selectedTweaks = [System.Collections.Generic.List[string]]::new() }
|
"WPFTweak*" { $sync.selectedTweaks = [System.Collections.Generic.List[string]]::new() }
|
||||||
"WPFInstall*" { $sync.selectedApps = [System.Collections.Generic.List[string]]::new() }
|
"WPFInstall*" { $sync.selectedApps = [System.Collections.Generic.List[string]]::new() }
|
||||||
"WPFeatures" { $sync.selectedFeatures = [System.Collections.Generic.List[string]]::new() }
|
"WPFeatures" { $sync.selectedFeatures = [System.Collections.Generic.List[string]]::new() }
|
||||||
"WPFToggle" { $sync.selectedToggles = [System.Collections.Generic.List[string]]::new() }
|
"WPFToggle" { $sync.selectedToggles = [System.Collections.Generic.List[string]]::new() }
|
||||||
default {}
|
default {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
|
if ($preset) {
|
||||||
Update-WinUtilSelections -flatJson $CheckBoxesToCheck
|
Update-WinUtilSelections -flatJson $CheckBoxesToCheck
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ function Invoke-WPFSelectedCheckboxesUpdate{
|
|||||||
if (!$sync.selectedApps.Contains($appKey)) {
|
if (!$sync.selectedApps.Contains($appKey)) {
|
||||||
$sync.selectedApps.Add($appKey)
|
$sync.selectedApps.Add($appKey)
|
||||||
# The List type needs to be specified again, because otherwise Sort-Object will convert the list to a string if there is only a single entry
|
# The List type needs to be specified again, because otherwise Sort-Object will convert the list to a string if there is only a single entry
|
||||||
[System.Collections.Generic.List[pscustomobject]]$sync.selectedApps = $sync.SelectedApps | Sort-Object
|
[System.Collections.Generic.List[string]]$sync.selectedApps = $sync.SelectedApps | Sort-Object
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ function Invoke-WPFUnInstall {
|
|||||||
|
|
||||||
if($confirm -eq "No") {return}
|
if($confirm -eq "No") {return}
|
||||||
|
|
||||||
$ManagerPreference = $sync["ManagerPreference"]
|
$ManagerPreference = $sync.preferences.packagemanager
|
||||||
|
|
||||||
Invoke-WPFRunspace -ParameterList @(("PackagesToUninstall", $PackagesToUninstall),("ManagerPreference", $ManagerPreference)) -ScriptBlock {
|
Invoke-WPFRunspace -ParameterList @(("PackagesToUninstall", $PackagesToUninstall),("ManagerPreference", $ManagerPreference)) -ScriptBlock {
|
||||||
param($PackagesToUninstall, $ManagerPreference)
|
param($PackagesToUninstall, $ManagerPreference)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ $sync.configs.applications.PSObject.Properties | ForEach-Object {
|
|||||||
$sync.configs.applicationsHashtable[$_.Name] = $_.Value
|
$sync.configs.applicationsHashtable[$_.Name] = $_.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
Set-PackageManagerPreference
|
Set-Preferences
|
||||||
|
|
||||||
if ($PARAM_NOUI) {
|
if ($PARAM_NOUI) {
|
||||||
Show-CTTLogo
|
Show-CTTLogo
|
||||||
@@ -154,7 +154,7 @@ $sync.Form.Add_Loaded({
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Invoke-WinutilThemeChange -init $true
|
Invoke-WinutilThemeChange -theme $sync.preferences.theme
|
||||||
|
|
||||||
|
|
||||||
# Now call the function with the final merged config
|
# Now call the function with the final merged config
|
||||||
@@ -177,10 +177,16 @@ Invoke-WPFUIElements -configVariable $sync.configs.feature -targetGridName "feat
|
|||||||
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {$sync["$("$($psitem.Name)")"] = $sync["Form"].FindName($psitem.Name)}
|
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {$sync["$("$($psitem.Name)")"] = $sync["Form"].FindName($psitem.Name)}
|
||||||
|
|
||||||
#Persist Package Manager preference across winutil restarts
|
#Persist Package Manager preference across winutil restarts
|
||||||
$sync.ChocoRadioButton.Add_Checked({Set-PackageManagerPreference Choco})
|
$sync.ChocoRadioButton.Add_Checked({
|
||||||
$sync.WingetRadioButton.Add_Checked({Set-PackageManagerPreference Winget})
|
$sync.preferences.packagemanager = [PackageManagers]::Choco
|
||||||
|
Set-Preferences -save
|
||||||
|
})
|
||||||
|
$sync.WingetRadioButton.Add_Checked({
|
||||||
|
$sync.preferences.packagemanager = [PackageManagers]::Winget
|
||||||
|
Set-Preferences -save
|
||||||
|
})
|
||||||
|
|
||||||
switch ($sync["ManagerPreference"]) {
|
switch ($sync.preferences.packagemanager) {
|
||||||
"Choco" {$sync.ChocoRadioButton.IsChecked = $true; break}
|
"Choco" {$sync.ChocoRadioButton.IsChecked = $true; break}
|
||||||
"Winget" {$sync.WingetRadioButton.IsChecked = $true; break}
|
"Winget" {$sync.WingetRadioButton.IsChecked = $true; break}
|
||||||
}
|
}
|
||||||
@@ -534,6 +540,10 @@ $sync["FontScalingApplyButton"].Add_Click({
|
|||||||
|
|
||||||
# ── Win11ISO Tab button handlers ──────────────────────────────────────────────
|
# ── Win11ISO Tab button handlers ──────────────────────────────────────────────
|
||||||
|
|
||||||
|
$sync["WPFTab5BT"].Add_Click({
|
||||||
|
$sync["Form"].Dispatcher.BeginInvoke([System.Windows.Threading.DispatcherPriority]::Background, [action]{ Invoke-WinUtilISOCheckExistingWork }) | Out-Null
|
||||||
|
})
|
||||||
|
|
||||||
$sync["WPFWin11ISOBrowseButton"].Add_Click({
|
$sync["WPFWin11ISOBrowseButton"].Add_Click({
|
||||||
Write-Debug "WPFWin11ISOBrowseButton clicked"
|
Write-Debug "WPFWin11ISOBrowseButton clicked"
|
||||||
Invoke-WinUtilISOBrowse
|
Invoke-WinUtilISOBrowse
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ $sync.PSScriptRoot = $PSScriptRoot
|
|||||||
$sync.version = "#{replaceme}"
|
$sync.version = "#{replaceme}"
|
||||||
$sync.configs = @{}
|
$sync.configs = @{}
|
||||||
$sync.Buttons = [System.Collections.Generic.List[PSObject]]::new()
|
$sync.Buttons = [System.Collections.Generic.List[PSObject]]::new()
|
||||||
|
$sync.preferences = @{}
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
$sync.selectedApps = [System.Collections.Generic.List[string]]::new()
|
$sync.selectedApps = [System.Collections.Generic.List[string]]::new()
|
||||||
$sync.selectedTweaks = [System.Collections.Generic.List[string]]::new()
|
$sync.selectedTweaks = [System.Collections.Generic.List[string]]::new()
|
||||||
|
|||||||
@@ -273,22 +273,43 @@
|
|||||||
<Style TargetType="ComboBox">
|
<Style TargetType="ComboBox">
|
||||||
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundColor}" />
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundColor}" />
|
||||||
<Setter Property="Background" Value="{DynamicResource ComboBoxBackgroundColor}" />
|
<Setter Property="Background" Value="{DynamicResource ComboBoxBackgroundColor}" />
|
||||||
|
<Setter Property="MinWidth" Value="{DynamicResource ButtonWidth}" />
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<ControlTemplate TargetType="ComboBox">
|
<ControlTemplate TargetType="ComboBox">
|
||||||
<Grid>
|
<Grid>
|
||||||
<ToggleButton x:Name="ToggleButton"
|
<Border x:Name="OuterBorder"
|
||||||
Background="{TemplateBinding Background}"
|
BorderBrush="{DynamicResource BorderColor}"
|
||||||
BorderBrush="{TemplateBinding Background}"
|
BorderThickness="1"
|
||||||
BorderThickness="0"
|
CornerRadius="{DynamicResource ButtonCornerRadius}"
|
||||||
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
Background="{TemplateBinding Background}">
|
||||||
ClickMode="Press">
|
<ToggleButton x:Name="ToggleButton"
|
||||||
<TextBlock Text="{TemplateBinding SelectionBoxItem}"
|
Background="Transparent"
|
||||||
Foreground="{TemplateBinding Foreground}"
|
BorderThickness="0"
|
||||||
Background="Transparent"
|
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2"
|
ClickMode="Press">
|
||||||
/>
|
<Grid>
|
||||||
</ToggleButton>
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="Auto"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<TextBlock Grid.Column="0"
|
||||||
|
Text="{TemplateBinding SelectionBoxItem}"
|
||||||
|
Foreground="{TemplateBinding Foreground}"
|
||||||
|
Background="Transparent"
|
||||||
|
HorizontalAlignment="Left" VerticalAlignment="Center"
|
||||||
|
Margin="6,3,2,3"/>
|
||||||
|
<Path Grid.Column="1"
|
||||||
|
Data="M 0,0 L 8,0 L 4,5 Z"
|
||||||
|
Fill="{TemplateBinding Foreground}"
|
||||||
|
Width="8" Height="5"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Stretch="Uniform"
|
||||||
|
Margin="4,0,6,0"/>
|
||||||
|
</Grid>
|
||||||
|
</ToggleButton>
|
||||||
|
</Border>
|
||||||
<Popup x:Name="Popup"
|
<Popup x:Name="Popup"
|
||||||
IsOpen="{TemplateBinding IsDropDownOpen}"
|
IsOpen="{TemplateBinding IsDropDownOpen}"
|
||||||
Placement="Bottom"
|
Placement="Bottom"
|
||||||
@@ -297,11 +318,11 @@
|
|||||||
PopupAnimation="Slide">
|
PopupAnimation="Slide">
|
||||||
<Border x:Name="DropDownBorder"
|
<Border x:Name="DropDownBorder"
|
||||||
Background="{TemplateBinding Background}"
|
Background="{TemplateBinding Background}"
|
||||||
BorderBrush="{TemplateBinding Foreground}"
|
BorderBrush="{DynamicResource BorderColor}"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
CornerRadius="4">
|
CornerRadius="4">
|
||||||
<ScrollViewer>
|
<ScrollViewer>
|
||||||
<ItemsPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2"/>
|
<ItemsPresenter HorizontalAlignment="Left" VerticalAlignment="Center" Margin="4,2"/>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</Border>
|
</Border>
|
||||||
</Popup>
|
</Popup>
|
||||||
@@ -1340,21 +1361,17 @@
|
|||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Win11ISO" Visibility="Collapsed" Name="WPFTab5">
|
<TabItem Header="Win11ISO" Visibility="Collapsed" Name="WPFTab5">
|
||||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Margin="{DynamicResource TabContentMargin}">
|
<Grid Name="Win11ISOPanel" Margin="{DynamicResource TabContentMargin}" Background="Transparent">
|
||||||
<Grid Background="Transparent" Name="Win11ISOPanel">
|
<Grid.RowDefinitions>
|
||||||
<Grid.RowDefinitions>
|
<RowDefinition Height="Auto"/> <!-- Steps 1-4 -->
|
||||||
<RowDefinition Height="Auto"/> <!-- Step 1: Select ISO -->
|
<RowDefinition Height="*"/> <!-- Log / Status -->
|
||||||
<RowDefinition Height="Auto"/> <!-- Step 2: Mount & Verify -->
|
</Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/> <!-- Step 3: Modify install.wim -->
|
|
||||||
<RowDefinition Height="Auto"/> <!-- Step 4: Output Options -->
|
|
||||||
<RowDefinition Height="Auto"/> <!-- Log / Status -->
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
<!-- Steps 1-4 -->
|
||||||
<!-- STEP 1 : Select Windows 11 ISO -->
|
<StackPanel Grid.Row="0">
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
||||||
<Border Grid.Row="0" Name="WPFWin11ISOSelectSection" Style="{StaticResource BorderStyle}">
|
<!-- ─── STEP 1 : Select Windows 11 ISO ─────────────── -->
|
||||||
<Grid Margin="5">
|
<Grid Name="WPFWin11ISOSelectSection" Margin="5" HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@@ -1441,16 +1458,12 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
|
||||||
|
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
<!-- ─── STEP 2 : Mount & Verify ISO ──────────────────── -->
|
||||||
<!-- STEP 2 : Mount & Verify ISO -->
|
<Grid Name="WPFWin11ISOMountSection"
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
Margin="5"
|
||||||
<Border Grid.Row="1"
|
Visibility="Collapsed"
|
||||||
Name="WPFWin11ISOMountSection"
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
Style="{StaticResource BorderStyle}"
|
|
||||||
Visibility="Collapsed">
|
|
||||||
<Grid Margin="5">
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto"/>
|
<ColumnDefinition Width="Auto"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@@ -1472,6 +1485,13 @@
|
|||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Width="Auto" Padding="12,0"
|
Width="Auto" Padding="12,0"
|
||||||
Height="{DynamicResource ButtonHeight}"/>
|
Height="{DynamicResource ButtonHeight}"/>
|
||||||
|
<CheckBox Name="WPFWin11ISOInjectDrivers"
|
||||||
|
Content="Inject current system drivers"
|
||||||
|
FontSize="{DynamicResource FontSize}"
|
||||||
|
Foreground="{DynamicResource MainForegroundColor}"
|
||||||
|
IsChecked="False"
|
||||||
|
Margin="0,8,0,0"
|
||||||
|
ToolTip="Exports all drivers from this machine and injects them into install.wim and boot.wim. Recommended for systems with unsupported NVMe or network controllers."/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<!-- Verification results panel -->
|
<!-- Verification results panel -->
|
||||||
@@ -1500,22 +1520,17 @@
|
|||||||
FontSize="{DynamicResource FontSize}"
|
FontSize="{DynamicResource FontSize}"
|
||||||
Foreground="{DynamicResource MainForegroundColor}"
|
Foreground="{DynamicResource MainForegroundColor}"
|
||||||
Background="{DynamicResource MainBackgroundColor}"
|
Background="{DynamicResource MainBackgroundColor}"
|
||||||
BorderBrush="{DynamicResource BorderColor}"
|
HorizontalAlignment="Left"
|
||||||
HorizontalAlignment="Stretch"
|
|
||||||
Margin="0,0,0,0"/>
|
Margin="0,0,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
|
||||||
|
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
<!-- ─── STEP 3 : Modify install.wim ───────────────────── -->
|
||||||
<!-- STEP 3 : Modify install.wim -->
|
<StackPanel Name="WPFWin11ISOModifySection"
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
Margin="5"
|
||||||
<Border Grid.Row="2"
|
Visibility="Collapsed"
|
||||||
Name="WPFWin11ISOModifySection"
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
Style="{StaticResource BorderStyle}"
|
|
||||||
Visibility="Collapsed">
|
|
||||||
<StackPanel Margin="5">
|
|
||||||
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
||||||
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,8">
|
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,8">
|
||||||
Step 3 - Modify install.wim
|
Step 3 - Modify install.wim
|
||||||
@@ -1534,15 +1549,12 @@
|
|||||||
Width="Auto" Padding="12,0"
|
Width="Auto" Padding="12,0"
|
||||||
Height="{DynamicResource ButtonHeight}"/>
|
Height="{DynamicResource ButtonHeight}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
|
||||||
|
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
<!-- ─── STEP 4 : Output Options ───────────────────────── -->
|
||||||
<!-- STEP 4 : Output Options -->
|
<StackPanel Name="WPFWin11ISOOutputSection"
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
Margin="5"
|
||||||
<Border Grid.Row="3"
|
Visibility="Collapsed"
|
||||||
Name="WPFWin11ISOOutputSection"
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
Style="{StaticResource BorderStyle}">
|
|
||||||
<StackPanel Margin="5">
|
|
||||||
<!-- Header row: title + Clean & Reset button -->
|
<!-- Header row: title + Clean & Reset button -->
|
||||||
<Grid Margin="0,0,0,12">
|
<Grid Margin="0,0,0,12">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -1579,7 +1591,7 @@
|
|||||||
Height="{DynamicResource ButtonHeight}"/>
|
Height="{DynamicResource ButtonHeight}"/>
|
||||||
<Button Grid.Column="2"
|
<Button Grid.Column="2"
|
||||||
Name="WPFWin11ISOChooseUSBButton"
|
Name="WPFWin11ISOChooseUSBButton"
|
||||||
Content="Write Directly to a USB Drive (erases drive)"
|
Content="Write Directly to a USB Drive (ERASES DRIVE)"
|
||||||
Foreground="OrangeRed"
|
Foreground="OrangeRed"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
Width="Auto" Padding="12,0"
|
Width="Auto" Padding="12,0"
|
||||||
@@ -1613,7 +1625,7 @@
|
|||||||
Margin="0,0,6,0"/>
|
Margin="0,0,6,0"/>
|
||||||
<Button Grid.Column="1"
|
<Button Grid.Column="1"
|
||||||
Name="WPFWin11ISORefreshUSBButton"
|
Name="WPFWin11ISORefreshUSBButton"
|
||||||
Content="↻ Refresh"
|
Content="Refresh"
|
||||||
Width="Auto" Padding="8,0"
|
Width="Auto" Padding="8,0"
|
||||||
Height="{DynamicResource ButtonHeight}"/>
|
Height="{DynamicResource ButtonHeight}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -1626,34 +1638,37 @@
|
|||||||
Margin="0,0,0,10"/>
|
Margin="0,0,0,10"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
|
||||||
|
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
</StackPanel>
|
||||||
<!-- Status / Log Output -->
|
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
||||||
<Border Grid.Row="4" Style="{StaticResource BorderStyle}">
|
|
||||||
<StackPanel>
|
|
||||||
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
||||||
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,6">
|
|
||||||
Status Log
|
|
||||||
</TextBlock>
|
|
||||||
<TextBox Name="WPFWin11ISOStatusLog"
|
|
||||||
IsReadOnly="True"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
VerticalScrollBarVisibility="Auto"
|
|
||||||
Height="140" Padding="6"
|
|
||||||
Background="{DynamicResource MainBackgroundColor}"
|
|
||||||
Foreground="{DynamicResource MainForegroundColor}"
|
|
||||||
BorderBrush="{DynamicResource BorderColor}"
|
|
||||||
BorderThickness="1"
|
|
||||||
Text="Ready. Please select a Windows 11 ISO to begin."/>
|
|
||||||
</StackPanel>
|
|
||||||
</Border>
|
|
||||||
|
|
||||||
|
<!-- Status Log (fills remaining height) -->
|
||||||
|
<Grid Grid.Row="1" Margin="5">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock Grid.Row="0"
|
||||||
|
FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
||||||
|
Foreground="{DynamicResource MainForegroundColor}"
|
||||||
|
Margin="0,0,0,4">
|
||||||
|
Status Log
|
||||||
|
</TextBlock>
|
||||||
|
<TextBox Grid.Row="1"
|
||||||
|
Name="WPFWin11ISOStatusLog"
|
||||||
|
IsReadOnly="True"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
VerticalScrollBarVisibility="Visible"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
Padding="6"
|
||||||
|
Background="{DynamicResource MainBackgroundColor}"
|
||||||
|
Foreground="{DynamicResource MainForegroundColor}"
|
||||||
|
BorderBrush="{DynamicResource BorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
Text="Ready. Please select a Windows 11 ISO to begin."/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
|
||||||
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</TabControl>
|
</TabControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
Reference in New Issue
Block a user