71 lines
2.5 KiB
PowerShell
71 lines
2.5 KiB
PowerShell
#This script is used to install and configure bginfo for the current user.
|
|
|
|
#Requires -RunAsAdministrator
|
|
|
|
### Function to Install Apps ###
|
|
function Install-App {
|
|
param (
|
|
[string]$AppName,
|
|
[string]$WingetId,
|
|
[string]$ChocoId,
|
|
[switch]$UseChocoOnly
|
|
)
|
|
|
|
Write-Host "Installing $AppName..." -ForegroundColor Yellow
|
|
|
|
if ($UseChocoOnly) {
|
|
Write-Host "Using Chocolatey for $AppName..." -ForegroundColor Yellow
|
|
choco install $ChocoId -y
|
|
return
|
|
}
|
|
|
|
try {
|
|
Write-Host "Attempting to install $AppName via Winget..." -ForegroundColor Yellow
|
|
winget install -e --id $WingetId --accept-source-agreements --accept-package-agreements
|
|
}
|
|
catch {
|
|
Write-Host "Winget installation failed, falling back to Chocolatey..." -ForegroundColor Yellow
|
|
choco install $ChocoId -y
|
|
}
|
|
}
|
|
|
|
### Function to Setup BGInfo ###
|
|
function Setup-BGInfo {
|
|
param (
|
|
[string]$ConfigPath = "$env:USERPROFILE\.bginfo\config.bgi"
|
|
)
|
|
|
|
Write-Host "Setting up BGInfo..." -ForegroundColor Yellow
|
|
|
|
# Create BGInfo directory
|
|
$bginfoPath = "$env:USERPROFILE\.bginfo"
|
|
if (-not (Test-Path $bginfoPath)) {
|
|
New-Item -ItemType Directory -Path $bginfoPath -Force | Out-Null
|
|
}
|
|
|
|
# Install BGInfo using winget
|
|
Install-App -AppName "BGInfo" -WingetId "Sysinternals.BGInfo" -ChocoId "bginfo"
|
|
|
|
# Copy BGInfo scripts
|
|
Write-Host "Copying BGInfo scripts..." -ForegroundColor Yellow
|
|
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
Copy-Item "$scriptPath\bginfo\*" $bginfoPath -Force
|
|
|
|
# Create scheduled task to run BGInfo at logon
|
|
$bgInfoExe = "$env:ProgramFiles\sysinternals\bginfo.exe"
|
|
$action = New-ScheduledTaskAction -Execute $bgInfoExe -Argument "$ConfigPath /timer:0"
|
|
$trigger = New-ScheduledTaskTrigger -AtLogOn
|
|
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest
|
|
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
|
|
|
|
Write-Host "Creating BGInfo startup task..." -ForegroundColor Yellow
|
|
Register-ScheduledTask -TaskName "BGInfo" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Force
|
|
|
|
# Run BGInfo immediately
|
|
Write-Host "Running BGInfo..." -ForegroundColor Yellow
|
|
Start-Process $bgInfoExe -ArgumentList "$ConfigPath /timer:0" -NoNewWindow -Wait
|
|
}
|
|
|
|
### Main Execution ###
|
|
Write-Host "Setting up BGInfo..." -ForegroundColor Green
|
|
Setup-BGInfo
|