From e4bddddab52cab4bafb30d6a64d573a897202615 Mon Sep 17 00:00:00 2001 From: KnifMelti Date: Fri, 3 Feb 2023 00:48:38 +0100 Subject: [PATCH] A few Functions more --- Winget-AutoUpdate/mods/_AppID-template.ps1 | 46 +++++++++++++++------- Winget-AutoUpdate/mods/_Mods-Functions.ps1 | 35 +++++++++++----- 2 files changed, 56 insertions(+), 25 deletions(-) diff --git a/Winget-AutoUpdate/mods/_AppID-template.ps1 b/Winget-AutoUpdate/mods/_AppID-template.ps1 index b1344cf..7a9aae3 100644 --- a/Winget-AutoUpdate/mods/_AppID-template.ps1 +++ b/Winget-AutoUpdate/mods/_AppID-template.ps1 @@ -13,9 +13,18 @@ $Proc = @("") #Beginning of Process Name to Wait for to End - optional wildcard (*) after, without .exe, multiple: "proc1","proc2" $Wait = @("") +#Install App from Winget Repo, multiple: "appID1","appID2". Example: +#$WingetIDInst = @("Microsoft.PowerToys") +$WingetIDInst = @("") + +#WingetID to uninstall in default manifest mode (silent if supported) +#Multiple: "ID1","ID2". Example: +#$WingetIDUninst = @("Microsoft.PowerToys") +$WingetIDUninst = @("") + #Beginning of App Name string to Silently Uninstall (MSI/NSIS/INNO/EXE with defined silent uninstall in registry) #Multiple: "app1*","app2*", required wildcard (*) after; search is done with "-like"! -$App = @("") +$AppUninst = @("") #Beginning of Desktop Link Name to Remove - optional wildcard (*) after, without .lnk, multiple: "lnk1","lnk2" $Lnk = @("") @@ -37,18 +46,23 @@ $AddType = "" $DelKey = "" $DelValue = "" -#Remove file/directory, multiple: "file1","file2" +#Remove file/directory, multiple: "file1","file2" Example: +#$DelFile = @("${env:ProgramFiles}\PowerToys\PowerToys.Update.exe") $DelFile = @("") -#Copy file/directory -#Example: +#Rename file/directory. Example: +#$RenFile = "${env:ProgramFiles}\PowerToys\PowerToys.Update.exe" +#$NewName = "PowerToys.Update.org" +$RenFile = "" +$NewName = "" + +#Copy file/directory. Example: #$CopyFile = "C:\Logfiles" #$CopyTo = "C:\Drawings\Logs" $CopyFile = "" $CopyTo = "" -#Find/Replace text in file -#Example: +#Find/Replace text in file. Example: #$File = "C:\dummy.txt" #$FindText = 'brown fox' #$ReplaceText = 'white fox' @@ -59,10 +73,6 @@ $ReplaceText = '' #Grant "Modify" for directory/file to "Authenticated Users" - multiple: "dir1","dir2" $GrantPath = @("") -#Install App from Winget Repo, multiple: "appID1","appID2". Example: -#$AppID = @("Microsoft.PowerToys") -$AppID = @("") - #App to Run (as current logged-on user) $RunUser = "" $User = $True @@ -80,8 +90,14 @@ if ($Proc) { if ($Wait) { Wait-ModsProc $Wait } -if ($App) { - Uninstall-ModsApp $App +if ($WingetIDInst) { + Install-WingetID $WingetIDInst +} +if ($WingetIDUninst) { + Uninstall-WingetID $WingetIDUninst +} +if ($AppUninst) { + Uninstall-ModsApp $AppUninst } if ($Lnk) { Remove-ModsLnk $Lnk @@ -95,6 +111,9 @@ if ($DelKey) { if ($DelFile) { Remove-ModsFile $DelFile } +if ($RenFile -and $NewName) { + Rename-ModsFile $RenFile $NewName +} if ($CopyFile -and $CopyTo) { Copy-ModsFile $CopyFile $CopyTo } @@ -104,9 +123,6 @@ if ($File -and $FindText -and $ReplaceText) { if ($GrantPath) { Grant-ModsPath $GrantPath } -if ($AppID) { - Install-ModsApp $AppID -} if ($RunUser) { Invoke-ModsApp $RunUser "" "" $User } diff --git a/Winget-AutoUpdate/mods/_Mods-Functions.ps1 b/Winget-AutoUpdate/mods/_Mods-Functions.ps1 index 054e331..2f6ee3e 100644 --- a/Winget-AutoUpdate/mods/_Mods-Functions.ps1 +++ b/Winget-AutoUpdate/mods/_Mods-Functions.ps1 @@ -35,8 +35,24 @@ function Wait-ModsProc ($Wait) { Return } -function Uninstall-ModsApp ($App) { - foreach ($app in $App) +function Install-WingetID ($WingetIDInst) { + foreach ($app in $WingetIDInst) + { + & $Winget install --id $app --accept-package-agreements --accept-source-agreements -h + } + Return +} + +function Uninstall-WingetID ($WingetIDUninst) { + foreach ($app in $WingetIDUninst) + { + & $Winget uninstall --id $app -e --accept-source-agreements -h + } + Return +} + +function Uninstall-ModsApp ($AppUninst) { + foreach ($app in $AppUninst) { $InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall" foreach ($obj in $InstalledSoftware){ @@ -196,6 +212,13 @@ function Remove-ModsFile ($DelFile) { Return } +function Rename-ModsFile ($RenFile, $NewName) { + if (Test-Path "$RenFile") { + Rename-Item -Path $RenFile -NewName $NewName -Force -ErrorAction SilentlyContinue | Out-Null + } + Return +} + function Copy-ModsFile ($CopyFile, $CopyTo) { if (Test-Path "$CopyFile") { Copy-Item -Path $CopyFile -Destination $CopyTo -Recurse -Force -ErrorAction SilentlyContinue | Out-Null @@ -229,11 +252,3 @@ function Grant-ModsPath ($GrantPath) { } Return } - -function Install-ModsApp ($AppID) { - foreach ($app in $AppID) - { - & $Winget install --id $app --accept-package-agreements --accept-source-agreements -h - } - Return -}