mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-07-07 13:43:50 -05:00
Compare commits
2 Commits
855565c247
...
24.06.25
Author | SHA1 | Date | |
---|---|---|---|
ff80ef491a | |||
4bc54de8cd |
@ -2465,21 +2465,22 @@
|
|||||||
},
|
},
|
||||||
"WPFTweaksRemoveOnedrive": {
|
"WPFTweaksRemoveOnedrive": {
|
||||||
"Content": "Remove OneDrive",
|
"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",
|
"category": "z__Advanced Tweaks - CAUTION",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Order": "a030_",
|
"Order": "a030_",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
"
|
"
|
||||||
$OneDrivePath = $($env:OneDrive)
|
|
||||||
Write-Host \"Removing OneDrive\"
|
Write-Host \"Kill OneDrive process\"
|
||||||
$regPath = \"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OneDriveSetup.exe\"
|
taskkill.exe /F /IM \"OneDrive.exe\"
|
||||||
$OneDriveUninstallString = Get-ItemPropertyValue \"Registry::$regPath\" -Name \"UninstallString\"
|
taskkill.exe /F /IM \"explorer.exe\"
|
||||||
$OneDriveExe, $OneDriveArgs = $OneDriveUninstallString.Split(\" \")
|
|
||||||
Start-Process -FilePath $OneDriveExe -ArgumentList \"$OneDriveArgs /silent\" -NoNewWindow -Wait
|
Write-Host \"Copy all OneDrive to Root UserProfile\"
|
||||||
if (-not (Test-Path $regPath)){
|
Start-Process -FilePath powershell -ArgumentList \"robocopy '$($env:USERPROFILE.TrimEnd())\\OneDrive' '$($env:USERPROFILE.TrimEnd())\\' /e /xj\" -NoNewWindow -Wait
|
||||||
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 \"Remove OneDrive\"
|
||||||
|
Start-Process -FilePath winget -ArgumentList \"uninstall -e --purge --force --silent Microsoft.OneDrive \" -NoNewWindow -Wait
|
||||||
|
|
||||||
Write-Host \"Removing OneDrive leftovers\"
|
Write-Host \"Removing OneDrive leftovers\"
|
||||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\"
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\"
|
||||||
@ -2487,8 +2488,8 @@
|
|||||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:programdata\\Microsoft OneDrive\"
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:programdata\\Microsoft OneDrive\"
|
||||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:systemdrive\\OneDriveTemp\"
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:systemdrive\\OneDriveTemp\"
|
||||||
# check if directory is empty before removing:
|
# check if directory is empty before removing:
|
||||||
If ((Get-ChildItem \"$OneDrivePath\" -Recurse | Measure-Object).Count -eq 0) {
|
If ((Get-ChildItem \"$env:userprofile\\OneDrive\" -Recurse | Measure-Object).Count -eq 0) {
|
||||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$OneDrivePath\"
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:userprofile\\OneDrive\"
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host \"Remove Onedrive from explorer sidebar\"
|
Write-Host \"Remove Onedrive from explorer sidebar\"
|
||||||
@ -2531,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 \"{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
|
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\"
|
Write-Host \"Restarting explorer\"
|
||||||
taskkill.exe /F /IM \"explorer.exe\"
|
|
||||||
Start-Process \"explorer.exe\"
|
Start-Process \"explorer.exe\"
|
||||||
|
|
||||||
Write-Host \"Waiting for explorer to complete loading\"
|
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 \"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.\"
|
||||||
Write-Host \"If there are Files missing afterwards, please Login to Onedrive.com and Download them manually\" -ForegroundColor Yellow
|
|
||||||
Start-Sleep 5
|
Start-Sleep 5
|
||||||
}
|
|
||||||
else{
|
|
||||||
Write-Host \"Something went Wrong during the Unistallation of OneDrive\" -ForegroundColor Red
|
|
||||||
}
|
|
||||||
"
|
"
|
||||||
],
|
],
|
||||||
"UndoScript": [
|
"UndoScript": [
|
||||||
|
@ -178,17 +178,67 @@ $cttLogoPath = @"
|
|||||||
$winutilTextBlock.Foreground = $foregroundColor
|
$winutilTextBlock.Foreground = $foregroundColor
|
||||||
$winutilTextBlock.Margin = New-Object Windows.Thickness(10, 5, 10, 5) # Add margins around the text block
|
$winutilTextBlock.Margin = New-Object Windows.Thickness(10, 5, 10, 5) # Add margins around the text block
|
||||||
$stackPanel.Children.Add($winutilTextBlock)
|
$stackPanel.Children.Add($winutilTextBlock)
|
||||||
|
|
||||||
# Add TextBlock for information with text wrapping and margins
|
# Add TextBlock for information with text wrapping and margins
|
||||||
$messageTextBlock = New-Object Windows.Controls.TextBlock
|
$messageTextBlock = New-Object Windows.Controls.TextBlock
|
||||||
$messageTextBlock.Text = $Message
|
|
||||||
$messageTextBlock.TextWrapping = [Windows.TextWrapping]::Wrap # Enable text wrapping
|
$messageTextBlock.TextWrapping = [Windows.TextWrapping]::Wrap # Enable text wrapping
|
||||||
$messageTextBlock.HorizontalAlignment = [Windows.HorizontalAlignment]::Left
|
$messageTextBlock.HorizontalAlignment = [Windows.HorizontalAlignment]::Left
|
||||||
$messageTextBlock.VerticalAlignment = [Windows.VerticalAlignment]::Top
|
$messageTextBlock.VerticalAlignment = [Windows.VerticalAlignment]::Top
|
||||||
$messageTextBlock.Margin = New-Object Windows.Thickness(10) # Add margins around the text block
|
$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)
|
$grid.Children.Add($messageTextBlock)
|
||||||
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
||||||
|
|
||||||
|
|
||||||
# Add OK button
|
# Add OK button
|
||||||
$okButton = New-Object Windows.Controls.Button
|
$okButton = New-Object Windows.Controls.Button
|
||||||
$okButton.Content = "OK"
|
$okButton.Content = "OK"
|
||||||
|
@ -467,14 +467,13 @@ $sync["AboutMenuItem"].Add_Click({
|
|||||||
# Handle Export menu item click
|
# Handle Export menu item click
|
||||||
Write-Debug "About clicked"
|
Write-Debug "About clicked"
|
||||||
$sync["SettingsPopup"].IsOpen = $false
|
$sync["SettingsPopup"].IsOpen = $false
|
||||||
# Example usage
|
|
||||||
$authorInfo = @"
|
$authorInfo = @"
|
||||||
Author : @christitustech
|
Author : <a href="https://github.com/ChrisTitusTech">@christitustech</a>
|
||||||
Runspace : @DeveloperDurp
|
Runspace : <a href="https://github.com/DeveloperDurp">@DeveloperDurp</a>
|
||||||
GUI : @KonTy
|
GUI : <a href="https://github.com/KonTy">@KonTy</a>
|
||||||
MicroWin : @KonTy
|
MicroWin : <a href="https://github.com/KonTy">@KonTy</a>
|
||||||
GitHub : https://github.com/ChrisTitusTech/winutil
|
GitHub : <a href="https://github.com/ChrisTitusTech/winutil">ChrisTitusTech/winutil</a>
|
||||||
Version : $($sync.version)
|
Version : <a href="https://github.com/ChrisTitusTech/winutil/releases/tag/$($sync.version)">$($sync.version)</a>
|
||||||
"@
|
"@
|
||||||
Show-CustomDialog -Message $authorInfo -Width 400
|
Show-CustomDialog -Message $authorInfo -Width 400
|
||||||
})
|
})
|
||||||
|
71
winutil.ps1
71
winutil.ps1
@ -8,7 +8,7 @@
|
|||||||
Author : Chris Titus @christitustech
|
Author : Chris Titus @christitustech
|
||||||
Runspace Author: @DeveloperDurp
|
Runspace Author: @DeveloperDurp
|
||||||
GitHub : https://github.com/ChrisTitusTech
|
GitHub : https://github.com/ChrisTitusTech
|
||||||
Version : 24.06.20
|
Version : 24.06.25
|
||||||
#>
|
#>
|
||||||
param (
|
param (
|
||||||
[switch]$Debug,
|
[switch]$Debug,
|
||||||
@ -45,7 +45,7 @@ Add-Type -AssemblyName System.Windows.Forms
|
|||||||
# Variable to sync between runspaces
|
# Variable to sync between runspaces
|
||||||
$sync = [Hashtable]::Synchronized(@{})
|
$sync = [Hashtable]::Synchronized(@{})
|
||||||
$sync.PSScriptRoot = $PSScriptRoot
|
$sync.PSScriptRoot = $PSScriptRoot
|
||||||
$sync.version = "24.06.20"
|
$sync.version = "24.06.25"
|
||||||
$sync.configs = @{}
|
$sync.configs = @{}
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
|
||||||
@ -2810,17 +2810,67 @@ $cttLogoPath = @"
|
|||||||
$winutilTextBlock.Foreground = $foregroundColor
|
$winutilTextBlock.Foreground = $foregroundColor
|
||||||
$winutilTextBlock.Margin = New-Object Windows.Thickness(10, 5, 10, 5) # Add margins around the text block
|
$winutilTextBlock.Margin = New-Object Windows.Thickness(10, 5, 10, 5) # Add margins around the text block
|
||||||
$stackPanel.Children.Add($winutilTextBlock)
|
$stackPanel.Children.Add($winutilTextBlock)
|
||||||
|
|
||||||
# Add TextBlock for information with text wrapping and margins
|
# Add TextBlock for information with text wrapping and margins
|
||||||
$messageTextBlock = New-Object Windows.Controls.TextBlock
|
$messageTextBlock = New-Object Windows.Controls.TextBlock
|
||||||
$messageTextBlock.Text = $Message
|
|
||||||
$messageTextBlock.TextWrapping = [Windows.TextWrapping]::Wrap # Enable text wrapping
|
$messageTextBlock.TextWrapping = [Windows.TextWrapping]::Wrap # Enable text wrapping
|
||||||
$messageTextBlock.HorizontalAlignment = [Windows.HorizontalAlignment]::Left
|
$messageTextBlock.HorizontalAlignment = [Windows.HorizontalAlignment]::Left
|
||||||
$messageTextBlock.VerticalAlignment = [Windows.VerticalAlignment]::Top
|
$messageTextBlock.VerticalAlignment = [Windows.VerticalAlignment]::Top
|
||||||
$messageTextBlock.Margin = New-Object Windows.Thickness(10) # Add margins around the text block
|
$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)
|
$grid.Children.Add($messageTextBlock)
|
||||||
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
||||||
|
|
||||||
|
|
||||||
# Add OK button
|
# Add OK button
|
||||||
$okButton = New-Object Windows.Controls.Button
|
$okButton = New-Object Windows.Controls.Button
|
||||||
$okButton.Content = "OK"
|
$okButton.Content = "OK"
|
||||||
@ -15346,14 +15396,13 @@ $sync["AboutMenuItem"].Add_Click({
|
|||||||
# Handle Export menu item click
|
# Handle Export menu item click
|
||||||
Write-Debug "About clicked"
|
Write-Debug "About clicked"
|
||||||
$sync["SettingsPopup"].IsOpen = $false
|
$sync["SettingsPopup"].IsOpen = $false
|
||||||
# Example usage
|
|
||||||
$authorInfo = @"
|
$authorInfo = @"
|
||||||
Author : @christitustech
|
Author : <a href="https://github.com/ChrisTitusTech">@christitustech</a>
|
||||||
Runspace : @DeveloperDurp
|
Runspace : <a href="https://github.com/DeveloperDurp">@DeveloperDurp</a>
|
||||||
GUI : @KonTy
|
GUI : <a href="https://github.com/KonTy">@KonTy</a>
|
||||||
MicroWin : @KonTy
|
MicroWin : <a href="https://github.com/KonTy">@KonTy</a>
|
||||||
GitHub : https://github.com/ChrisTitusTech/winutil
|
GitHub : <a href="https://github.com/ChrisTitusTech/winutil">ChrisTitusTech/winutil</a>
|
||||||
Version : $($sync.version)
|
Version : <a href="https://github.com/ChrisTitusTech/winutil/releases/tag/$($sync.version)">$($sync.version)</a>
|
||||||
"@
|
"@
|
||||||
Show-CustomDialog -Message $authorInfo -Width 400
|
Show-CustomDialog -Message $authorInfo -Width 400
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user