mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-12-22 05:51:30 -06:00
Test Merge - Multiple Fixes (#317)
* clean up * Update runspace.ps1 for new tweaks (#291) * clean up (#290) * Update Tweaks Co-authored-by: Chris Titus <dfm.titus@gmail.com> * Github actions to update script based on branch (#294) * clean up (#290) * Update Tweaks * test pipeline * test pipeline * chore: autopublish 2022-10-19T09:34:35Z * test pipeline * test pipeline * chore: autopublish 2022-10-19T11:39:50Z * test pipeline * test pipeline * test pipeline * test pipeline * test pipeline * test pipeline * test * please work * Update Branch in script * test new variable * Update Branch in script * test all branches * updated $BranchToUse to use the correct casing Co-authored-by: Chris Titus <dfm.titus@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> * bring test up to date (#295) * clean up (#290) * Update README.md * Update README.md * Update README.md * Update release.yaml * Replace Broken Issue Links in KnownIssues.md (#297) - The issues listed in KnownIssues.md were broken due to the issues tab in the previous repo being removed. - Replaced with issues in this repo that apply to the issues, if there were any - I think this issue could be applied to the main branch without worry, but I'll leave that up to you. * Update Branch in script * Implement check for local ooshutup10.cfg file (#298) - Checks for an ooshutup10.cfg file in the current directory and uses it if found - This allows users to use custom config files if they wish * bring winget install script (#302) * clean up (#290) * Update README.md * Update README.md * Update README.md * Update winget.ps1 * Update Branch in script * Brave Fix * Fix Flickering New Windows versions HATE timeout tweaks * Fixing Error Messages * syntax fix * Switch to PSGallery winget-installer * Adding Branch Variables from #309 Co-authored-by: DeveloperDurp <developerdurp@durp.info> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> Co-authored-by: Carter <60557606+Carterpersall@users.noreply.github.com> Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com>
This commit is contained in:
parent
fc437e8c4c
commit
bf227887f9
21
.github/workflows/release.yaml
vendored
Normal file
21
.github/workflows/release.yaml
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
name: Update Branch
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: ${{ github.head_ref }}
|
||||||
|
- name: Create local changes
|
||||||
|
run: |
|
||||||
|
sed -i "/\$BranchToUse = /c\$BranchToUse = '$GITHUB_REF_NAME'" $GITHUB_WORKSPACE/runspace.ps1
|
||||||
|
cat $GITHUB_WORKSPACE/runspace.ps1
|
||||||
|
sed -i "/\$BranchToUse = /c\$BranchToUse = '$GITHUB_REF_NAME'" $GITHUB_WORKSPACE/runspace.ps1
|
||||||
|
cat $GITHUB_WORKSPACE/winutil.ps1
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: Update Branch in script
|
@ -1,6 +1,6 @@
|
|||||||
## Known Issues and Fixes
|
## Known Issues and Fixes
|
||||||
- [#333](https://github.com/ChrisTitusTech/win10script/issues/333) Windows taking longer to shut down:
|
- Windows taking longer to shut down:
|
||||||
- Turn on fast startup: Press Windows key + R, then type:
|
- [#69](https://github.com/ChrisTitusTech/winutil/issues/69) Turn on fast startup: Press Windows key + R, then type:
|
||||||
```
|
```
|
||||||
control /name Microsoft.PowerOptions /page pageGlobalSettings
|
control /name Microsoft.PowerOptions /page pageGlobalSettings
|
||||||
```
|
```
|
||||||
@ -8,20 +8,20 @@
|
|||||||
```
|
```
|
||||||
powercfg /H off
|
powercfg /H off
|
||||||
```
|
```
|
||||||
- [#253](https://github.com/ChrisTitusTech/win10script/issues/253) Windows Search does not work: Enable Background Apps
|
- [#69](https://github.com/ChrisTitusTech/winutil/issues/69) [95](https://github.com/ChrisTitusTech/winutil/issues/95) [#232](https://github.com/ChrisTitusTech/winutil/issues/232) Windows Search does not work: Enable Background Apps
|
||||||
- [#278](https://github.com/ChrisTitusTech/win10script/issues/278) Xbox Game Bar Activation Broken: Set the Xbox Accessory Management Service to Automatic
|
- [#198](https://github.com/ChrisTitusTech/winutil/issues/198) Xbox Game Bar Activation Broken: Set the Xbox Accessory Management Service to Automatic
|
||||||
```
|
```
|
||||||
Get-Service -Name "XboxGipSvc" | Set-Service -StartupType Automatic
|
Get-Service -Name "XboxGipSvc" | Set-Service -StartupType Automatic
|
||||||
```
|
```
|
||||||
- [#250](https://github.com/ChrisTitusTech/win10script/issues/250) Windows Insider Builds not installing: Telemetry needs to be enabled
|
- 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\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
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0
|
||||||
```
|
```
|
||||||
- [#245](https://github.com/ChrisTitusTech/win10script/issues/245) winget requires interaction on first run: Manually type 'y' and 'enter' into the PowerShell console to continue
|
- Winget requires interaction on first run: Manually type 'y' and 'enter' into the PowerShell console to continue
|
||||||
- [#237](https://github.com/ChrisTitusTech/win10script/issues/237) (Windows 11) Quick Settings no longer works: Launch the Script and click 'Enable Action Center'
|
- (Windows 11) Quick Settings no longer works: Launch the Script and click 'Enable Action Center'
|
||||||
- [#214](https://github.com/ChrisTitusTech/win10script/issues/214) [#165](https://github.com/ChrisTitusTech/win10script/issues/165) [#150](https://github.com/ChrisTitusTech/win10script/issues/150) Explorer no longer launches: Go to Control Panel, File Explorer Options, Change the 'Open File Explorer to' option to 'This PC'.
|
- Explorer no longer launches: Go to Control Panel, File Explorer Options, Change the 'Open File Explorer to' option to 'This PC'.
|
||||||
- [#199](https://github.com/ChrisTitusTech/win10script/issues/199) [#216](https://github.com/ChrisTitusTech/win10script/issues/216) [#233](https://github.com/ChrisTitusTech/win10script/issues/233) [#242](https://github.com/ChrisTitusTech/win10script/issues/242) [#208](https://github.com/ChrisTitusTech/win10script/issues/208) Script doesn't run/PowerShell crashes:
|
- Script doesn't run/PowerShell crashes:
|
||||||
1. Press Windows Key+X and select 'PowerShell (Admin)' (Windows 10) or 'Windows Terminal (Admin)' (Windows 11)
|
1. Press Windows Key+X and select 'PowerShell (Admin)' (Windows 10) or 'Windows Terminal (Admin)' (Windows 11)
|
||||||
2. Run:
|
2. Run:
|
||||||
```
|
```
|
||||||
|
@ -1094,5 +1094,56 @@
|
|||||||
}
|
}
|
||||||
Set-ItemProperty -Path \"HKU:\\.DEFAULT\\Control Panel\\Keyboard\" -Name \"InitialKeyboardIndicators\" -Type DWord -Value 2"
|
Set-ItemProperty -Path \"HKU:\\.DEFAULT\\Control Panel\\Keyboard\" -Name \"InitialKeyboardIndicators\" -Type DWord -Value 2"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"EssTweaksRemoveEdge": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"Invoke-WebRequest -useb https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/Edge_Removal.bat | Invoke-Expression"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MiscTweaksDisableNotifications": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"New-Item -Path \"HKCU:\\Software\\Policies\\Microsoft\\Windows\" -Name \"Explorer\" -force
|
||||||
|
New-ItemProperty -Path \"HKCU:\\Software\\Policies\\Microsoft\\Windows\\Explorer\" -Name \"DisableNotificationCenter\" -PropertyType \"DWord\" -Value 1
|
||||||
|
New-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\PushNotifications\" -Name \"ToastEnabled\" -PropertyType \"DWord\" -Value 0 -force"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MiscTweaksRightClickMenu": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"New-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Name \"InprocServer32\" -force -value \"\" "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"EssTweaksDiskCleanup": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"cleanmgr.exe /d C: /VERYLOWDISK"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MiscTweaksDisableTPMCheck": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"If (!(Test-Path \"HKLM:\\SYSTEM\\Setup\\MoSetup\")) {
|
||||||
|
New-Item -Path \"HKLM:\\SYSTEM\\Setup\\MoSetup\" -Force | Out-Null
|
||||||
|
}
|
||||||
|
Set-ItemProperty -Path \"HKLM:\\SYSTEM\\Setup\\MoSetup\" -Name \"AllowUpgradesWithUnsupportedTPM\" -Type DWord -Value 1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MiscTweaksDisableUAC": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"# This below is the pussy mode which can break some apps. Please. Leave this on 1.
|
||||||
|
# below i will show a way to do it without breaking some Apps that check UAC. U need to be admin tho.
|
||||||
|
# Set-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\" -Name \"EnableLUA\" -Type DWord -Value 0
|
||||||
|
Set-ItemProperty -Path HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System -Name ConsentPromptBehaviorAdmin -Type DWord -Value 0 # Default is 5
|
||||||
|
# This will set the GPO Entry in Security so that Admin users elevate without any prompt while normal users still elevate and u can even leave it ennabled.
|
||||||
|
# It will just not bother u anymore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"EssTweaksDeleteTempFiles": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
|
||||||
|
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"EssTweaksRemoveCortana": {
|
||||||
|
"InvokeScript": [
|
||||||
|
"Get-AppxPackage -allusers Microsoft.549981C3F5F10 | Remove-AppxPackage"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
253
runspace.ps1
253
runspace.ps1
@ -1,11 +1,15 @@
|
|||||||
|
#for CI/CD
|
||||||
|
$BranchToUse = 'test'
|
||||||
|
|
||||||
<#
|
<#
|
||||||
.NOTES
|
.NOTES
|
||||||
Author : @ChrisTitusTech
|
Author : @ChrisTitusTech
|
||||||
Runspace Author : @DeveloperDurp
|
Runspace Author : @DeveloperDurp
|
||||||
Version 0.1
|
Version 0.1
|
||||||
#>
|
#>
|
||||||
|
|
||||||
#region Variables
|
#region Variables
|
||||||
|
|
||||||
$sync = [Hashtable]::Synchronized(@{})
|
$sync = [Hashtable]::Synchronized(@{})
|
||||||
$sync.logfile = "$env:TEMP\winutil.log"
|
$sync.logfile = "$env:TEMP\winutil.log"
|
||||||
|
|
||||||
@ -20,11 +24,11 @@ Version 0.1
|
|||||||
|
|
||||||
#region Functions
|
#region Functions
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# Button clicks
|
# Button clicks
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|
||||||
function Invoke-Button {
|
function Invoke-Button {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -55,9 +59,9 @@ Version 0.1
|
|||||||
"Paneluser" {cmd /c "control userpasswords2"}
|
"Paneluser" {cmd /c "control userpasswords2"}
|
||||||
"Updates*" {Invoke-command $sync.GUIUpdates -ArgumentList "$button"}
|
"Updates*" {Invoke-command $sync.GUIUpdates -ArgumentList "$button"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function uncheckall {
|
function uncheckall {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -92,9 +96,9 @@ Version 0.1
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($output){Write-Output $output.Substring(1)}
|
if($output){Write-Output $output.Substring(1)}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Invoke-Runspace {
|
function Invoke-Runspace {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -123,13 +127,13 @@ Version 0.1
|
|||||||
|
|
||||||
$Script.Runspace = $runspace
|
$Script.Runspace = $runspace
|
||||||
$Script.BeginInvoke()
|
$Script.BeginInvoke()
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# Navigation Controls
|
# Navigation Controls
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|
||||||
function switchtab {
|
function switchtab {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -146,9 +150,9 @@ Version 0.1
|
|||||||
if ($x -eq $psitem){$sync["TabNav"].Items[$psitem].IsSelected = $true}
|
if ($x -eq $psitem){$sync["TabNav"].Items[$psitem].IsSelected = $true}
|
||||||
else{$sync["TabNav"].Items[$psitem].IsSelected = $false}
|
else{$sync["TabNav"].Items[$psitem].IsSelected = $false}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Tweak-Buttons {
|
Function Tweak-Buttons {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -164,7 +168,7 @@ Version 0.1
|
|||||||
if ($preset -contains $psitem ){$sync["$psitem"].IsChecked = $True}
|
if ($preset -contains $psitem ){$sync["$psitem"].IsChecked = $True}
|
||||||
Else{$sync["$psitem"].IsChecked = $false}
|
Else{$sync["$psitem"].IsChecked = $false}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Functions
|
#endregion Functions
|
||||||
|
|
||||||
@ -174,11 +178,11 @@ Version 0.1
|
|||||||
|
|
||||||
#region Scripts
|
#region Scripts
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# Generic Scripts
|
# Generic Scripts
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|
||||||
$sync.WriteLogs = {
|
$sync.WriteLogs = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -213,21 +217,21 @@ Version 0.1
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
Write-Verbose "$date $delimiter $Level $delimiter $message"
|
Write-Verbose "$date $delimiter $Level $delimiter $message"
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# Install Tab
|
# Install Tab
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
This section is working as expected and logs output to console and $ENV:Temp\winutil.log
|
This section is working as expected and logs output to console and $ENV:Temp\winutil.log
|
||||||
|
|
||||||
TODO: Error Handling with winget. Currently it does not handle errors as expected.
|
TODO: Error Handling with winget. Currently it does not handle errors as expected.
|
||||||
|
|
||||||
#>
|
#>
|
||||||
|
|
||||||
$Sync.GUIInstallPrograms = {
|
$Sync.GUIInstallPrograms = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -284,7 +288,6 @@ Version 0.1
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#Invoke a runspace so that the GUI does not lock up
|
#Invoke a runspace so that the GUI does not lock up
|
||||||
|
|
||||||
$sync.taskrunning = $true
|
$sync.taskrunning = $true
|
||||||
@ -296,12 +299,11 @@ Version 0.1
|
|||||||
}
|
}
|
||||||
Invoke-Runspace @params
|
Invoke-Runspace @params
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$sync.ScriptsInstallPrograms = {
|
$sync.ScriptsInstallPrograms = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
This scriptblock will detect if winget is installed and if not attempt to install it. Once ready it will then either upgrade any installs or attempt to install any applications provided.
|
This scriptblock will detect if winget is installed and if not attempt to install it. Once ready it will then either upgrade any installs or attempt to install any applications provided.
|
||||||
|
|
||||||
@ -435,21 +437,21 @@ Version 0.1
|
|||||||
$sync.taskrunning = $false
|
$sync.taskrunning = $false
|
||||||
[System.Windows.MessageBox]::Show("All applications have been installed",'Installs are done!',"OK","Info")
|
[System.Windows.MessageBox]::Show("All applications have been installed",'Installs are done!',"OK","Info")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# Tab 2 - Tweaks Buttons
|
# Tab 2 - Tweaks Buttons
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
This section is working as expected and logs output to console and $ENV:Temp\winutil.log
|
This section is working as expected and logs output to console and $ENV:Temp\winutil.log
|
||||||
|
|
||||||
TODO: Error Handling as Try blocks and -erroraction stop causes runspace to lock up
|
TODO: Error Handling as Try blocks and -erroraction stop causes runspace to lock up
|
||||||
|
|
||||||
#>
|
#>
|
||||||
|
|
||||||
$Sync.GUITweaks = {
|
$Sync.GUITweaks = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -492,9 +494,9 @@ Version 0.1
|
|||||||
|
|
||||||
Invoke-Runspace @params
|
Invoke-Runspace @params
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$Sync.ScriptTweaks = {
|
$Sync.ScriptTweaks = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -569,13 +571,10 @@ Version 0.1
|
|||||||
Write-Logs -Level INFO -Message "Starting Services Modification" -LogPath $sync.logfile
|
Write-Logs -Level INFO -Message "Starting Services Modification" -LogPath $sync.logfile
|
||||||
|
|
||||||
$ServicesToModify | ForEach-Object {
|
$ServicesToModify | ForEach-Object {
|
||||||
$service = Get-Service -Name W32Time -ErrorAction SilentlyContinue
|
|
||||||
if ($service.Length -gt 0) {
|
|
||||||
Stop-Service "$($psitem.name)"
|
Stop-Service "$($psitem.name)"
|
||||||
Set-Service "$($psitem.name)" -StartupType $($psitem.StartupType)
|
Set-Service "$($psitem.name)" -StartupType $($psitem.StartupType)
|
||||||
Write-Logs -Level INFO -Message "Service $($psitem.name) set to $($psitem.StartupType)" -LogPath $sync.logfile
|
Write-Logs -Level INFO -Message "Service $($psitem.name) set to $($psitem.StartupType)" -LogPath $sync.logfile
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Write-Logs -Level INFO -Message "Finished setting Services" -LogPath $sync.logfile
|
Write-Logs -Level INFO -Message "Finished setting Services" -LogPath $sync.logfile
|
||||||
}
|
}
|
||||||
@ -584,8 +583,6 @@ Version 0.1
|
|||||||
Write-Logs -Level INFO -Message "Starting ScheduledTask Modification" -LogPath $sync.logfile
|
Write-Logs -Level INFO -Message "Starting ScheduledTask Modification" -LogPath $sync.logfile
|
||||||
|
|
||||||
$ScheduledTaskToModify | ForEach-Object {
|
$ScheduledTaskToModify | ForEach-Object {
|
||||||
Get-ScheduledTask -TaskName "$($psitem.name)" -ErrorAction SilentlyContinue -OutVariable checktask
|
|
||||||
if ($checktask) {
|
|
||||||
Try{
|
Try{
|
||||||
if($($psitem.State) -eq "Disabled"){
|
if($($psitem.State) -eq "Disabled"){
|
||||||
Disable-ScheduledTask -TaskName "$($psitem.name)" -ErrorAction Stop | Out-Null
|
Disable-ScheduledTask -TaskName "$($psitem.name)" -ErrorAction Stop | Out-Null
|
||||||
@ -596,7 +593,6 @@ Version 0.1
|
|||||||
Write-Logs -Level INFO -Message "Scheduled Task $($psitem.name) set to $($psitem.State)" -LogPath $sync.logfile
|
Write-Logs -Level INFO -Message "Scheduled Task $($psitem.name) set to $($psitem.State)" -LogPath $sync.logfile
|
||||||
}Catch{Write-Logs -Level ERROR -Message "Unable to set Scheduled Task $($psitem.name) set to $($psitem.State)" -LogPath $sync.logfile}
|
}Catch{Write-Logs -Level ERROR -Message "Unable to set Scheduled Task $($psitem.name) set to $($psitem.State)" -LogPath $sync.logfile}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Write-Logs -Level INFO -Message "Finished setting ScheduledTasks" -LogPath $sync.logfile
|
Write-Logs -Level INFO -Message "Finished setting ScheduledTasks" -LogPath $sync.logfile
|
||||||
}
|
}
|
||||||
@ -624,23 +620,24 @@ Version 0.1
|
|||||||
Start-Process $PSHOME\powershell.exe -Verb runas -ArgumentList "-Command $scriptblock" -Wait
|
Start-Process $PSHOME\powershell.exe -Verb runas -ArgumentList "-Command $scriptblock" -Wait
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Logs -Level INFO -Message "Finished Scripts" -LogPath $sync.logfile
|
|
||||||
}
|
|
||||||
#
|
#
|
||||||
# Fix bad tweaks made from previous versions
|
# Fix bad tweaks made from previous versions
|
||||||
#
|
#
|
||||||
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -ErrorAction SilentlyContinue
|
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -ErrorAction SilentlyContinue
|
||||||
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name "ClearPageFileAtShutdown" -Type DWord -Value 0
|
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name "ClearPageFileAtShutdown" -Type DWord -Value 0
|
||||||
|
|
||||||
|
Write-Logs -Level INFO -Message "Finished Scripts" -LogPath $sync.logfile
|
||||||
|
}
|
||||||
|
|
||||||
Write-Logs -Level INFO -Message "Tweaks finished" -LogPath $sync.logfile
|
Write-Logs -Level INFO -Message "Tweaks finished" -LogPath $sync.logfile
|
||||||
|
|
||||||
if($sync["Form"]){
|
if($sync["Form"]){
|
||||||
$sync.taskrunning = $false
|
$sync.taskrunning = $false
|
||||||
[System.Windows.MessageBox]::Show("All modifications have finished",'Tweaks are done!',"OK","Info")
|
[System.Windows.MessageBox]::Show("All modifications have finished",'Tweaks are done!',"OK","Info")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$Sync.GUIUndoTweaks = {
|
$Sync.GUIUndoTweaks = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -665,9 +662,9 @@ Version 0.1
|
|||||||
#Invoke a runspace so that the GUI does not lock up
|
#Invoke a runspace so that the GUI does not lock up
|
||||||
|
|
||||||
Invoke-Runspace $sync.ScriptUndoTweaks
|
Invoke-Runspace $sync.ScriptUndoTweaks
|
||||||
}
|
}
|
||||||
|
|
||||||
$sync.ScriptUndoTweaks = {
|
$sync.ScriptUndoTweaks = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -772,21 +769,21 @@ Version 0.1
|
|||||||
$sync.taskrunning = $false
|
$sync.taskrunning = $false
|
||||||
[System.Windows.MessageBox]::Show("All tweaks have been removed",'Undo is done!',"OK","Info")
|
[System.Windows.MessageBox]::Show("All tweaks have been removed",'Undo is done!',"OK","Info")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# Tab 3 - Config Buttons
|
# Tab 3 - Config Buttons
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
This section is working as expected and logs output to console and $ENV:Temp\winutil.log
|
This section is working as expected and logs output to console and $ENV:Temp\winutil.log
|
||||||
|
|
||||||
TODO: Error Handling as Try blocks and -erroraction stop causes runspace to lock up
|
TODO: Error Handling as Try blocks and -erroraction stop causes runspace to lock up
|
||||||
|
|
||||||
#>
|
#>
|
||||||
|
|
||||||
$Sync.GUIFeatures = {
|
$Sync.GUIFeatures = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -829,9 +826,9 @@ Version 0.1
|
|||||||
|
|
||||||
Invoke-Runspace @params
|
Invoke-Runspace @params
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$sync.ScriptFeatureInstall = {
|
$sync.ScriptFeatureInstall = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -881,13 +878,13 @@ Version 0.1
|
|||||||
[System.Windows.MessageBox]::Show("Features have been installed",'Installs are done!',"OK","Info")
|
[System.Windows.MessageBox]::Show("Features have been installed",'Installs are done!',"OK","Info")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# Tab 4 - Updates Buttons
|
# Tab 4 - Updates Buttons
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|
||||||
$Sync.GUIUpdates = {
|
$Sync.GUIUpdates = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -925,9 +922,9 @@ Version 0.1
|
|||||||
|
|
||||||
Invoke-Runspace @params
|
Invoke-Runspace @params
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$sync.ScriptUpdates = {
|
$sync.ScriptUpdates = {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -1251,7 +1248,7 @@ Version 0.1
|
|||||||
[System.Windows.MessageBox]::Show("Updates have been configured",'Configuration is done!',"OK","Info")
|
[System.Windows.MessageBox]::Show("Updates have been configured",'Configuration is done!',"OK","Info")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Scripts
|
#endregion Scripts
|
||||||
|
|
||||||
@ -1266,27 +1263,27 @@ Invoke-Runspace -ScriptBlock {$sync.ComputerInfo = Get-ComputerInfo} | Out-Null
|
|||||||
|
|
||||||
#region form
|
#region form
|
||||||
|
|
||||||
#WinForms dependancies
|
#WinForms dependancies
|
||||||
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
|
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
|
||||||
Add-Type -AssemblyName System.Windows.Forms
|
Add-Type -AssemblyName System.Windows.Forms
|
||||||
Add-Type -AssemblyName PresentationFramework
|
Add-Type -AssemblyName PresentationFramework
|
||||||
[System.Windows.Forms.Application]::EnableVisualStyles()
|
[System.Windows.Forms.Application]::EnableVisualStyles()
|
||||||
|
|
||||||
#List of config files to import
|
#List of config files to import
|
||||||
$configs = (
|
$configs = (
|
||||||
"applications",
|
"applications",
|
||||||
"tweaks",
|
"tweaks",
|
||||||
"preset",
|
"preset",
|
||||||
"feature"
|
"feature"
|
||||||
)
|
)
|
||||||
|
|
||||||
#Test for admin credentials
|
#Test for admin credentials
|
||||||
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
||||||
$IsAdmin = $false
|
$IsAdmin = $false
|
||||||
}
|
}
|
||||||
|
|
||||||
#To use local files run $env:environment = "dev" before starting the ps1 file
|
#To use local files run $env:environment = "dev" before starting the ps1 file
|
||||||
if($env:environment -eq "dev"){
|
if($env:environment -eq "dev"){
|
||||||
|
|
||||||
if($IsAdmin -eq $false){
|
if($IsAdmin -eq $false){
|
||||||
[System.Windows.MessageBox]::Show("This application needs to be run as Admin",'Administrative privileges required',"OK","Info")
|
[System.Windows.MessageBox]::Show("This application needs to be run as Admin",'Administrative privileges required',"OK","Info")
|
||||||
@ -1294,21 +1291,22 @@ Invoke-Runspace -ScriptBlock {$sync.ComputerInfo = Get-ComputerInfo} | Out-Null
|
|||||||
}
|
}
|
||||||
|
|
||||||
$confirm = [System.Windows.MessageBox]::Show('$ENV:Evnronment is set to dev. Do you wish to load the dev environment?','Dev Environment tag detected',"YesNo","Info")
|
$confirm = [System.Windows.MessageBox]::Show('$ENV:Evnronment is set to dev. Do you wish to load the dev environment?','Dev Environment tag detected',"YesNo","Info")
|
||||||
}
|
}
|
||||||
|
|
||||||
if($confirm -eq "yes"){
|
if($confirm -eq "yes"){
|
||||||
$inputXML = Get-Content "MainWindow.xaml"
|
$inputXML = Get-Content "MainWindow.xaml"
|
||||||
$configs | ForEach-Object {
|
$configs | ForEach-Object {
|
||||||
$sync["$PSItem"] = Get-Content .\config\$PSItem.json | ConvertFrom-Json
|
$sync["$PSItem"] = Get-Content .\config\$PSItem.json | ConvertFrom-Json
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
||||||
#Select the working branch
|
#Select the working branch
|
||||||
if($env:branch){
|
if($env:branch){
|
||||||
$branch = $env:branch
|
$branch = $env:branch
|
||||||
}
|
}
|
||||||
Else {$branch = "main"}
|
|
||||||
|
Else {$branch = $BranchToUse}
|
||||||
|
|
||||||
if($IsAdmin -eq $false){
|
if($IsAdmin -eq $false){
|
||||||
Write-Output "This application needs to be run as an administrator. Attempting relaunch"
|
Write-Output "This application needs to be run as an administrator. Attempting relaunch"
|
||||||
@ -1320,7 +1318,7 @@ Invoke-Runspace -ScriptBlock {$sync.ComputerInfo = Get-ComputerInfo} | Out-Null
|
|||||||
$configs | ForEach-Object {
|
$configs | ForEach-Object {
|
||||||
$sync["$psitem"] = Invoke-RestMethod "https://raw.githubusercontent.com/ChrisTitusTech/winutil/$branch/config/$psitem.json"
|
$sync["$psitem"] = Invoke-RestMethod "https://raw.githubusercontent.com/ChrisTitusTech/winutil/$branch/config/$psitem.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion form
|
#endregion form
|
||||||
|
|
||||||
@ -1346,26 +1344,26 @@ write-host "====Chris Titus Tech====="
|
|||||||
write-host "=====Windows Toolbox====="
|
write-host "=====Windows Toolbox====="
|
||||||
|
|
||||||
if($gui -eq $true){
|
if($gui -eq $true){
|
||||||
$inputXML = $inputXML -replace 'mc:Ignorable="d"','' -replace "x:N",'N' -replace '^<Win.*', '<Window'
|
$inputXML = $inputXML -replace 'mc:Ignorable="d"','' -replace "x:N",'N' -replace '^<Win.*', '<Window'
|
||||||
[xml]$XAML = $inputXML
|
[xml]$XAML = $inputXML
|
||||||
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
|
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
|
||||||
|
|
||||||
try{$sync["Form"]=[Windows.Markup.XamlReader]::Load( $reader )}
|
try{$sync["Form"]=[Windows.Markup.XamlReader]::Load( $reader )}
|
||||||
catch [System.Management.Automation.MethodInvocationException] {
|
catch [System.Management.Automation.MethodInvocationException] {
|
||||||
Write-Warning "We ran into a problem with the XAML code. Check the syntax for this control..."
|
Write-Warning "We ran into a problem with the XAML code. Check the syntax for this control..."
|
||||||
write-host $error[0].Exception.Message -ForegroundColor Red
|
write-host $error[0].Exception.Message -ForegroundColor Red
|
||||||
if ($error[0].Exception.Message -like "*button*"){
|
if ($error[0].Exception.Message -like "*button*"){
|
||||||
write-warning "Ensure your <button in the `$inputXML does NOT have a Click=ButtonClick property. PS can't handle this`n`n`n`n"}
|
write-warning "Ensure your <button in the `$inputXML does NOT have a Click=ButtonClick property. PS can't handle this`n`n`n`n"}
|
||||||
}
|
}
|
||||||
catch{#if it broke some other way <img draggable="false" role="img" class="emoji" alt="😀" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/svg/1f600.svg">
|
catch{#if it broke some other way <img draggable="false" role="img" class="emoji" alt="😀" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/svg/1f600.svg">
|
||||||
Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."
|
Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."
|
||||||
}
|
}
|
||||||
|
|
||||||
# Store Form Objects In PowerShell
|
# Store Form Objects In PowerShell
|
||||||
$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)}
|
||||||
|
|
||||||
#Gives every button the invoke-button function
|
#Gives every button the invoke-button function
|
||||||
$sync.keys | ForEach-Object {
|
$sync.keys | ForEach-Object {
|
||||||
if($sync.$psitem){
|
if($sync.$psitem){
|
||||||
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "Button"){
|
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "Button"){
|
||||||
$sync["$psitem"].Add_Click({
|
$sync["$psitem"].Add_Click({
|
||||||
@ -1374,18 +1372,18 @@ if($gui -eq $true){
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sync["Form"].ShowDialog() | out-null
|
$sync["Form"].ShowDialog() | out-null
|
||||||
}
|
}
|
||||||
|
|
||||||
<#
|
<#
|
||||||
How to run Arguments
|
How to run Arguments
|
||||||
|
|
||||||
First step is to set the $env:args variable with the setups you wish to do. To do multiple items put a " " space between each command.
|
First step is to set the $env:args variable with the setups you wish to do. To do multiple items put a " " space between each command.
|
||||||
For commands that require input seperate the command with a semicolon ":" and provide the values to pass to that argument seperated by a comma ",". (IE: Install:git.git,windirstat.windirstat)
|
For commands that require input seperate the command with a semicolon ":" and provide the values to pass to that argument seperated by a comma ",". (IE: Install:git.git,windirstat.windirstat)
|
||||||
|
|
||||||
Supported arguments:
|
Supported arguments:
|
||||||
|
|
||||||
InstallUpgrade
|
InstallUpgrade
|
||||||
UndoTweaks
|
UndoTweaks
|
||||||
@ -1404,7 +1402,7 @@ if($gui -eq $true){
|
|||||||
Tweaks:value1,values2,...
|
Tweaks:value1,values2,...
|
||||||
- Values should be what you find inside the tweaks.json file
|
- Values should be what you find inside the tweaks.json file
|
||||||
|
|
||||||
Example usage:
|
Example usage:
|
||||||
|
|
||||||
$env:args = "Install:git.git,WinDirStat.WinDirStat "; iwr -useb https://christitus.com/win | iex
|
$env:args = "Install:git.git,WinDirStat.WinDirStat "; iwr -useb https://christitus.com/win | iex
|
||||||
|
|
||||||
@ -1417,29 +1415,30 @@ if($gui -eq $true){
|
|||||||
#>
|
#>
|
||||||
|
|
||||||
If($env:args){
|
If($env:args){
|
||||||
Write-Verbose "Arguments Detected, Running Args"
|
Write-Verbose "Arguments Detected, Running Args"
|
||||||
If($env:args -match '\bInstallUpgrade\b'){Invoke-command $sync.ScriptsInstallPrograms -ArgumentList "Upgrade"}
|
If($env:args -match '\bInstallUpgrade\b'){Invoke-command $sync.ScriptsInstallPrograms -ArgumentList "Upgrade"}
|
||||||
If($env:args -match '\bUndoTweaks\b'){Invoke-command $sync.ScriptUndoTweaks}
|
If($env:args -match '\bUndoTweaks\b'){Invoke-command $sync.ScriptUndoTweaks}
|
||||||
If($env:args -match '\bPanelControl\b'){cmd /c control}
|
If($env:args -match '\bPanelControl\b'){cmd /c control}
|
||||||
If($env:args -match '\bPanelNetwork\b'){cmd /c ncpa.cpl}
|
If($env:args -match '\bPanelNetwork\b'){cmd /c ncpa.cpl}
|
||||||
If($env:args -match '\bPanelPower\b'){cmd /c powercfg.cpl}
|
If($env:args -match '\bPanelPower\b'){cmd /c powercfg.cpl}
|
||||||
If($env:args -match '\bPanelSound\b'){cmd /c mmsys.cpl}
|
If($env:args -match '\bPanelSound\b'){cmd /c mmsys.cpl}
|
||||||
If($env:args -match '\bPanelSystem\b'){cmd /c sysdm.cpl}
|
If($env:args -match '\bPanelSystem\b'){cmd /c sysdm.cpl}
|
||||||
If($env:args -match '\bPanelUser\b'){cmd /c "control userpasswords2"}
|
If($env:args -match '\bPanelUser\b'){cmd /c "control userpasswords2"}
|
||||||
If($env:args -match '\bDefaultUpdates\b'){Invoke-command $sync.ScriptUpdates -ArgumentList "Updatesdefault"}
|
If($env:args -match '\bDefaultUpdates\b'){Invoke-command $sync.ScriptUpdates -ArgumentList "Updatesdefault"}
|
||||||
If($env:args -match '\bDisableUpdates\b'){Invoke-command $sync.ScriptUpdates -ArgumentList "Updatesdisable"}
|
If($env:args -match '\bDisableUpdates\b'){Invoke-command $sync.ScriptUpdates -ArgumentList "Updatesdisable"}
|
||||||
If($env:args -match '\bEnableSecurity\b'){Invoke-command $sync.ScriptUpdates -ArgumentList "Updatessecurity"}
|
If($env:args -match '\bEnableSecurity\b'){Invoke-command $sync.ScriptUpdates -ArgumentList "Updatessecurity"}
|
||||||
If($env:args -match '\bQuitAfter\b'){Break}
|
If($env:args -match '\bQuitAfter\b'){Break}
|
||||||
If($env:args -match '\bInstall\b'){
|
If($env:args -match '\bInstall\b'){
|
||||||
$ProgramstoInstall = (($env:args-split " " | Where-Object {$_ -like "install*"} ) -split ":")[1]
|
$ProgramstoInstall = (($env:args-split " " | Where-Object {$_ -like "install*"} ) -split ":")[1]
|
||||||
Write-Verbose "Installing $ProgramstoInstall."
|
Write-Verbose "Installing $ProgramstoInstall."
|
||||||
Invoke-command $sync.ScriptsInstallPrograms -ArgumentList "$ProgramstoInstall"
|
Invoke-command $sync.ScriptsInstallPrograms -ArgumentList "$ProgramstoInstall"
|
||||||
}
|
}
|
||||||
If($env:args -match '\bTweaks\b'){
|
If($env:args -match '\bTweaks\b'){
|
||||||
$Tweakstorun = (($env:args-split " " | Where-Object {$_ -like "Tweaks*"} ) -split ":")[1]
|
$Tweakstorun = (($env:args-split " " | Where-Object {$_ -like "Tweaks*"} ) -split ":")[1]
|
||||||
Write-Verbose "Running the following tweaks $Tweakstorun."
|
Write-Verbose "Running the following tweaks $Tweakstorun."
|
||||||
Invoke-command $sync.ScriptTweaks -ArgumentList "$Tweakstorun"
|
Invoke-command $sync.ScriptTweaks -ArgumentList "$Tweakstorun"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "Thank you for using winutil!"
|
Write-Host "Thank you for using winutil!"
|
||||||
|
|
||||||
|
81
winutil.ps1
81
winutil.ps1
@ -1,3 +1,5 @@
|
|||||||
|
#for CI/CD
|
||||||
|
$BranchToUse = 'test'
|
||||||
<#
|
<#
|
||||||
.NOTES
|
.NOTES
|
||||||
Author : Chris Titus @christitustech
|
Author : Chris Titus @christitustech
|
||||||
@ -5,8 +7,7 @@
|
|||||||
Version 0.0.1
|
Version 0.0.1
|
||||||
#>
|
#>
|
||||||
|
|
||||||
#$inputXML = Get-Content "MainWindow.xaml" #uncomment for development
|
$inputXML = (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/ChrisTitusTech/winutil/$BranchToUse/MainWindow.xaml") #uncomment for Production
|
||||||
$inputXML = (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/MainWindow.xaml") #uncomment for Production
|
|
||||||
|
|
||||||
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
|
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
|
||||||
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
|
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
|
||||||
@ -132,7 +133,7 @@ $WPFinstall.Add_Click({
|
|||||||
$WPFInstallautohotkey.IsChecked = $false
|
$WPFInstallautohotkey.IsChecked = $false
|
||||||
}
|
}
|
||||||
If ( $WPFInstallbrave.IsChecked -eq $true ) {
|
If ( $WPFInstallbrave.IsChecked -eq $true ) {
|
||||||
$wingetinstall.Add("BraveSoftware.BraveBrowser")
|
$wingetinstall.Add("Brave.Brave")
|
||||||
$WPFInstallbrave.IsChecked = $false
|
$WPFInstallbrave.IsChecked = $false
|
||||||
}
|
}
|
||||||
If ( $WPFInstallchrome.IsChecked -eq $true ) {
|
If ( $WPFInstallchrome.IsChecked -eq $true ) {
|
||||||
@ -545,33 +546,25 @@ $WPFinstall.Add_Click({
|
|||||||
Write-Host "Winget Already Installed"
|
Write-Host "Winget Already Installed"
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (((((Get-ComputerInfo).OSName.IndexOf("LTSC")) -ne -1) -or ((Get-ComputerInfo).OSName.IndexOf("Server") -ne -1)) -and (((Get-ComputerInfo).WindowsVersion) -ge "1809")) {
|
#Gets the computer's information
|
||||||
#Checks if Windows edition is LTSC/Server 2019+
|
$ComputerInfo = Get-ComputerInfo
|
||||||
#Manually Installing Winget
|
|
||||||
|
#Gets the Windows Edition
|
||||||
|
$OSName = if ($ComputerInfo.OSName) {
|
||||||
|
$ComputerInfo.OSName
|
||||||
|
}else {
|
||||||
|
$ComputerInfo.WindowsProductName
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((($OSName.IndexOf("LTSC")) -ne -1) -or ($OSName.IndexOf("Server") -ne -1)) -and (($ComputerInfo.WindowsVersion) -ge "1809")) {
|
||||||
|
|
||||||
Write-Host "Running Alternative Installer for LTSC/Server Editions"
|
Write-Host "Running Alternative Installer for LTSC/Server Editions"
|
||||||
|
|
||||||
#Download Needed Files
|
# Switching to winget-install from PSGallery from asheroto
|
||||||
Write-Host "Downloading Needed Files..."
|
# Source: https://github.com/asheroto/winget-installer
|
||||||
Start-BitsTransfer -Source "https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx" -Destination "$env:TEMP\Microsoft.VCLibs.x64.14.00.Desktop.appx"
|
|
||||||
Start-BitsTransfer -Source "https://github.com/microsoft/winget-cli/releases/download/v1.2.10271/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -Destination "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
|
|
||||||
Start-BitsTransfer -Source "https://github.com/microsoft/winget-cli/releases/download/v1.2.10271/b0a0692da1034339b76dce1c298a1e42_License1.xml" -Destination "$env:TEMP\b0a0692da1034339b76dce1c298a1e42_License1.xml"
|
|
||||||
|
|
||||||
#Installing Packages
|
Start-Process powershell.exe -Verb RunAs -ArgumentList "-command irm https://raw.githubusercontent.com/asheroto/winget-installer/master/winget-install.ps1 | iex | Out-Host" -WindowStyle Normal
|
||||||
Write-Host "Installing Packages..."
|
|
||||||
Add-AppxProvisionedPackage -Online -PackagePath "$env:TEMP\Microsoft.VCLibs.x64.14.00.Desktop.appx" -SkipLicense
|
|
||||||
Add-AppxProvisionedPackage -Online -PackagePath "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -LicensePath "$env:TEMP\b0a0692da1034339b76dce1c298a1e42_License1.xml"
|
|
||||||
Write-Host "winget Installed (Reboot might be required before winget will work)"
|
|
||||||
|
|
||||||
#Sleep for 5 seconds to maximize chance that winget will work without reboot
|
|
||||||
Write-Host "Pausing for 5 seconds to maximize chance that winget will work without reboot"
|
|
||||||
Start-Sleep -s 5
|
|
||||||
|
|
||||||
#Removing no longer needed Files
|
|
||||||
Write-Host "Removing no longer needed Files..."
|
|
||||||
Remove-Item -Path "$env:TEMP\Microsoft.VCLibs.x64.14.00.Desktop.appx" -Force
|
|
||||||
Remove-Item -Path "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -Force
|
|
||||||
Remove-Item -Path "$env:TEMP\b0a0692da1034339b76dce1c298a1e42_License1.xml" -Force
|
|
||||||
Write-Host "Removed Files that are no longer needed"
|
|
||||||
}
|
}
|
||||||
elseif (((Get-ComputerInfo).WindowsVersion) -lt "1809") {
|
elseif (((Get-ComputerInfo).WindowsVersion) -lt "1809") {
|
||||||
#Checks if Windows Version is too old for winget
|
#Checks if Windows Version is too old for winget
|
||||||
@ -755,15 +748,14 @@ $WPFtweaksbutton.Add_Click({
|
|||||||
|
|
||||||
If ( $WPFEssTweaksDeleteTempFiles.IsChecked -eq $true ) {
|
If ( $WPFEssTweaksDeleteTempFiles.IsChecked -eq $true ) {
|
||||||
Write-Host "Delete Temp Files"
|
Write-Host "Delete Temp Files"
|
||||||
Get-ChildItem -Path "C:\Windows\Temp" *.* -Recurse | Remove-Item -Force -Recurse
|
Get-ChildItem -Path "C:\Windows\Temp" *.* -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
|
||||||
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse
|
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
|
||||||
$WPFEssTweaksDeleteTempFiles.IsChecked = $false
|
$WPFEssTweaksDeleteTempFiles.IsChecked = $false
|
||||||
Write-Host "================================="
|
Write-Host "======================================="
|
||||||
Write-Host "--- !!!!ERRORS ARE NORMAL!!!! ---"
|
Write-Host "--- Cleaned following folders:"
|
||||||
Write-Host "--- Cleaned following folders:---"
|
Write-Host "--- C:\Windows\Temp"
|
||||||
Write-Host "--- C:\Windows\Temp ---"
|
Write-Host "--- "$env:TEMP
|
||||||
Write-Host "---"$env:TEMP"---"
|
Write-Host "======================================="
|
||||||
Write-Host "================================="
|
|
||||||
}
|
}
|
||||||
|
|
||||||
If ( $WPFEssTweaksDVR.IsChecked -eq $true ) {
|
If ( $WPFEssTweaksDVR.IsChecked -eq $true ) {
|
||||||
@ -775,6 +767,9 @@ $WPFtweaksbutton.Add_Click({
|
|||||||
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_EFSEFeatureFlags" -Type DWord -Value 0
|
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_EFSEFeatureFlags" -Type DWord -Value 0
|
||||||
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_Enabled" -Type DWord -Value 0
|
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_Enabled" -Type DWord -Value 0
|
||||||
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_FSEBehavior" -Type DWord -Value 2
|
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_FSEBehavior" -Type DWord -Value 2
|
||||||
|
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR")) {
|
||||||
|
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" -Force
|
||||||
|
}
|
||||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" -Name "AllowGameDVR" -Type DWord -Value 0
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" -Name "AllowGameDVR" -Type DWord -Value 0
|
||||||
|
|
||||||
#Disabling Gamebar Presence Writer, which causes stutter in games
|
#Disabling Gamebar Presence Writer, which causes stutter in games
|
||||||
@ -844,9 +839,11 @@ $WPFtweaksbutton.Add_Click({
|
|||||||
$WPFMiscTweaksRightClickMenu.IsChecked = $false
|
$WPFMiscTweaksRightClickMenu.IsChecked = $false
|
||||||
}
|
}
|
||||||
If ( $WPFEssTweaksOO.IsChecked -eq $true ) {
|
If ( $WPFEssTweaksOO.IsChecked -eq $true ) {
|
||||||
|
If (!(Test-Path .\ooshutup10.cfg)) {
|
||||||
Write-Host "Running O&O Shutup with Recommended Settings"
|
Write-Host "Running O&O Shutup with Recommended Settings"
|
||||||
curl.exe -ss "https://raw.githubusercontent.com/ChrisTitusTech/win10script/master/ooshutup10.cfg" -o ooshutup10.cfg
|
curl.exe -ss "https://raw.githubusercontent.com/ChrisTitusTech/win10script/master/ooshutup10.cfg" -o ooshutup10.cfg
|
||||||
curl.exe -ss "https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe" -o OOSU10.exe
|
curl.exe -ss "https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe" -o OOSU10.exe
|
||||||
|
}
|
||||||
./OOSU10.exe ooshutup10.cfg /quiet
|
./OOSU10.exe ooshutup10.cfg /quiet
|
||||||
$WPFEssTweaksOO.IsChecked = $false
|
$WPFEssTweaksOO.IsChecked = $false
|
||||||
}
|
}
|
||||||
@ -952,7 +949,7 @@ $WPFtweaksbutton.Add_Click({
|
|||||||
# -ErrorAction SilentlyContinue is so it doesn't write an error to stdout if a service doesn't exist
|
# -ErrorAction SilentlyContinue is so it doesn't write an error to stdout if a service doesn't exist
|
||||||
|
|
||||||
Write-Host "Setting $service StartupType to Manual"
|
Write-Host "Setting $service StartupType to Manual"
|
||||||
Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Manual
|
Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Manual -ErrorAction SilentlyContinue
|
||||||
}
|
}
|
||||||
$WPFEssTweaksServices.IsChecked = $false
|
$WPFEssTweaksServices.IsChecked = $false
|
||||||
}
|
}
|
||||||
@ -1065,17 +1062,17 @@ $WPFtweaksbutton.Add_Click({
|
|||||||
## Performance Tweaks and More Telemetry
|
## Performance Tweaks and More Telemetry
|
||||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" -Name "SearchOrderConfig" -Type DWord -Value 0
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" -Name "SearchOrderConfig" -Type DWord -Value 0
|
||||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" -Name "SystemResponsiveness" -Type DWord -Value 0
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" -Name "SystemResponsiveness" -Type DWord -Value 0
|
||||||
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "WaitToKillServiceTimeout" -Type DWord -Value 2000
|
|
||||||
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "MenuShowDelay" -Type DWord -Value 1
|
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "MenuShowDelay" -Type DWord -Value 1
|
||||||
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "WaitToKillAppTimeout" -Type DWord -Value 5000
|
|
||||||
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -ErrorAction SilentlyContinue
|
|
||||||
# Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -Type DWord -Value 4000 # Note: This caused flickering
|
|
||||||
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "AutoEndTasks" -Type DWord -Value 1
|
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "AutoEndTasks" -Type DWord -Value 1
|
||||||
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "LowLevelHooksTimeout" -Type DWord -Value 1000
|
|
||||||
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "WaitToKillServiceTimeout" -Type DWord -Value 2000
|
|
||||||
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name "ClearPageFileAtShutdown" -Type DWord -Value 0
|
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name "ClearPageFileAtShutdown" -Type DWord -Value 0
|
||||||
Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" -Name "MouseHoverTime" -Type DWord -Value 10
|
Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" -Name "MouseHoverTime" -Type DWord -Value 10
|
||||||
|
|
||||||
|
## Timeout Tweaks cause flickering on Windows now
|
||||||
|
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "WaitToKillAppTimeout" -ErrorAction SilentlyContinue
|
||||||
|
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -ErrorAction SilentlyContinue
|
||||||
|
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "WaitToKillServiceTimeout" -ErrorAction SilentlyContinue
|
||||||
|
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "LowLevelHooksTimeout" -ErrorAction SilentlyContinue
|
||||||
|
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "WaitToKillServiceTimeout" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
# Network Tweaks
|
# Network Tweaks
|
||||||
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "IRPStackSize" -Type DWord -Value 20
|
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "IRPStackSize" -Type DWord -Value 20
|
||||||
@ -1197,7 +1194,7 @@ $WPFtweaksbutton.Add_Click({
|
|||||||
}
|
}
|
||||||
If ( $WPFEssTweaksRemoveEdge.IsChecked -eq $true ) {
|
If ( $WPFEssTweaksRemoveEdge.IsChecked -eq $true ) {
|
||||||
Write-Host "Removing Microsoft Edge..."
|
Write-Host "Removing Microsoft Edge..."
|
||||||
Invoke-WebRequest -useb https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/Edge_Removal.bat | Invoke-Expression
|
Invoke-WebRequest -useb https://raw.githubusercontent.com/ChrisTitusTech/winutil/$BranchToUse/Edge_Removal.bat | Invoke-Expression
|
||||||
$WPFEssTweaksRemoveEdge.IsChecked = $false
|
$WPFEssTweaksRemoveEdge.IsChecked = $false
|
||||||
}
|
}
|
||||||
If ( $WPFEssTweaksDeBloat.IsChecked -eq $true ) {
|
If ( $WPFEssTweaksDeBloat.IsChecked -eq $true ) {
|
||||||
|
Loading…
Reference in New Issue
Block a user