mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-07-07 13:43:50 -05:00
Compare commits
4 Commits
24.06.29
...
78178b0fba
Author | SHA1 | Date | |
---|---|---|---|
78178b0fba | |||
bea7726587 | |||
08847099b4 | |||
37b4706ae7 |
9
.gitattributes
vendored
9
.gitattributes
vendored
@ -1,12 +1,3 @@
|
||||
* text=auto
|
||||
|
||||
*.ps1 text eol=crlf
|
||||
*.json text eol=crlf
|
||||
*.cfg text eol=crlf
|
||||
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
|
||||
config/* diff
|
||||
config/applications.json diff
|
||||
*.json diff
|
18
.github/workflows/close-old-issues.yaml
vendored
18
.github/workflows/close-old-issues.yaml
vendored
@ -16,20 +16,8 @@ jobs:
|
||||
- name: Close inactive issues
|
||||
uses: actions/stale@v9.0.0
|
||||
with:
|
||||
# A list of labels to reference when looking through issues,
|
||||
# and only when one (or even more) of these labels are found..
|
||||
# then skip this issue, and never try to stale and/or close it.
|
||||
exempt-issue-labels: "Keep Issue Open"
|
||||
# Split it into two weeks, after one week the issue will be marked as stale,
|
||||
# after another week have pasted without any update.. the issue will then be closed.
|
||||
days-before-issue-stale: 7
|
||||
days-before-issue-close: 7
|
||||
# NEVER mark PRs as Stale or Close + this workflow should never have write permissions on PRs, EVER!
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
# Sends a message for both the Stale and Close events of an issue.
|
||||
stale-issue-message: "This issue was marked as stale because it has been inactive for 7 days"
|
||||
close-issue-message: "This issue was closed because it has been inactive for 7 days since it was marked as stale"
|
||||
# Make this field equal true if you want to test your configuration if it works correctly or not
|
||||
debug-only: false
|
||||
days-before-issue-close: 14
|
||||
close-issue-message: "This issue was closed because it has been inactive for 14 days"
|
||||
debug-only: false # Make this field equal true if you want to test your configuration if it works or not
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
1
.github/workflows/compile.yaml
vendored
1
.github/workflows/compile.yaml
vendored
@ -5,7 +5,6 @@ on:
|
||||
branches:
|
||||
- main
|
||||
- test*
|
||||
workflow_dispatch: # Manual trigger added
|
||||
|
||||
jobs:
|
||||
build-runspace:
|
||||
|
46
.github/workflows/pre-release.yaml
vendored
46
.github/workflows/pre-release.yaml
vendored
@ -1,46 +0,0 @@
|
||||
name: Pre-Release WinUtil
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Compile"] #Ensure Compile winget.ps1 is done
|
||||
types:
|
||||
- completed
|
||||
workflow_dispatch: # Manual trigger added
|
||||
|
||||
jobs:
|
||||
build-runspace:
|
||||
runs-on: windows-latest
|
||||
outputs:
|
||||
version: ${{ steps.extract_version.outputs.version }}
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Extract Version from winutil.ps1
|
||||
id: extract_version
|
||||
run: |
|
||||
$version = ''
|
||||
Get-Content ./winutil.ps1 -TotalCount 30 | ForEach-Object {
|
||||
if ($_ -match 'Version\s*:\s*(\d{2}\.\d{2}\.\d{2})') {
|
||||
$version = $matches[1]
|
||||
echo "version=$version" >> $GITHUB_ENV
|
||||
echo "::set-output name=version::$version"
|
||||
break
|
||||
}
|
||||
}
|
||||
if (-not $version) {
|
||||
Write-Error "Version not found in winutil.ps1"
|
||||
exit 1
|
||||
}
|
||||
shell: pwsh
|
||||
|
||||
- name: Create and Upload Release
|
||||
id: create_release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ steps.extract_version.outputs.version }}
|
||||
name: Pre-Release ${{ steps.extract_version.outputs.version }}
|
||||
files: ./winutil.ps1
|
||||
prerelease: true
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
6
.github/workflows/release.yaml
vendored
6
.github/workflows/release.yaml
vendored
@ -1,7 +1,10 @@
|
||||
name: Release WinUtil
|
||||
|
||||
on:
|
||||
workflow_dispatch: # Manual trigger added
|
||||
workflow_run:
|
||||
workflows: ["Compile"] #Ensure Compile winget.ps1 is done
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
build-runspace:
|
||||
@ -37,6 +40,5 @@ jobs:
|
||||
tag_name: ${{ steps.extract_version.outputs.version }}
|
||||
name: Release ${{ steps.extract_version.outputs.version }}
|
||||
files: ./winutil.ps1
|
||||
prerelease: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
26
Compile.ps1
26
Compile.ps1
@ -1,6 +1,5 @@
|
||||
param (
|
||||
[switch]$Debug,
|
||||
[switch]$Run
|
||||
[switch]$Debug
|
||||
)
|
||||
$OFS = "`r`n"
|
||||
$scriptname = "winutil.ps1"
|
||||
@ -68,11 +67,11 @@ Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-
|
||||
for ($i = 0; $i -lt $firstLevelJsonList.Count; $i += 1) {
|
||||
$firstLevelName = $firstLevelJsonList[$i]
|
||||
if ($jsonAsObject.$firstLevelName.content -ne $null) {
|
||||
$jsonAsObject.$firstLevelName.content = $jsonAsObject.$firstLevelName.content.replace('&','&').replace('“','“').replace('”','”').replace("'",''').replace('<','<').replace('>','>').replace('—','—')
|
||||
$jsonAsObject.$firstLevelName.content = $jsonAsObject.$firstLevelName.content.replace('&','&').replace('“','“').replace('”','”').replace("'",''').replace('<','<').replace('>','>')
|
||||
$jsonAsObject.$firstLevelName.content = $jsonAsObject.$firstLevelName.content.replace('''',"'") # resolves the Double Apostrophe caused by the first replace function in the main loop
|
||||
}
|
||||
if ($jsonAsObject.$firstLevelName.description -ne $null) {
|
||||
$jsonAsObject.$firstLevelName.description = $jsonAsObject.$firstLevelName.description.replace('&','&').replace('“','“').replace('”','”').replace("'",''').replace('<','<').replace('>','>').replace('—','—')
|
||||
$jsonAsObject.$firstLevelName.description = $jsonAsObject.$firstLevelName.description.replace('&','&').replace('“','“').replace('”','”').replace("'",''').replace('<','<').replace('>','>')
|
||||
$jsonAsObject.$firstLevelName.description = $jsonAsObject.$firstLevelName.description.replace('''',"'") # resolves the Double Apostrophe caused by the first replace function in the main loop
|
||||
}
|
||||
}
|
||||
@ -96,6 +95,13 @@ Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-
|
||||
$sync.configs.$($psitem.BaseName) = $json | convertfrom-json
|
||||
$script_content.Add($(Write-output "`$sync.configs.$($psitem.BaseName) = '$json' `| convertfrom-json" ))
|
||||
}
|
||||
Update-Progress "Adding: Config *.cfg" 45
|
||||
Get-ChildItem .\config | Where-Object {$PSItem.Extension -eq ".cfg"} | ForEach-Object {
|
||||
$script_content.Add($(Write-output "`$sync.configs.$($psitem.BaseName) = '$(Get-Content $PSItem.FullName)'"))
|
||||
}
|
||||
Get-ChildItem .\config | Where-Object {$PSItem.Extension -eq ".cfg"} | ForEach-Object {
|
||||
$script_content.Add($(Write-output "`$sync.configs.$($psitem.BaseName) = '$(Get-Content $PSItem.FullName)'"))
|
||||
}
|
||||
|
||||
$xaml = (Get-Content .\xaml\inputXML.xaml).replace("'","''")
|
||||
|
||||
@ -132,14 +138,4 @@ else {
|
||||
}
|
||||
|
||||
Set-Content -Path $scriptname -Value ($script_content -join "`r`n") -Encoding ascii
|
||||
Write-Progress -Activity "Compiling" -Completed
|
||||
|
||||
if ($run){
|
||||
try {
|
||||
Start-Process -FilePath "pwsh" -ArgumentList ".\$scriptname"
|
||||
}
|
||||
catch {
|
||||
Start-Process -FilePath "powershell" -ArgumentList ".\$scriptname"
|
||||
}
|
||||
|
||||
}
|
||||
Update-Progress "Finished" 100
|
||||
|
@ -13,9 +13,14 @@
|
||||
```
|
||||
Get-Service -Name "XboxGipSvc" | Set-Service -StartupType Automatic
|
||||
```
|
||||
|
||||
- Windows Insider Builds not installing: Telemetry needs to be enabled
|
||||
```
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0
|
||||
```
|
||||
- Winget requires interaction on first run: Manually type 'y' and 'enter' into the PowerShell console to continue
|
||||
- (Windows 11) Quick Settings no longer works: Launch the Script and click 'Enable Action Center'
|
||||
- Explorer no longer launches: Go to Control Panel, File Explorer Options, Change the 'Open File Explorer to' option to 'This PC'.
|
||||
- Script doesn't run/PowerShell crashes:
|
||||
1. Press Windows Key+X and select 'PowerShell (Admin)' (Windows 10) or 'Windows Terminal (Admin)' (Windows 11)
|
||||
2. Run:
|
||||
|
21
README.md
21
README.md
@ -1,7 +1,5 @@
|
||||
# Chris Titus Tech's Windows Utility
|
||||
|
||||
[](https://github.com/ChrisTitusTech/winutil/releases/latest)
|
||||
|
||||
This utility is a compilation of Windows tasks I perform on each Windows system I use. It is meant to streamline *installs*, debloat with *tweaks*, troubleshoot with *config*, and fix Windows *updates*. I am extremely picky about any contributions to keep this project clean and efficient.
|
||||
|
||||

|
||||
@ -24,19 +22,24 @@ Winutil must be run in Admin mode because it performs system-wide tweaks. To ach
|
||||
|
||||
#### Simple way
|
||||
|
||||
```ps1
|
||||
irm "https://christitus.com/win" | iex
|
||||
```
|
||||
Courtesy of the issue: [#144](/../../issues/144)
|
||||
irm https://christitus.com/win | iex
|
||||
```
|
||||
Courtesy of the issue raised at: [#144](/../../issues/144)
|
||||
|
||||
If this site is not reachable from your country, please try running it directly from GitHub.
|
||||
```ps1
|
||||
irm "https://github.com/ChrisTitusTech/winutil/releases/latest/download/winutil.ps1" | iex
|
||||
or by executing:
|
||||
```
|
||||
iwr -useb https://christitus.com/win | iex
|
||||
```
|
||||
|
||||
if for some reason this site is not reachable from your country please try running it directly from github (replace `RELEASE_TAG` with current release that you are interested in, for example `v2024.06.05`)
|
||||
```
|
||||
irm "https://github.com/ChrisTitusTech/winutil/releases/download/RELEASE_TAG/winutil.ps1" | iex
|
||||
```
|
||||
|
||||
#### Automation
|
||||
|
||||
Some features are available through automation. This allows you to save your config file pass it to Winutil walk away and come back to a finished system. Here is how you can set it up currently with Winutil >24.01.15
|
||||
Some features are avaliable through automation. This allows you to save your config file pass it to Winutil walk away and come back to a finished system. Here is how you can set it up currently with Winutil >24.01.15
|
||||
|
||||
1. On the Install Tab, click "Get Installed", this will get all installed apps **supported by Winutil** on the system
|
||||

|
||||
|
@ -151,6 +151,14 @@
|
||||
"link": "https://github.com/sharkdp/bat",
|
||||
"winget": "sharkdp.bat"
|
||||
},
|
||||
"bitcomet": {
|
||||
"category": "Utilities",
|
||||
"choco": "bitcomet",
|
||||
"content": "BitComet",
|
||||
"description": "BitComet is a free and open-source BitTorrent client that supports HTTP/FTP downloads and provides download management features.",
|
||||
"link": "https://www.bitcomet.com/",
|
||||
"winget": "CometNetwork.BitComet"
|
||||
},
|
||||
"bitwarden": {
|
||||
"category": "Utilities",
|
||||
"choco": "bitwarden",
|
||||
@ -175,6 +183,14 @@
|
||||
"link": "https://www.blender.org/",
|
||||
"winget": "BlenderFoundation.Blender"
|
||||
},
|
||||
"bluestacks": {
|
||||
"category": "Games",
|
||||
"choco": "bluestacks",
|
||||
"content": "Bluestacks",
|
||||
"description": "Bluestacks is an Android emulator for running mobile apps and games on a PC.",
|
||||
"link": "https://www.bluestacks.com/",
|
||||
"winget": "BlueStack.BlueStacks"
|
||||
},
|
||||
"brave": {
|
||||
"category": "Browsers",
|
||||
"choco": "brave",
|
||||
@ -199,14 +215,6 @@
|
||||
"link": "https://www.bulkrenameutility.co.uk",
|
||||
"winget": "TGRMNSoftware.BulkRenameUtility"
|
||||
},
|
||||
"AdvancedRenamer": {
|
||||
"category": "Utilities",
|
||||
"choco": "advanced-renamer",
|
||||
"content": "Advanced Renamer",
|
||||
"description": "Advanced Renamer is a program for renaming multiple files and folders at once. By configuring renaming methods the names can be manipulated in various ways.",
|
||||
"link": "https://www.advancedrenamer.com/",
|
||||
"winget": "XP9MD3S1KFCPH1"
|
||||
},
|
||||
"calibre": {
|
||||
"category": "Document",
|
||||
"choco": "calibre",
|
||||
@ -303,6 +311,14 @@
|
||||
"link": "https://copyq.readthedocs.io/",
|
||||
"winget": "hluk.CopyQ"
|
||||
},
|
||||
"ditto": {
|
||||
"category": "Utilities",
|
||||
"choco": "ditto",
|
||||
"content": "Ditto (Clipboard Manager)",
|
||||
"description": "Ditto is an extension to the Windows Clipboard. You copy something to the Clipboard and Ditto takes what you copied and stores it in a database to retrieve at a later time.",
|
||||
"link": "https://github.com/sabrogden/Ditto",
|
||||
"winget": "Ditto.Ditto"
|
||||
},
|
||||
"cpuz": {
|
||||
"category": "Utilities",
|
||||
"choco": "cpu-z",
|
||||
@ -373,7 +389,7 @@
|
||||
"content": "DevToys",
|
||||
"description": "DevToys is a collection of development-related utilities and tools for Windows. It includes tools for file management, code formatting, and productivity enhancements for developers.",
|
||||
"link": "https://devtoys.app/",
|
||||
"winget": "DevToys-app.DevToys"
|
||||
"winget": "9PGCV4V3BK4W"
|
||||
},
|
||||
"digikam": {
|
||||
"category": "Multimedia Tools",
|
||||
@ -396,7 +412,7 @@
|
||||
"choco": "ditto",
|
||||
"content": "Ditto",
|
||||
"description": "Ditto is an extension to the standard windows clipboard.",
|
||||
"link": "https://github.com/sabrogden/Ditto",
|
||||
"link": "https://ditto-cp.sourceforge.io/",
|
||||
"winget": "Ditto.Ditto"
|
||||
},
|
||||
"dockerdesktop": {
|
||||
@ -551,14 +567,6 @@
|
||||
"link": "https://www.falkon.org/",
|
||||
"winget": "KDE.Falkon"
|
||||
},
|
||||
"fastfetch": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
"content": "Fastfetch",
|
||||
"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/",
|
||||
"winget": "Fastfetch-cli.Fastfetch"
|
||||
},
|
||||
"ferdium": {
|
||||
"category": "Communications",
|
||||
"choco": "ferdium",
|
||||
@ -687,6 +695,14 @@
|
||||
"link": "https://www.freecadweb.org/",
|
||||
"winget": "FreeCAD.FreeCAD"
|
||||
},
|
||||
"orcaslicer": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "orcaslicer",
|
||||
"content": "OrcaSlicer",
|
||||
"description": "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)",
|
||||
"link": "https://github.com/SoftFever/OrcaSlicer",
|
||||
"winget": "SoftFever.OrcaSlicer"
|
||||
},
|
||||
"fxsound": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "fxsound",
|
||||
@ -733,7 +749,7 @@
|
||||
"content": "Git Extensions",
|
||||
"description": "Git Extensions is a graphical user interface for Git, providing additional features for easier source code management.",
|
||||
"link": "https://gitextensions.github.io/",
|
||||
"winget": "GitExtensionsTeam.GitExtensions"
|
||||
"winget": "Git.Git;GitExtensionsTeam.GitExtensions"
|
||||
},
|
||||
"githubcli": {
|
||||
"category": "Development",
|
||||
@ -741,7 +757,7 @@
|
||||
"content": "GitHub CLI",
|
||||
"description": "GitHub CLI is a command-line tool that simplifies working with GitHub directly from the terminal.",
|
||||
"link": "https://cli.github.com/",
|
||||
"winget": "GitHub.cli"
|
||||
"winget": "Git.Git;GitHub.cli"
|
||||
},
|
||||
"githubdesktop": {
|
||||
"category": "Development",
|
||||
@ -749,7 +765,7 @@
|
||||
"content": "GitHub Desktop",
|
||||
"description": "GitHub Desktop is a visual Git client that simplifies collaboration on GitHub repositories with an easy-to-use interface.",
|
||||
"link": "https://desktop.github.com/",
|
||||
"winget": "GitHub.GitHubDesktop"
|
||||
"winget": "Git.Git;GitHub.GitHubDesktop"
|
||||
},
|
||||
"gitkrakenclient": {
|
||||
"category": "Development",
|
||||
@ -783,20 +799,12 @@
|
||||
"link": "https://www.gog.com/galaxy",
|
||||
"winget": "GOG.Galaxy"
|
||||
},
|
||||
"gitify": {
|
||||
"category": "Development",
|
||||
"choco": "na",
|
||||
"content": "Gitify",
|
||||
"description": "GitHub notifications on your menu bar.",
|
||||
"link": "https://www.gitify.io/",
|
||||
"winget": "Gitify.Gitify"
|
||||
},
|
||||
"golang": {
|
||||
"category": "Development",
|
||||
"choco": "golang",
|
||||
"content": "Go",
|
||||
"description": "Go (or Golang) is a statically typed, compiled programming language designed for simplicity, reliability, and efficiency.",
|
||||
"link": "https://go.dev/",
|
||||
"content": "GoLang",
|
||||
"description": "GoLang (or Golang) is a statically typed, compiled programming language designed for simplicity, reliability, and efficiency.",
|
||||
"link": "https://golang.org/",
|
||||
"winget": "GoLang.Go"
|
||||
},
|
||||
"googledrive": {
|
||||
@ -967,6 +975,14 @@
|
||||
"link": "https://www.oracle.com/java/",
|
||||
"winget": "EclipseAdoptium.Temurin.18.JRE"
|
||||
},
|
||||
"java20": {
|
||||
"category": "Development",
|
||||
"choco": "na",
|
||||
"content": "Azul Zulu JDK 20",
|
||||
"description": "Azul Zulu JDK 20 is a distribution of the OpenJDK with long-term support, performance enhancements, and security updates.",
|
||||
"link": "https://www.azul.com/downloads/zulu-community/",
|
||||
"winget": "Azul.Zulu.20.JDK"
|
||||
},
|
||||
"java21": {
|
||||
"category": "Development",
|
||||
"choco": "na",
|
||||
@ -1271,17 +1287,9 @@
|
||||
"link": "https://www.msi.com/Landing/afterburner",
|
||||
"winget": "Guru3D.Afterburner"
|
||||
},
|
||||
"mullvadvpn": {
|
||||
"category": "Pro Tools",
|
||||
"choco": "mullvad-app",
|
||||
"content": "Mullvad VPN",
|
||||
"description": "This is the VPN client software for the Mullvad VPN service.",
|
||||
"link": "https://github.com/mullvad/mullvadvpn-app",
|
||||
"winget": "MullvadVPN.MullvadVPN"
|
||||
},
|
||||
"BorderlessGaming": {
|
||||
"category": "Utilities",
|
||||
"choco": "borderlessgaming",
|
||||
"choco": "na",
|
||||
"content": "Borderless Gaming",
|
||||
"description": "Play your favorite games in a borderless window; no more time consuming alt-tabs.",
|
||||
"link": "https://github.com/Codeusa/Borderless-Gaming",
|
||||
@ -1295,6 +1303,14 @@
|
||||
"link": "https://sourceforge.net/projects/equalizerapo",
|
||||
"winget": "na"
|
||||
},
|
||||
"FreeFileSync": {
|
||||
"category": "Utilities",
|
||||
"choco": "freefilesync",
|
||||
"content": "FreeFileSync",
|
||||
"description": "Synchronize Files and Folders",
|
||||
"link": "https://freefilesync.org",
|
||||
"winget": "na"
|
||||
},
|
||||
"CompactGUI": {
|
||||
"category": "Utilities",
|
||||
"choco": "compactgui",
|
||||
@ -1343,14 +1359,6 @@
|
||||
"link": "https://www.mp3tag.de/en/",
|
||||
"winget": "Mp3tag.Mp3tag"
|
||||
},
|
||||
"tagscanner": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "tagscanner",
|
||||
"content": "TagScanner (Tag Scanner)",
|
||||
"description": "TagScanner is a powerful tool for organizing and managing your music collection",
|
||||
"link": "https://www.xdlab.ru/en/",
|
||||
"winget": "SergeySerkov.TagScanner"
|
||||
},
|
||||
"nanazip": {
|
||||
"category": "Utilities",
|
||||
"choco": "nanazip",
|
||||
@ -1655,14 +1663,6 @@
|
||||
"link": "https://www.plex.tv/your-media/",
|
||||
"winget": "Plex.PlexMediaServer"
|
||||
},
|
||||
"plexdesktop": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "plex",
|
||||
"content": "Plex Desktop",
|
||||
"description": "Plex Desktop for Windows is the front end for Plex Media Server.",
|
||||
"link": "https://www.plex.tv",
|
||||
"winget": "Plex.Plex"
|
||||
},
|
||||
"Portmaster": {
|
||||
"category": "Pro Tools",
|
||||
"choco": "portmaster",
|
||||
@ -1751,14 +1751,6 @@
|
||||
"link": "https://docs.microsoft.com/en-us/sysinternals/downloads/procmon",
|
||||
"winget": "Microsoft.Sysinternals.ProcessMonitor"
|
||||
},
|
||||
"orcaslicer": {
|
||||
"category": "Utilities",
|
||||
"choco": "orcaslicer",
|
||||
"content": "OrcaSlicer",
|
||||
"description": "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)",
|
||||
"link": "https://github.com/SoftFever/OrcaSlicer",
|
||||
"winget": "SoftFever.OrcaSlicer"
|
||||
},
|
||||
"prucaslicer": {
|
||||
"category": "Utilities",
|
||||
"choco": "prusaslicer",
|
||||
@ -1799,14 +1791,6 @@
|
||||
"link": "https://www.qbittorrent.org/",
|
||||
"winget": "qBittorrent.qBittorrent"
|
||||
},
|
||||
"transmission": {
|
||||
"category": "Utilities",
|
||||
"choco": "transmission",
|
||||
"content": "Transmission",
|
||||
"description": "Transmission is a cross-platform BitTorrent client that is open source, easy, powerful, and lean.",
|
||||
"link": "https://transmissionbt.com/",
|
||||
"winget": "Transmission.Transmission"
|
||||
},
|
||||
"tixati": {
|
||||
"category": "Utilities",
|
||||
"choco": "tixati.portable",
|
||||
@ -1847,14 +1831,6 @@
|
||||
"link": "https://www.revouninstaller.com/",
|
||||
"winget": "RevoUninstaller.RevoUninstaller"
|
||||
},
|
||||
"WiseProgramUninstaller": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
"content": "Wise Program Uninstaller (WiseCleaner)",
|
||||
"description": "Wise Program Uninstaller is the perfect solution for uninstalling Windows programs, allowing you to uninstall applications quickly and completely using its simple and user-friendly interface.",
|
||||
"link": "https://www.wisecleaner.com/wise-program-uninstaller.html",
|
||||
"winget": "WiseCleaner.WiseProgramUninstaller"
|
||||
},
|
||||
"revolt": {
|
||||
"category": "Communications",
|
||||
"choco": "na",
|
||||
@ -2215,14 +2191,6 @@
|
||||
"link": "https://github.com/thonny/thonny",
|
||||
"winget": "AivarAnnamaa.Thonny"
|
||||
},
|
||||
"MuEditor": {
|
||||
"category": "Development",
|
||||
"choco": "na",
|
||||
"content": "Code With Mu (Mu Editor)",
|
||||
"description": "Mu is a Python code editor for beginner programmers",
|
||||
"link": "https://codewith.mu/",
|
||||
"winget": "Mu.Mu"
|
||||
},
|
||||
"thorium": {
|
||||
"category": "Browsers",
|
||||
"choco": "na",
|
||||
@ -2407,14 +2375,6 @@
|
||||
"link": "https://voicemeeter.com/",
|
||||
"winget": "VB-Audio.Voicemeeter"
|
||||
},
|
||||
"VoicemeeterPotato": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "voicemeeter-potato",
|
||||
"content": "Voicemeeter Potato",
|
||||
"description": "Voicemeeter Potato is the ultimate version of the Voicemeeter Audio Mixer Application endowed with Virtual Audio Device to mix and manage any audio sources from or to any audio devices or applications.",
|
||||
"link": "https://voicemeeter.com/",
|
||||
"winget": "VB-Audio.Voicemeeter.Potato"
|
||||
},
|
||||
"vrdesktopstreamer": {
|
||||
"category": "Games",
|
||||
"choco": "na",
|
||||
@ -2429,7 +2389,7 @@
|
||||
"content": "VS Code",
|
||||
"description": "Visual Studio Code is a free, open-source code editor with support for multiple programming languages.",
|
||||
"link": "https://code.visualstudio.com/",
|
||||
"winget": "Microsoft.VisualStudioCode"
|
||||
"winget": "Git.Git;Microsoft.VisualStudioCode"
|
||||
},
|
||||
"vscodium": {
|
||||
"category": "Development",
|
||||
@ -2437,7 +2397,7 @@
|
||||
"content": "VS Codium",
|
||||
"description": "VSCodium is a community-driven, freely-licensed binary distribution of Microsoft's VS Code.",
|
||||
"link": "https://vscodium.com/",
|
||||
"winget": "VSCodium.VSCodium"
|
||||
"winget": "Git.Git;VSCodium.VSCodium"
|
||||
},
|
||||
"waterfox": {
|
||||
"category": "Browsers",
|
||||
@ -2463,6 +2423,14 @@
|
||||
"link": "https://wezfurlong.org/wezterm/index.html",
|
||||
"winget": "wez.wezterm"
|
||||
},
|
||||
"windirstat": {
|
||||
"category": "Utilities",
|
||||
"choco": "windirstat",
|
||||
"content": "WinDirStat",
|
||||
"description": "WinDirStat is a disk usage statistics viewer and cleanup tool for Windows.",
|
||||
"link": "https://windirstat.net/",
|
||||
"winget": "WinDirStat.WinDirStat"
|
||||
},
|
||||
"windowspchealth": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
@ -2471,14 +2439,6 @@
|
||||
"link": "https://support.microsoft.com/en-us/windows/how-to-use-the-pc-health-check-app-9c8abd9b-03ba-4e67-81ef-36f37caa7844",
|
||||
"winget": "Microsoft.WindowsPCHealthCheck"
|
||||
},
|
||||
"WindowGrid": {
|
||||
"category": "Utilities",
|
||||
"choco": "windowgrid",
|
||||
"content": "WindowGrid",
|
||||
"description": "WindowGrid is a modern window management program for Windows that allows the user to quickly and easily layout their windows on a dynamic grid using just the mouse.",
|
||||
"link": "http://windowgrid.net/",
|
||||
"winget": "na"
|
||||
},
|
||||
"wingetui": {
|
||||
"category": "Utilities",
|
||||
"choco": "wingetui",
|
||||
@ -2543,14 +2503,6 @@
|
||||
"link": "https://toys.wisecleaner.com/",
|
||||
"winget": "WiseCleaner.WiseToys"
|
||||
},
|
||||
"TeraCopy": {
|
||||
"category": "Utilities",
|
||||
"choco": "TeraCopy",
|
||||
"content": "TeraCopy",
|
||||
"description": "Copy your files faster and more securely",
|
||||
"link": "https://codesector.com/teracopy",
|
||||
"winget": "CodeSector.TeraCopy"
|
||||
},
|
||||
"wizfile": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
@ -2775,14 +2727,6 @@
|
||||
"link": "https://github.com/AutoDarkMode/Windows-Auto-Night-Mode",
|
||||
"winget": "Armin2208.WindowsAutoNightMode"
|
||||
},
|
||||
"AmbieWhiteNoise": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
"content": "Ambie White Noise",
|
||||
"description": "Ambie is the ultimate app to help you focus, study, or relax. We use white noise and nature sounds combined with an innovative focus timer to keep you concentrated on doing your best work.",
|
||||
"link": "https://ambieapp.com/",
|
||||
"winget": "9P07XNM5CHP0"
|
||||
},
|
||||
"magicwormhole": {
|
||||
"category": "Utilities",
|
||||
"choco": "magic-wormhole",
|
||||
@ -2791,14 +2735,6 @@
|
||||
"link": "https://github.com/magic-wormhole/magic-wormhole",
|
||||
"winget": "magic-wormhole.magic-wormhole"
|
||||
},
|
||||
"croc": {
|
||||
"category": "Utilities",
|
||||
"choco": "croc",
|
||||
"content": "croc",
|
||||
"description": "Easily and securely send things from one computer to another.",
|
||||
"link": "https://github.com/schollz/croc",
|
||||
"winget": "schollz.croc"
|
||||
},
|
||||
"qgis": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "qgis",
|
||||
@ -2850,19 +2786,11 @@
|
||||
"ForceAutoHDR": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
"content": "ForceAutoHDR",
|
||||
"content": "GUI That Forces Auto HDR In Unsupported Games",
|
||||
"description": "ForceAutoHDR simplifies the process of adding games to the AutoHDR list in the Windows Registry",
|
||||
"link": "https://github.com/7gxycn08/ForceAutoHDR",
|
||||
"winget": "ForceAutoHDR.7gxycn08"
|
||||
},
|
||||
"JoyToKey": {
|
||||
"category": "Utilities",
|
||||
"choco": "joytokey",
|
||||
"content": "JoyToKey",
|
||||
"description": "enables PC game controllers to emulate the keyboard and mouse input",
|
||||
"link": "https://joytokey.net/en/",
|
||||
"winget": "JTKsoftware.JoyToKey"
|
||||
},
|
||||
"nditools": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "na",
|
||||
@ -2870,37 +2798,5 @@
|
||||
"description":"NDI, or Network Device Interface, is a video connectivity standard that enables multimedia systems to identify and communicate with one another over IP and to encode, transmit, and receive high-quality, low latency, frame-accurate video and audio, and exchange metadata in real-time.",
|
||||
"link": "https://ndi.video/",
|
||||
"winget": "NDI.NDITools"
|
||||
},
|
||||
"kicad": {
|
||||
"category": "Pro Tools",
|
||||
"choco": "na",
|
||||
"content": "Kicad",
|
||||
"description":"Kicad is an open-source EDA tool. It's a good starting point for those who want to do electrical design and is even used by professionals in the industry.",
|
||||
"link": "https://www.kicad.org/",
|
||||
"winget": "KiCad.KiCad"
|
||||
},
|
||||
"FormatFactory": {
|
||||
"category": "Utilities",
|
||||
"choco": "formatfactory",
|
||||
"content": "Format Factory",
|
||||
"description":"FormatFactory is an ad-supported freeware multimedia converter that can convert video, audio, and picture files. It is also capable of ripping DVDs and CDs to other file formats, as well as creating .iso images. It can also join multiple video files together into one.",
|
||||
"link": "http://www.pcfreetime.com/formatfactory/",
|
||||
"winget": "na"
|
||||
},
|
||||
"dropox": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
"content": "Dropbox",
|
||||
"description":"The Dropbox desktop app! Save hard drive space, share and edit files and send for signature – all without the distraction of countless browser tabs.",
|
||||
"link": "https://www.dropbox.com/en_GB/desktop",
|
||||
"winget": "Dropbox.Dropbox"
|
||||
},
|
||||
"OFGB": {
|
||||
"category": "Utilities",
|
||||
"choco": "ofgb",
|
||||
"content": "OFGB (Oh Frick Go Back)",
|
||||
"description":"GUI Tool To Removes Ads From Various Places Around Windows 11",
|
||||
"link": "https://github.com/xM4ddy/OFGB",
|
||||
"winget": "xM4ddy.OFGB"
|
||||
}
|
||||
}
|
||||
|
227
config/ooshutup10_factory.cfg
Normal file
227
config/ooshutup10_factory.cfg
Normal file
@ -0,0 +1,227 @@
|
||||
############################################################################
|
||||
# This file was created with O&O ShutUp10++ V1.9.1436
|
||||
# and can be imported onto another computer.
|
||||
#
|
||||
# Download the application at https://www.oo-software.com/shutup10
|
||||
# You can then import the file from within the program.
|
||||
#
|
||||
# Alternatively you can import it automatically over a command line.
|
||||
# Simply use the following parameter:
|
||||
# OOSU10.exe <path to file>
|
||||
#
|
||||
# Selecting the Option /quiet ends the app right after the import and the
|
||||
# user does not get any feedback about the import.
|
||||
#
|
||||
# We are always happy to answer any questions you may have!
|
||||
# © 2015-2023 O&O Software GmbH, Berlin. All rights reserved.
|
||||
# https://www.oo-software.com/
|
||||
############################################################################
|
||||
|
||||
P001 -
|
||||
P002 -
|
||||
P003 -
|
||||
P004 -
|
||||
P005 -
|
||||
P006 -
|
||||
P008 -
|
||||
P026 -
|
||||
P027 -
|
||||
P028 -
|
||||
P064 -
|
||||
P065 -
|
||||
P066 -
|
||||
P067 -
|
||||
P070 -
|
||||
P069 -
|
||||
P009 -
|
||||
P010 -
|
||||
P015 -
|
||||
P068 -
|
||||
P016 -
|
||||
A001 -
|
||||
A002 -
|
||||
A003 -
|
||||
A004 -
|
||||
A006 -
|
||||
A005 -
|
||||
P007 -
|
||||
P036 -
|
||||
P025 -
|
||||
P033 -
|
||||
P023 -
|
||||
P056 -
|
||||
P057 -
|
||||
P012 -
|
||||
P034 -
|
||||
P013 -
|
||||
P035 -
|
||||
P062 -
|
||||
P063 -
|
||||
P081 -
|
||||
P047 -
|
||||
P019 -
|
||||
P048 -
|
||||
P049 -
|
||||
P020 -
|
||||
P037 -
|
||||
P011 -
|
||||
P038 -
|
||||
P050 -
|
||||
P051 -
|
||||
P018 -
|
||||
P039 -
|
||||
P021 -
|
||||
P040 -
|
||||
P022 -
|
||||
P041 -
|
||||
P014 -
|
||||
P042 -
|
||||
P052 -
|
||||
P053 -
|
||||
P054 -
|
||||
P055 -
|
||||
P029 -
|
||||
P043 -
|
||||
P030 -
|
||||
P044 -
|
||||
P031 -
|
||||
P045 -
|
||||
P032 -
|
||||
P046 -
|
||||
P058 -
|
||||
P059 -
|
||||
P060 -
|
||||
P061 -
|
||||
P071 -
|
||||
P072 -
|
||||
P073 -
|
||||
P074 -
|
||||
P075 -
|
||||
P076 -
|
||||
P077 -
|
||||
P078 -
|
||||
P079 -
|
||||
P080 -
|
||||
P024 -
|
||||
S001 -
|
||||
S002 -
|
||||
S003 -
|
||||
S008 -
|
||||
E101 -
|
||||
E201 -
|
||||
E115 -
|
||||
E215 -
|
||||
E118 -
|
||||
E218 -
|
||||
E107 -
|
||||
E207 -
|
||||
E111 -
|
||||
E211 -
|
||||
E112 -
|
||||
E212 -
|
||||
E109 -
|
||||
E209 -
|
||||
E121 -
|
||||
E221 -
|
||||
E103 -
|
||||
E203 -
|
||||
E123 -
|
||||
E223 -
|
||||
E124 -
|
||||
E224 -
|
||||
E128 -
|
||||
E228 -
|
||||
E119 -
|
||||
E219 -
|
||||
E120 -
|
||||
E220 -
|
||||
E122 -
|
||||
E222 -
|
||||
E125 -
|
||||
E225 -
|
||||
E126 -
|
||||
E226 -
|
||||
E106 -
|
||||
E206 -
|
||||
E127 -
|
||||
E227 -
|
||||
E001 -
|
||||
E002 -
|
||||
E003 -
|
||||
E008 -
|
||||
E007 -
|
||||
E010 -
|
||||
E011 +
|
||||
E012 +
|
||||
E009 -
|
||||
E004 -
|
||||
E005 -
|
||||
E013 -
|
||||
E014 -
|
||||
E006 -
|
||||
Y001 -
|
||||
Y002 -
|
||||
Y003 -
|
||||
Y004 -
|
||||
Y005 -
|
||||
Y006 -
|
||||
Y007 -
|
||||
C012 -
|
||||
C002 -
|
||||
C013 -
|
||||
C007 -
|
||||
C008 -
|
||||
C009 -
|
||||
C010 -
|
||||
C011 -
|
||||
C014 -
|
||||
C015 -
|
||||
C101 -
|
||||
C201 -
|
||||
C102 -
|
||||
L001 -
|
||||
L003 -
|
||||
L004 -
|
||||
L005 -
|
||||
U001 -
|
||||
U004 -
|
||||
U005 -
|
||||
U006 -
|
||||
U007 -
|
||||
W001 -
|
||||
W011 -
|
||||
W004 -
|
||||
W005 -
|
||||
W010 -
|
||||
W009 -
|
||||
P017 -
|
||||
W006 -
|
||||
W008 -
|
||||
M006 -
|
||||
M011 -
|
||||
M010 -
|
||||
O003 -
|
||||
O001 -
|
||||
S012 -
|
||||
S013 -
|
||||
S014 -
|
||||
K001 -
|
||||
K002 -
|
||||
K005 -
|
||||
M003 -
|
||||
M015 -
|
||||
M016 -
|
||||
M017 -
|
||||
M018 -
|
||||
M019 -
|
||||
M020 -
|
||||
M021 -
|
||||
M022 -
|
||||
M001 -
|
||||
M004 -
|
||||
M005 -
|
||||
M024 -
|
||||
M012 -
|
||||
M013 -
|
||||
M014 -
|
||||
N001 -
|
231
config/ooshutup10_recommended.cfg
Normal file
231
config/ooshutup10_recommended.cfg
Normal file
@ -0,0 +1,231 @@
|
||||
############################################################################
|
||||
# This file was created with O&O ShutUp10++ V1.9.1438
|
||||
# and can be imported onto another computer.
|
||||
#
|
||||
# Download the application at https://www.oo-software.com/shutup10
|
||||
# You can then import the file from within the program.
|
||||
#
|
||||
# Alternatively you can import it automatically over a command line.
|
||||
# Simply use the following parameter:
|
||||
# OOSU10.exe <path to file>
|
||||
#
|
||||
# Selecting the Option /quiet ends the app right after the import and the
|
||||
# user does not get any feedback about the import.
|
||||
#
|
||||
# We are always happy to answer any questions you may have!
|
||||
# © 2015-2024 O&O Software GmbH, Berlin. All rights reserved.
|
||||
# https://www.oo-software.com/
|
||||
############################################################################
|
||||
|
||||
P001 +
|
||||
P002 +
|
||||
P003 +
|
||||
P004 +
|
||||
P005 +
|
||||
P006 +
|
||||
P008 +
|
||||
P026 +
|
||||
P027 +
|
||||
P028 +
|
||||
P064 +
|
||||
P065 +
|
||||
P066 +
|
||||
P067 +
|
||||
P070 +
|
||||
P069 +
|
||||
P009 -
|
||||
P010 +
|
||||
P015 +
|
||||
P068 -
|
||||
P016 -
|
||||
A001 +
|
||||
A002 +
|
||||
A003 +
|
||||
A004 +
|
||||
A006 +
|
||||
A005 +
|
||||
P007 +
|
||||
P036 +
|
||||
P025 +
|
||||
P033 +
|
||||
P023 +
|
||||
P056 +
|
||||
P057 -
|
||||
P012 -
|
||||
P034 -
|
||||
P013 -
|
||||
P035 -
|
||||
P062 -
|
||||
P063 -
|
||||
P081 -
|
||||
P047 -
|
||||
P019 -
|
||||
P048 -
|
||||
P049 -
|
||||
P020 -
|
||||
P037 -
|
||||
P011 -
|
||||
P038 -
|
||||
P050 -
|
||||
P051 -
|
||||
P018 -
|
||||
P039 -
|
||||
P021 -
|
||||
P040 -
|
||||
P022 -
|
||||
P041 -
|
||||
P014 -
|
||||
P042 -
|
||||
P052 -
|
||||
P053 -
|
||||
P054 -
|
||||
P055 -
|
||||
P029 -
|
||||
P043 -
|
||||
P030 -
|
||||
P044 -
|
||||
P031 -
|
||||
P045 -
|
||||
P032 -
|
||||
P046 -
|
||||
P058 -
|
||||
P059 -
|
||||
P060 -
|
||||
P061 -
|
||||
P071 -
|
||||
P072 -
|
||||
P073 -
|
||||
P074 -
|
||||
P075 -
|
||||
P076 -
|
||||
P077 -
|
||||
P078 -
|
||||
P079 -
|
||||
P080 -
|
||||
P024 +
|
||||
S001 +
|
||||
S002 +
|
||||
S003 +
|
||||
S008 -
|
||||
E101 +
|
||||
E201 +
|
||||
E115 +
|
||||
E215 +
|
||||
E118 +
|
||||
E218 +
|
||||
E107 +
|
||||
E207 +
|
||||
E111 +
|
||||
E211 +
|
||||
E112 +
|
||||
E212 +
|
||||
E109 +
|
||||
E209 +
|
||||
E121 +
|
||||
E221 +
|
||||
E103 +
|
||||
E203 +
|
||||
E123 +
|
||||
E223 +
|
||||
E124 +
|
||||
E224 +
|
||||
E128 +
|
||||
E228 +
|
||||
E119 -
|
||||
E219 -
|
||||
E120 -
|
||||
E220 -
|
||||
E122 -
|
||||
E222 -
|
||||
E125 -
|
||||
E225 -
|
||||
E126 -
|
||||
E226 -
|
||||
E106 -
|
||||
E206 -
|
||||
E127 -
|
||||
E227 -
|
||||
E001 +
|
||||
E002 +
|
||||
E003 +
|
||||
E008 +
|
||||
E007 +
|
||||
E010 +
|
||||
E011 +
|
||||
E012 +
|
||||
E009 -
|
||||
E004 -
|
||||
E005 -
|
||||
E013 -
|
||||
E014 -
|
||||
E006 -
|
||||
Y001 +
|
||||
Y002 +
|
||||
Y003 +
|
||||
Y004 +
|
||||
Y005 +
|
||||
Y006 +
|
||||
Y007 +
|
||||
C012 +
|
||||
C002 +
|
||||
C013 +
|
||||
C007 +
|
||||
C008 +
|
||||
C009 +
|
||||
C010 +
|
||||
C011 +
|
||||
C014 +
|
||||
C015 +
|
||||
C101 +
|
||||
C201 +
|
||||
C102 +
|
||||
C103 +
|
||||
C203 +
|
||||
L001 +
|
||||
L003 +
|
||||
L004 -
|
||||
L005 -
|
||||
U001 +
|
||||
U004 +
|
||||
U005 +
|
||||
U006 +
|
||||
U007 +
|
||||
W001 +
|
||||
W011 +
|
||||
W004 -
|
||||
W005 -
|
||||
W010 -
|
||||
W009 -
|
||||
P017 +
|
||||
W006 -
|
||||
W008 -
|
||||
M006 +
|
||||
M011 -
|
||||
M010 +
|
||||
O003 -
|
||||
O001 -
|
||||
S012 -
|
||||
S013 -
|
||||
S014 -
|
||||
K001 +
|
||||
K002 +
|
||||
K005 +
|
||||
M003 +
|
||||
M015 +
|
||||
M016 +
|
||||
M017 -
|
||||
M018 +
|
||||
M019 -
|
||||
M020 +
|
||||
M021 +
|
||||
M022 +
|
||||
M001 +
|
||||
M004 +
|
||||
M005 +
|
||||
M024 +
|
||||
M026 +
|
||||
M027 +
|
||||
M012 -
|
||||
M013 -
|
||||
M014 -
|
||||
N001 -
|
@ -1,11 +1,11 @@
|
||||
{
|
||||
"Standard": [
|
||||
"WPFTweaksAH",
|
||||
"WPFTweaksConsumerFeatures",
|
||||
"WPFTweaksDVR",
|
||||
"WPFTweaksHiber",
|
||||
"WPFTweaksHome",
|
||||
"WPFTweaksLoc",
|
||||
"WPFTweaksOO",
|
||||
"WPFTweaksServices",
|
||||
"WPFTweaksStorage",
|
||||
"WPFTweaksTele",
|
||||
@ -17,8 +17,8 @@
|
||||
"WPFTweaksTeredo"
|
||||
],
|
||||
"Minimal": [
|
||||
"WPFTweaksConsumerFeatures",
|
||||
"WPFTweaksHome",
|
||||
"WPFTweaksOO",
|
||||
"WPFTweaksServices",
|
||||
"WPFTweaksTele"
|
||||
]
|
||||
|
@ -58,7 +58,7 @@
|
||||
"powercfg.exe /hibernate on"
|
||||
]
|
||||
},
|
||||
"WPFTweaksLaptopHibernation": {
|
||||
"WPFToggleTweaksLaptopHybernation": {
|
||||
"Content": "Set Hibernation as default (good for laptops)",
|
||||
"Description": "Most modern laptops have connected stadby enabled which drains the battery, this sets hibernation as default which will not drain the battery. See issue https://github.com/ChrisTitusTech/winutil/issues/1399",
|
||||
"category": "Essential Tweaks",
|
||||
@ -1223,6 +1223,11 @@
|
||||
"StartupType": "Automatic",
|
||||
"OriginalType": "Automatic"
|
||||
},
|
||||
{
|
||||
"Name": "WwanSvc",
|
||||
"StartupType": "Manual",
|
||||
"OriginalType": "Manual"
|
||||
},
|
||||
{
|
||||
"Name": "XblAuthManager",
|
||||
"StartupType": "Manual",
|
||||
@ -1580,22 +1585,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"WPFTweaksConsumerFeatures":{
|
||||
"Content": "Disable ConsumerFeatures",
|
||||
"Description": "Windows 10 will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
|
||||
"category": "Essential Tweaks",
|
||||
"panel": "1",
|
||||
"Order": "a003_",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
|
||||
"OriginalValue": "0",
|
||||
"Name": "DisableWindowsConsumerFeatures",
|
||||
"Value": "1",
|
||||
"Type": "DWord"
|
||||
}
|
||||
]
|
||||
},
|
||||
"WPFTweaksTele": {
|
||||
"Content": "Disable Telemetry",
|
||||
"Description": "Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser.",
|
||||
@ -1754,6 +1743,13 @@
|
||||
"Value": "0",
|
||||
"Type": "DWord"
|
||||
},
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
|
||||
"OriginalValue": "0",
|
||||
"Name": "DisableWindowsConsumerFeatures",
|
||||
"Value": "1",
|
||||
"Type": "DWord"
|
||||
},
|
||||
{
|
||||
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Siuf\\Rules",
|
||||
"OriginalValue": "0",
|
||||
@ -2317,6 +2313,20 @@
|
||||
"Invoke-WPFTweakPS7 -action \"PS5\""
|
||||
]
|
||||
},
|
||||
"WPFTweaksOO": {
|
||||
"Content": "Run OO Shutup",
|
||||
"Description": "Runs OO Shutup and applies the recommended Tweaks. https://www.oo-software.com/en/shutup10",
|
||||
"category": "Essential Tweaks",
|
||||
"panel": "1",
|
||||
"Order": "a009_",
|
||||
"ToolTip": "Runs OO Shutup and applies the recommended Tweaks https://www.oo-software.com/en/shutup10",
|
||||
"InvokeScript": [
|
||||
"Invoke-WPFOOSU -action \"recommended\""
|
||||
],
|
||||
"UndoScript": [
|
||||
"Invoke-WPFOOSU -action \"undo\""
|
||||
]
|
||||
},
|
||||
"WPFTweaksStorage": {
|
||||
"Content": "Disable Storage Sense",
|
||||
"Description": "Storage Sense deletes temp files automatically.",
|
||||
@ -2332,15 +2342,17 @@
|
||||
},
|
||||
"WPFTweaksRemoveEdge": {
|
||||
"Content": "Remove Microsoft Edge - NOT RECOMMENDED",
|
||||
"Description": "Removes MS Edge when it gets reinstalled by updates. Credit: AveYo",
|
||||
"Description": "Removes MS Edge when it gets reinstalled by updates.",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a029_",
|
||||
"InvokeScript": [
|
||||
"
|
||||
#:: Standalone script by AveYo Source: https://raw.githubusercontent.com/AveYo/fox/main/Edge_Removal.bat
|
||||
Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/edgeremoval.bat\" -OutFile \"$ENV:TEMP\\edgeremoval.bat\"
|
||||
|
||||
curl.exe -s \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/edgeremoval.bat\" -o $ENV:temp\\edgeremoval.bat
|
||||
Start-Process $ENV:temp\\edgeremoval.bat
|
||||
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
@ -2396,12 +2408,12 @@
|
||||
"WPFTweaksDisableLMS1": {
|
||||
"Content": "Disable Intel MM (vPro LMS)",
|
||||
"Description": "Intel LMS service is always listening on all ports and could be a huge security risk. There is no need to run LMS on home machines and even in the Enterprise there are better solutions.",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"category": "Essential Tweaks",
|
||||
"panel": "1",
|
||||
"Order": "a026_",
|
||||
"Order": "a0015_",
|
||||
"InvokeScript": [
|
||||
"
|
||||
Write-Host \"Kill LMS\"
|
||||
Write-Host \"Kill OneDrive process\"
|
||||
$serviceName = \"LMS\"
|
||||
Write-Host \"Stopping and disabling service: $serviceName\"
|
||||
Stop-Service -Name $serviceName -Force -ErrorAction SilentlyContinue;
|
||||
@ -2445,45 +2457,39 @@
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
Write-Host \"LMS vPro needs to be redownloaded from intel.com\"
|
||||
Write-Host \"Install Microsoft Edge\"
|
||||
taskkill.exe /F /IM \"OneDrive.exe\"
|
||||
|
||||
"
|
||||
]
|
||||
},
|
||||
"WPFTweaksRemoveOnedrive": {
|
||||
"Content": "Remove OneDrive",
|
||||
"Description": "Moves OneDrive files to Default Home Folders and Uninstalls it.",
|
||||
"Description": "Copies OneDrive files to Default Home Folders and Uninstalls it.",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a030_",
|
||||
"InvokeScript": [
|
||||
"
|
||||
$OneDrivePath = $($env:OneDrive)
|
||||
Write-Host \"Removing OneDrive\"
|
||||
$regPath = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OneDriveSetup.exe\"
|
||||
if (Test-Path $regPath){
|
||||
$OneDriveUninstallString = Get-ItemPropertyValue \"$regPath\" -Name \"UninstallString\"
|
||||
$OneDriveExe, $OneDriveArgs = $OneDriveUninstallString.Split(\" \")
|
||||
Start-Process -FilePath $OneDriveExe -ArgumentList \"$OneDriveArgs /silent\" -NoNewWindow -Wait
|
||||
}
|
||||
else{
|
||||
Write-Host \"Onedrive dosn't seem to be installed anymore\" -ForegroundColor Red
|
||||
return
|
||||
}
|
||||
# Check if OneDrive got Uninstalled
|
||||
if (-not (Test-Path $regPath)){
|
||||
Write-Host \"Copy downloaded Files from the OneDrive Folder to Root UserProfile\"
|
||||
Start-Process -FilePath powershell -ArgumentList \"robocopy '$($OneDrivePath)' '$($env:USERPROFILE.TrimEnd())\\' /mov /e /xj\" -NoNewWindow -Wait
|
||||
|
||||
Write-Host \"Kill OneDrive process\"
|
||||
taskkill.exe /F /IM \"OneDrive.exe\"
|
||||
taskkill.exe /F /IM \"explorer.exe\"
|
||||
|
||||
Write-Host \"Copy all OneDrive to Root UserProfile\"
|
||||
Start-Process -FilePath powershell -ArgumentList \"robocopy '$($env:USERPROFILE.TrimEnd())\\OneDrive' '$($env:USERPROFILE.TrimEnd())\\' /e /xj\" -NoNewWindow -Wait
|
||||
|
||||
Write-Host \"Remove OneDrive\"
|
||||
Start-Process -FilePath winget -ArgumentList \"uninstall -e --purge --force --silent Microsoft.OneDrive \" -NoNewWindow -Wait
|
||||
|
||||
Write-Host \"Removing OneDrive leftovers\"
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\"
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\OneDrive\"
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:programdata\\Microsoft OneDrive\"
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:systemdrive\\OneDriveTemp\"
|
||||
reg delete \"HKEY_CURRENT_USER\\Software\\Microsoft\\OneDrive\" -f
|
||||
# check if directory is empty before removing:
|
||||
If ((Get-ChildItem \"$OneDrivePath\" -Recurse | Measure-Object).Count -eq 0) {
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$OneDrivePath\"
|
||||
If ((Get-ChildItem \"$env:userprofile\\OneDrive\" -Recurse | Measure-Object).Count -eq 0) {
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:userprofile\\OneDrive\"
|
||||
}
|
||||
|
||||
Write-Host \"Remove Onedrive from explorer sidebar\"
|
||||
@ -2526,17 +2532,11 @@
|
||||
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{F42EE2D3-909F-4907-8871-4C22FC0BF756}\" -Value \"$env:userprofile\\Documents\" -Type ExpandString
|
||||
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{0DDD015D-B06C-45D5-8C4C-F59713854639}\" -Value \"$env:userprofile\\Pictures\" -Type ExpandString
|
||||
Write-Host \"Restarting explorer\"
|
||||
taskkill.exe /F /IM \"explorer.exe\"
|
||||
Start-Process \"explorer.exe\"
|
||||
|
||||
Write-Host \"Waiting for explorer to complete loading\"
|
||||
Write-Host \"Please Note - The OneDrive folder at $OneDrivePath may still have items in it. You must manually delete it, but all the files should already be copied to the base user folder.\"
|
||||
Write-Host \"If there are Files missing afterwards, please Login to Onedrive.com and Download them manually\" -ForegroundColor Yellow
|
||||
Write-Host \"Please Note - OneDrive folder may still have items in it. You must manually delete it, but all the files should already be copied to the base user folder.\"
|
||||
Start-Sleep 5
|
||||
}
|
||||
else{
|
||||
Write-Host \"Something went Wrong during the Unistallation of OneDrive\" -ForegroundColor Red
|
||||
}
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
@ -2719,7 +2719,7 @@
|
||||
},
|
||||
"WPFTweaksBlockAdobeNet": {
|
||||
"Content": "Adobe Network Block",
|
||||
"Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
|
||||
"Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. ",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a021_",
|
||||
@ -2982,6 +2982,28 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"WPFTweaksEnableipsix": {
|
||||
"Content": "Enable IPv6",
|
||||
"Description": "Enables IPv6.",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a023_",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
|
||||
"Name": "DisabledComponents",
|
||||
"Value": "0",
|
||||
"OriginalValue": "0",
|
||||
"Type": "DWord"
|
||||
}
|
||||
],
|
||||
"InvokeScript": [
|
||||
"Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
|
||||
],
|
||||
"UndoScript": [
|
||||
"Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
|
||||
]
|
||||
},
|
||||
"WPFToggleDarkMode": {
|
||||
"Content": "Dark Theme",
|
||||
"Description": "Enable/Disable Dark Mode.",
|
||||
@ -3059,19 +3081,11 @@
|
||||
"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.",
|
||||
"category": "Customize Preferences",
|
||||
"panel": "2",
|
||||
"Order": "a070_",
|
||||
"Type": "Toggle"
|
||||
},
|
||||
"WPFToggleTaskbarSearch": {
|
||||
"Content": "Taskbar Search",
|
||||
"Description": "If Enabled Search Button will be on the taskbar.",
|
||||
"category": "Customize Preferences",
|
||||
"panel": "2",
|
||||
"Order": "a068_",
|
||||
"Order": "a069_",
|
||||
"Type": "Toggle"
|
||||
},
|
||||
"WPFOOSUbutton": {
|
||||
"Content": "Run OO Shutup 10",
|
||||
"Content": "Customize OO Shutup Tweaks",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a039_",
|
||||
@ -3082,7 +3096,7 @@
|
||||
"Description": "If Enabled then Widgets Icon in Taskbar will be shown.",
|
||||
"category": "Customize Preferences",
|
||||
"panel": "2",
|
||||
"Order": "a069_",
|
||||
"Order": "a068_",
|
||||
"Type": "Toggle"
|
||||
},
|
||||
"WPFchangedns": {
|
||||
@ -3127,13 +3141,5 @@
|
||||
"panel": "2",
|
||||
"Order": "a082_",
|
||||
"Type": "300"
|
||||
},
|
||||
"WPFToggleTaskView": {
|
||||
"Content": "Task View",
|
||||
"Description": "If Enabled then Task View Icon in Taskbar will be shown.",
|
||||
"category": "Customize Preferences",
|
||||
"panel": "2",
|
||||
"Order": "a069_",
|
||||
"Type": "Toggle"
|
||||
}
|
||||
}
|
||||
|
@ -30,5 +30,58 @@ function Get-LocalizedYesNo {
|
||||
Write-Debug "According to takeown.exe local Yes is $charactersArray[0]"
|
||||
# Return the array of characters
|
||||
return $charactersArray
|
||||
|
||||
}
|
||||
|
||||
|
||||
function Get-LocalizedYesNoTakeown {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
This function runs takeown.exe and captures its output to extract yes no in a localized Windows
|
||||
|
||||
.DESCRIPTION
|
||||
The function retrieves lines from the output of takeown.exe until there are at least 2 characters
|
||||
captured in a specific format, such as "Yes=<first character>, No=<second character>".
|
||||
|
||||
.EXAMPLE
|
||||
$yesNoArray = Get-LocalizedYesNo
|
||||
Write-Host "Yes=$($yesNoArray[0]), No=$($yesNoArray[1])"
|
||||
#>
|
||||
|
||||
# Run takeown.exe and capture its output
|
||||
$takeownOutput = & takeown.exe /? | Out-String
|
||||
|
||||
# Parse the output and retrieve lines until there are at least 2 characters in the array
|
||||
$found = $false
|
||||
$charactersArray = @()
|
||||
foreach ($line in $takeownOutput -split "`r`n")
|
||||
{
|
||||
# skip everything before /D flag help
|
||||
if ($found)
|
||||
{
|
||||
# now that /D is found start looking for a single character in double quotes
|
||||
# in help text there is another string in double quotes but it is not a single character
|
||||
$regexPattern = '"([a-zA-Z])"'
|
||||
|
||||
$charactersArray = [regex]::Matches($line, $regexPattern) | ForEach-Object { $_.Groups[1].Value }
|
||||
|
||||
# if ($charactersArray.Count -gt 0) {
|
||||
# Write-Output "Extracted symbols: $($matches -join ', ')"
|
||||
# } else {
|
||||
# Write-Output "No matches found."
|
||||
# }
|
||||
|
||||
if ($charactersArray.Count -ge 2)
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
elseif ($line -match "/D ")
|
||||
{
|
||||
$found = $true
|
||||
}
|
||||
}
|
||||
|
||||
Write-Debug "According to takeown.exe local Yes is $charactersArray[0]"
|
||||
# Return the array of characters
|
||||
return $charactersArray
|
||||
}
|
@ -61,19 +61,19 @@ function Get-TabXaml {
|
||||
$paneltotal = $columncount
|
||||
}
|
||||
# add ColumnDefinitions to evenly draw colums
|
||||
$blockXml="<Grid.ColumnDefinitions>`r`n"+("<ColumnDefinition Width=""*""/>`r`n"*($paneltotal))+"</Grid.ColumnDefinitions>`r`n"
|
||||
$blockXml="<Grid.ColumnDefinitions>`n"+("<ColumnDefinition Width=""*""/>`n"*($paneltotal))+"</Grid.ColumnDefinitions>`n"
|
||||
# Iterate through organizedData by panel, category, and application
|
||||
$count = 0
|
||||
foreach ($panel in ($organizedData.Keys | Sort-Object)) {
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`r`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`r`n"
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`n"
|
||||
$panelcount++
|
||||
foreach ($category in ($organizedData[$panel].Keys | Sort-Object)) {
|
||||
$count++
|
||||
if ($columncount -gt 0) {
|
||||
$panelcount2 = [Int](($count)/$maxcount-0.5)
|
||||
if ($panelcount -eq $panelcount2 ) {
|
||||
$blockXml +="`r`n</StackPanel>`r`n</Border>`r`n"
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`r`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`r`n"
|
||||
$blockXml +="`n</StackPanel>`n</Border>`n"
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`n"
|
||||
$panelcount++
|
||||
}
|
||||
}
|
||||
@ -83,49 +83,49 @@ function Get-TabXaml {
|
||||
|
||||
$categorycontent = $($category -replace '^.__', '')
|
||||
$categoryname = Get-WPFObjectName -type "Label" -name $categorycontent
|
||||
$blockXml += "<Label Name=""$categoryname"" Content=""$categorycontent"" FontSize=""16""/>`r`n"
|
||||
$blockXml += "<Label Name=""$categoryname"" Content=""$categorycontent"" FontSize=""16""/>`n"
|
||||
$sortedApps = $organizedData[$panel][$category].Keys | Sort-Object
|
||||
foreach ($appName in $sortedApps) {
|
||||
$count++
|
||||
if ($columncount -gt 0) {
|
||||
$panelcount2 = [Int](($count)/$maxcount-0.5)
|
||||
if ($panelcount -eq $panelcount2 ) {
|
||||
$blockXml +="`r`n</StackPanel>`r`n</Border>`r`n"
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`r`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`r`n"
|
||||
$blockXml +="`n</StackPanel>`n</Border>`n"
|
||||
$blockXml += "<Border Grid.Row=""1"" Grid.Column=""$panelcount"">`n<StackPanel Background=""{MainBackgroundColor}"" SnapsToDevicePixels=""True"">`n"
|
||||
$panelcount++
|
||||
}
|
||||
}
|
||||
$appInfo = $organizedData[$panel][$category][$appName]
|
||||
if ("Toggle" -eq $appInfo.Type) {
|
||||
$blockXml += "<DockPanel LastChildFill=`"True`">`r`n<Label Content=`"$($appInfo.Content)`" ToolTip=`"$($appInfo.Description)`" HorizontalAlignment=`"Left`"/>`r`n"
|
||||
$blockXml += "<CheckBox Name=`"$($appInfo.Name)`" Style=`"{StaticResource ColorfulToggleSwitchStyle}`" Margin=`"2.5,0`" HorizontalAlignment=`"Right`"/>`r`n</DockPanel>`r`n"
|
||||
$blockXml += "<DockPanel LastChildFill=`"True`">`n<Label Content=`"$($appInfo.Content)`" ToolTip=`"$($appInfo.Description)`" HorizontalAlignment=`"Left`"/>`n"
|
||||
$blockXml += "<CheckBox Name=`"$($appInfo.Name)`" Style=`"{StaticResource ColorfulToggleSwitchStyle}`" Margin=`"2.5,0`" HorizontalAlignment=`"Right`"/>`n</DockPanel>`n"
|
||||
} elseif ("Combobox" -eq $appInfo.Type) {
|
||||
$blockXml += "<StackPanel Orientation=`"Horizontal`" Margin=`"0,5,0,0`">`r`n<Label Content=`"$($appInfo.Content)`" HorizontalAlignment=`"Left`" VerticalAlignment=`"Center`"/>`r`n"
|
||||
$blockXml += "<ComboBox Name=`"$($appInfo.Name)`" Height=`"32`" Width=`"186`" HorizontalAlignment=`"Left`" VerticalAlignment=`"Center`" Margin=`"5,5`">`r`n"
|
||||
$blockXml += "<StackPanel Orientation=`"Horizontal`" Margin=`"0,5,0,0`">`n<Label Content=`"$($appInfo.Content)`" HorizontalAlignment=`"Left`" VerticalAlignment=`"Center`"/>`n"
|
||||
$blockXml += "<ComboBox Name=`"$($appInfo.Name)`" Height=`"32`" Width=`"186`" HorizontalAlignment=`"Left`" VerticalAlignment=`"Center`" Margin=`"5,5`">`n"
|
||||
$addfirst="IsSelected=`"True`""
|
||||
foreach ($comboitem in ($appInfo.ComboItems -split " ")) {
|
||||
$blockXml += "<ComboBoxItem $addfirst Content=`"$comboitem`"/>`r`n"
|
||||
$blockXml += "<ComboBoxItem $addfirst Content=`"$comboitem`"/>`n"
|
||||
$addfirst=""
|
||||
}
|
||||
$blockXml += "</ComboBox>`r`n</StackPanel>"
|
||||
$blockXml += "</ComboBox>`n</StackPanel>"
|
||||
# If it is a digit, type is button and button length is digits
|
||||
} elseif ($appInfo.Type -match "^[\d\.]+$") {
|
||||
$blockXml += "<Button Name=`"$($appInfo.Name)`" Content=`"$($appInfo.Content)`" HorizontalAlignment = `"Left`" Width=`"$($appInfo.Type)`" Margin=`"5`" Padding=`"20,5`" />`r`n"
|
||||
$blockXml += "<Button Name=`"$($appInfo.Name)`" Content=`"$($appInfo.Content)`" HorizontalAlignment = `"Left`" Width=`"$($appInfo.Type)`" Margin=`"5`" Padding=`"20,5`" />`n"
|
||||
# else it is a checkbox
|
||||
} else {
|
||||
$checkedStatus = If ($null -eq $appInfo.Checked) {""} Else {"IsChecked=`"$($appInfo.Checked)`" "}
|
||||
if ($null -eq $appInfo.Link)
|
||||
{
|
||||
$blockXml += "<CheckBox Name=`"$($appInfo.Name)`" Content=`"$($appInfo.Content)`" $($checkedStatus)Margin=`"5,0`" ToolTip=`"$($appInfo.Description)`"/>`r`n"
|
||||
$blockXml += "<CheckBox Name=`"$($appInfo.Name)`" Content=`"$($appInfo.Content)`" $($checkedStatus)Margin=`"5,0`" ToolTip=`"$($appInfo.Description)`"/>`n"
|
||||
}
|
||||
else
|
||||
{
|
||||
$blockXml += "<StackPanel Orientation=""Horizontal"">`r`n<CheckBox Name=""$($appInfo.Name)"" Content=""$($appInfo.Content)"" $($checkedStatus)ToolTip=""$($appInfo.Description)"" Margin=""0,0,2,0""/><TextBlock Name=""$($appInfo.Name)Link"" Style=""{StaticResource HoverTextBlockStyle}"" Text=""(?)"" ToolTip=""$($appInfo.Link)"" />`r`n</StackPanel>`r`n"
|
||||
$blockXml += "<StackPanel Orientation=""Horizontal"">`n<CheckBox Name=""$($appInfo.Name)"" Content=""$($appInfo.Content)"" $($checkedStatus)ToolTip=""$($appInfo.Description)"" Margin=""0,0,2,0""/><TextBlock Name=""$($appInfo.Name)Link"" Style=""{StaticResource HoverTextBlockStyle}"" Text=""(?)"" ToolTip=""$($appInfo.Link)"" />`n</StackPanel>`n"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$blockXml +="`r`n</StackPanel>`r`n</Border>`r`n"
|
||||
$blockXml +="`n</StackPanel>`n</Border>`n"
|
||||
}
|
||||
return ($blockXml)
|
||||
}
|
||||
|
@ -98,15 +98,6 @@ Function Get-WinUtilToggleStatus {
|
||||
return $false
|
||||
}
|
||||
}
|
||||
if($ToggleSwitch -eq "WPFToggleTaskbarSearch"){
|
||||
$SearchButton = (Get-ItemProperty -path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search").SearchboxTaskbarMode
|
||||
if($SearchButton -eq 0){
|
||||
return $false
|
||||
}
|
||||
else{
|
||||
return $true
|
||||
}
|
||||
}
|
||||
if ($ToggleSwitch -eq "WPFToggleStickyKeys") {
|
||||
$StickyKeys = (Get-ItemProperty -path 'HKCU:\Control Panel\Accessibility\StickyKeys').Flags
|
||||
if($StickyKeys -eq 58){
|
||||
@ -116,15 +107,6 @@ Function Get-WinUtilToggleStatus {
|
||||
return $true
|
||||
}
|
||||
}
|
||||
if ($ToggleSwitch -eq "WPFToggleTaskView") {
|
||||
$TaskView = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced').ShowTaskViewButton
|
||||
if($TaskView -eq 0){
|
||||
return $false
|
||||
}
|
||||
else{
|
||||
return $true
|
||||
}
|
||||
}
|
||||
if ($ToggleSwitch -eq "WPFToggleTaskbarWidgets") {
|
||||
$TaskbarWidgets = (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced").TaskBarDa
|
||||
if($TaskbarWidgets -eq 0) {
|
||||
|
@ -11,7 +11,9 @@ function Get-WinUtilVariables {
|
||||
[Parameter()]
|
||||
[string[]]$Type
|
||||
)
|
||||
$keys = ($sync.keys).where{ $_ -like "WPF*" }
|
||||
|
||||
$keys = $sync.keys | Where-Object { $_ -like "WPF*" }
|
||||
|
||||
if ($Type) {
|
||||
$output = $keys | ForEach-Object {
|
||||
Try {
|
||||
|
@ -1,3 +1,19 @@
|
||||
function Invoke-MicroWin-Helper {
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
checking unit tests
|
||||
|
||||
.PARAMETER Name
|
||||
no parameters
|
||||
|
||||
.EXAMPLE
|
||||
placeholder
|
||||
|
||||
#>
|
||||
|
||||
}
|
||||
|
||||
function Test-CompatibleImage() {
|
||||
<#
|
||||
|
||||
@ -159,14 +175,8 @@ function Remove-ProvisionedPackages([switch] $keepSecurity = $false)
|
||||
{
|
||||
$status = "Removing Provisioned $($appx.PackageName)"
|
||||
Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100)
|
||||
try {
|
||||
Remove-AppxProvisionedPackage -Path $scratchDir -PackageName $appx.PackageName -ErrorAction SilentlyContinue
|
||||
}
|
||||
catch {
|
||||
Write-Host "Application $($appx.PackageName) could not be removed"
|
||||
continue
|
||||
}
|
||||
}
|
||||
Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed
|
||||
}
|
||||
else
|
||||
|
@ -1,21 +1,29 @@
|
||||
function Invoke-WinUtilGPU {
|
||||
$gpuInfo = Get-CimInstance Win32_VideoController
|
||||
|
||||
# GPUs to blacklist from using Demanding Theming
|
||||
$lowPowerGPUs = (
|
||||
"*NVIDIA GeForce*M*",
|
||||
"*NVIDIA GeForce*Laptop*",
|
||||
"*NVIDIA GeForce*GT*",
|
||||
"*AMD Radeon(TM)*",
|
||||
"*UHD*"
|
||||
)
|
||||
foreach ($gpu in $gpuInfo) {
|
||||
$gpuName = $gpu.Name
|
||||
if ($gpuName -like "*NVIDIA*") {
|
||||
return $true # NVIDIA GPU found
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($gpu in $gpuInfo) {
|
||||
foreach ($gpuPattern in $lowPowerGPUs){
|
||||
if ($gpu.Name -like $gpuPattern) {
|
||||
return $false
|
||||
$gpuName = $gpu.Name
|
||||
if ($gpuName -like "*AMD Radeon RX*") {
|
||||
return $true # AMD GPU Found
|
||||
}
|
||||
}
|
||||
foreach ($gpu in $gpuInfo) {
|
||||
$gpuName = $gpu.Name
|
||||
if ($gpuName -like "*UHD*") {
|
||||
return $false # Intel Intergrated GPU Found
|
||||
}
|
||||
}
|
||||
foreach ($gpu in $gpuInfo) {
|
||||
$gpuName = $gpu.Name
|
||||
if ($gpuName -like "*AMD Radeon(TM)*") {
|
||||
return $false # AMD Intergrated GPU Found
|
||||
}
|
||||
}
|
||||
}
|
||||
return $true
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
function Invoke-WinUtilTaskView {
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Enable/Disable Task View
|
||||
|
||||
.PARAMETER Enabled
|
||||
Indicates whether to enable or disable Task View
|
||||
|
||||
#>
|
||||
Param($Enabled)
|
||||
Try{
|
||||
if ($Enabled -eq $false){
|
||||
Write-Host "Enabling Task View"
|
||||
$value = 1
|
||||
}
|
||||
else {
|
||||
Write-Host "Disabling Task View"
|
||||
$value = 0
|
||||
}
|
||||
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
|
||||
Set-ItemProperty -Path $Path -Name ShowTaskViewButton -Value $value
|
||||
}
|
||||
Catch [System.Security.SecurityException] {
|
||||
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
||||
}
|
||||
Catch [System.Management.Automation.ItemNotFoundException] {
|
||||
Write-Warning $psitem.Exception.ErrorRecord
|
||||
}
|
||||
Catch{
|
||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
function Invoke-WinUtilTaskbarSearch {
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Enable/Disable Taskbar Widgets
|
||||
|
||||
.PARAMETER Enabled
|
||||
Indicates whether to enable or disable Taskbar Widgets
|
||||
|
||||
#>
|
||||
Param($Enabled)
|
||||
Try{
|
||||
if ($Enabled -eq $false){
|
||||
Write-Host "Enabling Search Button"
|
||||
$value = 1
|
||||
}
|
||||
else {
|
||||
Write-Host "Disabling Search Button"
|
||||
$value = 0
|
||||
}
|
||||
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search\"
|
||||
Set-ItemProperty -Path $Path -Name SearchboxTaskbarMode -Value $value
|
||||
}
|
||||
Catch [System.Security.SecurityException] {
|
||||
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
||||
}
|
||||
Catch [System.Management.Automation.ItemNotFoundException] {
|
||||
Write-Warning $psitem.Exception.ErrorRecord
|
||||
}
|
||||
Catch{
|
||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
@ -178,67 +178,17 @@ $cttLogoPath = @"
|
||||
$winutilTextBlock.Foreground = $foregroundColor
|
||||
$winutilTextBlock.Margin = New-Object Windows.Thickness(10, 5, 10, 5) # Add margins around the text block
|
||||
$stackPanel.Children.Add($winutilTextBlock)
|
||||
|
||||
# Add TextBlock for information with text wrapping and margins
|
||||
$messageTextBlock = New-Object Windows.Controls.TextBlock
|
||||
$messageTextBlock.Text = $Message
|
||||
$messageTextBlock.TextWrapping = [Windows.TextWrapping]::Wrap # Enable text wrapping
|
||||
$messageTextBlock.HorizontalAlignment = [Windows.HorizontalAlignment]::Left
|
||||
$messageTextBlock.VerticalAlignment = [Windows.VerticalAlignment]::Top
|
||||
$messageTextBlock.Margin = New-Object Windows.Thickness(10) # Add margins around the text block
|
||||
|
||||
# Define the Regex to find hyperlinks formatted as HTML <a> tags
|
||||
$regex = [regex]::new('<a href="([^"]+)">([^<]+)</a>')
|
||||
$lastPos = 0
|
||||
|
||||
# Iterate through each match and add regular text and hyperlinks
|
||||
foreach ($match in $regex.Matches($Message)) {
|
||||
# Add the text before the hyperlink, if any
|
||||
$textBefore = $Message.Substring($lastPos, $match.Index - $lastPos)
|
||||
if ($textBefore.Length -gt 0) {
|
||||
$messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($textBefore)))
|
||||
}
|
||||
|
||||
# Create and add the hyperlink
|
||||
$hyperlink = New-Object Windows.Documents.Hyperlink
|
||||
$hyperlink.NavigateUri = New-Object System.Uri($match.Groups[1].Value)
|
||||
$hyperlink.Inlines.Add($match.Groups[2].Value)
|
||||
$hyperlink.TextDecorations = [Windows.TextDecorations]::None # Remove underline
|
||||
$hyperlink.Foreground = $foregroundColor
|
||||
$hyperlink.Add_Click({
|
||||
param($sender, $args)
|
||||
Start-Process $sender.NavigateUri.AbsoluteUri
|
||||
})
|
||||
$hyperlink.Add_MouseEnter({
|
||||
param($sender, $args)
|
||||
$sender.Foreground = [Windows.Media.Brushes]::LightGray
|
||||
})
|
||||
$hyperlink.Add_MouseLeave({
|
||||
param($sender, $args)
|
||||
$sender.Foreground = $foregroundColor
|
||||
})
|
||||
|
||||
$messageTextBlock.Inlines.Add($hyperlink)
|
||||
|
||||
# Update the last position
|
||||
$lastPos = $match.Index + $match.Length
|
||||
}
|
||||
|
||||
# Add any remaining text after the last hyperlink
|
||||
if ($lastPos -lt $Message.Length) {
|
||||
$textAfter = $Message.Substring($lastPos)
|
||||
$messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($textAfter)))
|
||||
}
|
||||
|
||||
# If no matches, add the entire message as a run
|
||||
if ($regex.Matches($Message).Count -eq 0) {
|
||||
$messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($Message)))
|
||||
}
|
||||
|
||||
|
||||
# Add the TextBlock to the Grid
|
||||
$grid.Children.Add($messageTextBlock)
|
||||
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
||||
|
||||
|
||||
# Add OK button
|
||||
$okButton = New-Object Windows.Controls.Button
|
||||
$okButton.Content = "OK"
|
||||
|
@ -26,7 +26,7 @@ function Invoke-WPFButton {
|
||||
"WPFclear" {Invoke-WPFPresets -preset $null -imported $true}
|
||||
"WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"}
|
||||
"WPFtweaksbutton" {Invoke-WPFtweaksbutton}
|
||||
"WPFOOSUbutton" {Invoke-WPFOOSU}
|
||||
"WPFOOSUbutton" {Invoke-WPFOOSU -action "customize"}
|
||||
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enabled"}
|
||||
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disabled"}
|
||||
"WPFundoall" {Invoke-WPFundoall}
|
||||
|
@ -1,20 +1,43 @@
|
||||
function Invoke-WPFOOSU {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Downloads and runs OO Shutup 10
|
||||
Downloads and runs OO Shutup 10 with or without config files
|
||||
.PARAMETER action
|
||||
Specifies how OOSU should be started
|
||||
customize: Opens the OOSU GUI
|
||||
recommended: Loads and applies the recommended OOSU policies silently
|
||||
undo: Resets all policies to factory silently
|
||||
#>
|
||||
try {
|
||||
|
||||
param (
|
||||
[ValidateSet("customize", "recommended", "undo")]
|
||||
[string]$action
|
||||
)
|
||||
|
||||
$OOSU_filepath = "$ENV:temp\OOSU10.exe"
|
||||
|
||||
$Initial_ProgressPreference = $ProgressPreference
|
||||
$ProgressPreference = "SilentlyContinue" # Disables the Progress Bar to drasticly speed up Invoke-WebRequest
|
||||
Invoke-WebRequest -Uri "https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe" -OutFile $OOSU_filepath
|
||||
|
||||
switch ($action)
|
||||
{
|
||||
"customize"{
|
||||
Write-Host "Starting OO Shutup 10 ..."
|
||||
Start-Process $OOSU_filepath
|
||||
}
|
||||
catch {
|
||||
Write-Host "Error Downloading and Running OO Shutup 10" -ForegroundColor Red
|
||||
"recommended"{
|
||||
$oosu_config = "$ENV:temp\ooshutup10_recommended.cfg"
|
||||
$sync.configs.ooshutup10_recommended | Out-File -FilePath $oosu_config -Force
|
||||
Write-Host "Applying recommended OO Shutup 10 Policies"
|
||||
Start-Process $OOSU_filepath -ArgumentList "$oosu_config /quiet" -Wait
|
||||
}
|
||||
"undo"{
|
||||
$oosu_config = "$ENV:temp\ooshutup10_factory.cfg"
|
||||
$sync.configs.ooshutup10_factory | Out-File -FilePath $oosu_config -Force
|
||||
Write-Host "Resetting all OO Shutup 10 Policies"
|
||||
Start-Process $OOSU_filepath -ArgumentList "$oosu_config /quiet" -Wait
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$ProgressPreference = $Initial_ProgressPreference
|
||||
}
|
||||
}
|
@ -5,8 +5,6 @@ function Invoke-WPFPanelAutologin {
|
||||
Enables autologin using Sysinternals Autologon.exe
|
||||
|
||||
#>
|
||||
|
||||
# Official Microsoft recommendation: https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
|
||||
Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe"
|
||||
cmd /c "$env:temp\autologin.exe" /accepteula
|
||||
curl.exe -ss "https://live.sysinternals.com/Autologon.exe" -o $env:temp\autologin.exe # Official Microsoft recommendation https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
|
||||
cmd /c $env:temp\autologin.exe /accepteula
|
||||
}
|
@ -28,7 +28,5 @@ function Invoke-WPFToggle {
|
||||
"WPFToggleMouseAcceleration" {Invoke-WinUtilMouseAcceleration $(Get-WinUtilToggleStatus WPFToggleMouseAcceleration)}
|
||||
"WPFToggleStickyKeys" {Invoke-WinUtilStickyKeys $(Get-WinUtilToggleStatus WPFToggleStickyKeys)}
|
||||
"WPFToggleTaskbarWidgets" {Invoke-WinUtilTaskbarWidgets $(Get-WinUtilToggleStatus WPFToggleTaskbarWidgets)}
|
||||
"WPFToggleTaskbarSearch" {Invoke-WinUtilTaskbarSearch $(Get-WinUtilToggleStatus WPFToggleTaskbarSearch)}
|
||||
"WPFToggleTaskView" {Invoke-WinUtilTaskView $(Get-WinUtilToggleStatus WPFToggleTaskView)}
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ function Invoke-WPFUnInstall {
|
||||
$PackagesToInstall = (Get-WinUtilCheckBoxes)["Install"]
|
||||
|
||||
if ($PackagesToInstall.Count -eq 0) {
|
||||
$WarningMsg = "Please select the program(s) to uninstall"
|
||||
$WarningMsg = "Please select the program(s) to install"
|
||||
[System.Windows.MessageBox]::Show($WarningMsg, $AppTitle, [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
||||
return
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ $InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionSta
|
||||
$InitialSessionState.Variables.Add($hashVars)
|
||||
|
||||
# Get every private function and add them to the session state
|
||||
$functions = (Get-ChildItem function:\).where{$_.name -like "*winutil*" -or $_.name -like "*WPF*"}
|
||||
$functions = Get-ChildItem function:\ | Where-Object {$_.name -like "*winutil*" -or $_.name -like "*WPF*"}
|
||||
foreach ($function in $functions){
|
||||
$functionDefinition = Get-Content function:\$($function.name)
|
||||
$functionEntry = New-Object System.Management.Automation.Runspaces.SessionStateFunctionEntry -ArgumentList $($function.name), $functionDefinition
|
||||
@ -133,17 +133,9 @@ $sync.keys | ForEach-Object {
|
||||
|
||||
# Load computer information in the background
|
||||
Invoke-WPFRunspace -ScriptBlock {
|
||||
try{
|
||||
$oldProgressPreference = $ProgressPreference
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
$sync.ConfigLoaded = $False
|
||||
$sync.ComputerInfo = Get-ComputerInfo
|
||||
$sync.ConfigLoaded = $True
|
||||
}
|
||||
finally{
|
||||
$ProgressPreference = "Continue"
|
||||
}
|
||||
|
||||
} | Out-Null
|
||||
|
||||
#===========================================================================
|
||||
@ -153,6 +145,9 @@ Invoke-WPFRunspace -ScriptBlock {
|
||||
# Print the logo
|
||||
Invoke-WPFFormVariables
|
||||
|
||||
# Install Winget if not already present
|
||||
Install-WinUtilWinget
|
||||
|
||||
# Set the titlebar
|
||||
$sync["Form"].title = $sync["Form"].title + " " + $sync.version
|
||||
# Set the commands that will run when the form is closed
|
||||
@ -276,7 +271,7 @@ Add-Type @"
|
||||
"@
|
||||
}
|
||||
|
||||
foreach ($proc in (Get-Process).where{ $_.MainWindowTitle -and $_.MainWindowTitle -like "*titus*" }) {
|
||||
foreach ($proc in (Get-Process | Where-Object { $_.MainWindowTitle -and $_.MainWindowTitle -like "*titus*" })) {
|
||||
# Check if the process's MainWindowHandle is valid
|
||||
if ($proc.MainWindowHandle -ne [System.IntPtr]::Zero) {
|
||||
Write-Debug "MainWindowHandle: $($proc.Id) $($proc.MainWindowTitle) $($proc.MainWindowHandle)"
|
||||
@ -287,37 +282,19 @@ Add-Type @"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Using a TaskbarItem Overlay until someone figures out how to replace the icon correctly
|
||||
|
||||
# URL of the image
|
||||
$imageUrl = "https://christitus.com/images/logo-full.png"
|
||||
|
||||
# Download the image
|
||||
$imagePath = "$env:TEMP\logo-full.png"
|
||||
Invoke-WebRequest -Uri $imageUrl -OutFile $imagePath
|
||||
|
||||
# Read the image file as a byte array
|
||||
$imageBytes = [System.IO.File]::ReadAllBytes($imagePath)
|
||||
|
||||
# Convert the byte array to a Base64 string
|
||||
$base64String = [System.Convert]::ToBase64String($imageBytes)
|
||||
|
||||
# Create a streaming image by streaming the base64 string to a bitmap streamsource
|
||||
$bitmap = New-Object System.Windows.Media.Imaging.BitmapImage
|
||||
$bitmap.BeginInit()
|
||||
$bitmap.StreamSource = [System.IO.MemoryStream][System.Convert]::FromBase64String($base64String)
|
||||
$bitmap.EndInit()
|
||||
$bitmap.Freeze()
|
||||
|
||||
# Ensure TaskbarItemInfo is created if not already
|
||||
if (-not $sync["Form"].TaskbarItemInfo) {
|
||||
$sync["Form"].TaskbarItemInfo = New-Object System.Windows.Shell.TaskbarItemInfo
|
||||
}
|
||||
|
||||
# Set the overlay icon for the taskbar
|
||||
$sync["Form"].TaskbarItemInfo.Overlay = $bitmap
|
||||
|
||||
# need to experiemnt more
|
||||
# setting icon for the windows is still not working
|
||||
# $pngUrl = "https://christitus.com/images/logo-full.png"
|
||||
# $pngPath = "$env:TEMP\cttlogo.png"
|
||||
# $iconPath = "$env:TEMP\cttlogo.ico"
|
||||
# # Download the PNG file
|
||||
# Invoke-WebRequest -Uri $pngUrl -OutFile $pngPath
|
||||
# if (Test-Path -Path $pngPath) {
|
||||
# ConvertTo-Icon -bitmapPath $pngPath -iconPath $iconPath
|
||||
# }
|
||||
# $icon = [System.Drawing.Icon]::ExtractAssociatedIcon($iconPath)
|
||||
# Write-Host $icon.Handle
|
||||
# [Window]::SendMessage($windowHandle, 0x80, [IntPtr]::Zero, $icon.Handle)
|
||||
|
||||
$rect = New-Object RECT
|
||||
[Window]::GetWindowRect($windowHandle, [ref]$rect)
|
||||
@ -392,11 +369,11 @@ Add-Type @"
|
||||
|
||||
# Load Checkboxes and Labels outside of the Filter fuction only once on startup for performance reasons
|
||||
$filter = Get-WinUtilVariables -Type CheckBox
|
||||
$CheckBoxes = ($sync.GetEnumerator()).where{ $psitem.Key -in $filter }
|
||||
$CheckBoxes = $sync.GetEnumerator() | Where-Object { $psitem.Key -in $filter }
|
||||
|
||||
$filter = Get-WinUtilVariables -Type Label
|
||||
$labels = @{}
|
||||
($sync.GetEnumerator()).where{$PSItem.Key -in $filter} | ForEach-Object {$labels[$_.Key] = $_.Value}
|
||||
$sync.GetEnumerator() | Where-Object {$PSItem.Key -in $filter} | ForEach-Object {$labels[$_.Key] = $_.Value}
|
||||
|
||||
$allCategories = $checkBoxes.Name | ForEach-Object {$sync.configs.applications.$_} | Select-Object -Unique -ExpandProperty category
|
||||
|
||||
@ -490,14 +467,17 @@ $sync["AboutMenuItem"].Add_Click({
|
||||
# Handle Export menu item click
|
||||
Write-Debug "About clicked"
|
||||
$sync["SettingsPopup"].IsOpen = $false
|
||||
# Example usage
|
||||
$authorInfo = @"
|
||||
Author : <a href="https://github.com/ChrisTitusTech">@christitustech</a>
|
||||
Runspace : <a href="https://github.com/DeveloperDurp">@DeveloperDurp</a>
|
||||
MicroWin : <a href="https://github.com/KonTy">@KonTy</a>
|
||||
GitHub : <a href="https://github.com/ChrisTitusTech/winutil">ChrisTitusTech/winutil</a>
|
||||
Version : <a href="https://github.com/ChrisTitusTech/winutil/releases/tag/$($sync.version)">$($sync.version)</a>
|
||||
Author : @christitustech
|
||||
Runspace : @DeveloperDurp
|
||||
GUI : @KonTy
|
||||
MicroWin : @KonTy
|
||||
GitHub : https://github.com/ChrisTitusTech/winutil
|
||||
Version : $($sync.version)
|
||||
"@
|
||||
Show-CustomDialog -Message $authorInfo -Width 400
|
||||
})
|
||||
|
||||
$sync["Form"].ShowDialog() | out-null
|
||||
Stop-Transcript
|
||||
|
40
windev.ps1
40
windev.ps1
@ -1,40 +0,0 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
This Script is used as a target for the https://christitus.com/windev alias.
|
||||
It queries the latest winget release (no matter if Pre-Release, Draft or Full Release) and invokes It
|
||||
.DESCRIPTION
|
||||
This Script provides a simple way to always start the bleeding edge release even if it's not yet a full release.
|
||||
This function should be run with administrative privileges.
|
||||
Because this way of recursively invoking scripts via Invoke-Expression it might very well happen that AV Programs flag this because it's a common way of mulitstage exploits to run
|
||||
.EXAMPLE
|
||||
irm https://christitus.com/windev | iex
|
||||
OR
|
||||
Run in Admin Powershell > ./windev.ps1
|
||||
#>
|
||||
|
||||
# Function to fetch the latest release tag from the GitHub API
|
||||
function Get-LatestRelease {
|
||||
try {
|
||||
$releases = Invoke-RestMethod -Uri 'https://api.github.com/repos/ChrisTitusTech/winutil/releases'
|
||||
$latestRelease = $releases | Select-Object -First 1
|
||||
return $latestRelease.tag_name
|
||||
} catch {
|
||||
Write-Host "Error fetching release data: $_" -ForegroundColor Red
|
||||
return $null
|
||||
}
|
||||
}
|
||||
|
||||
# Function to redirect to the latest pre-release version
|
||||
function RedirectToLatestPreRelease {
|
||||
$latestRelease = Get-LatestRelease
|
||||
if ($latestRelease) {
|
||||
$url = "https://raw.githubusercontent.com/ChrisTitusTech/winutil/$latestRelease/winutil.ps1"
|
||||
Invoke-RestMethod $url | Invoke-Expression
|
||||
} else {
|
||||
Write-Host 'Unable to determine latest pre-release version.' -ForegroundColor Red
|
||||
}
|
||||
}
|
||||
|
||||
# Call the redirect function
|
||||
|
||||
RedirectToLatestPreRelease
|
1871
winutil.ps1
1871
winutil.ps1
File diff suppressed because it is too large
Load Diff
@ -571,18 +571,6 @@
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
<Style x:Key="ScrollVisibilityRectangle" TargetType="Rectangle">
|
||||
<Setter Property="Visibility" Value="Collapsed"/>
|
||||
<Style.Triggers>
|
||||
<MultiDataTrigger>
|
||||
<MultiDataTrigger.Conditions>
|
||||
<Condition Binding="{Binding Path=ComputedHorizontalScrollBarVisibility, ElementName=scrollViewer}" Value="Visible"/>
|
||||
<Condition Binding="{Binding Path=ComputedVerticalScrollBarVisibility, ElementName=scrollViewer}" Value="Visible"/>
|
||||
</MultiDataTrigger.Conditions>
|
||||
<Setter Property="Visibility" Value="Visible"/>
|
||||
</MultiDataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<Grid Background="{MainBackgroundColor}" ShowGridLines="False" Name="WPFMainGrid" Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
@ -713,20 +701,18 @@
|
||||
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="3" Margin="5">
|
||||
<Button Name="WPFinstall" Content=" Install/Upgrade Selected" Margin="2" />
|
||||
<Button Name="WPFInstallUpgrade" Content=" Upgrade All" Margin="2"/>
|
||||
<Button Name="WPFuninstall" Content=" Uninstall Selected" Margin="2"/>
|
||||
<Button Name="WPFuninstall" Content=" Uninstall Selection" Margin="2"/>
|
||||
<Button Name="WPFGetInstalled" Content=" Get Installed" Margin="2"/>
|
||||
<Button Name="WPFclearWinget" Content=" Clear Selection" Margin="2"/>
|
||||
</StackPanel>
|
||||
|
||||
<ScrollViewer x:Name="scrollViewer" Grid.Row="1" Grid.Column="0" Padding="-1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
|
||||
<ScrollViewer Grid.Row="1" Grid.Column="0" Padding="-1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
|
||||
BorderBrush="Transparent" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
{{InstallPanel_applications}}
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
|
||||
<Rectangle Grid.Row="1" Grid.Column="0" Width="18" Height="18" Fill="{MainBackgroundColor}" HorizontalAlignment="Right" VerticalAlignment="Bottom" Style="{StaticResource ScrollVisibilityRectangle}"/>
|
||||
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Tweaks" Visibility="Collapsed" Name="WPFTab2">
|
||||
|
Reference in New Issue
Block a user