80 lines
2.2 KiB
PowerShell
80 lines
2.2 KiB
PowerShell
& {
|
|
. "$PSScriptRoot/../../lib/Restoration.ps1";
|
|
. "$PSScriptRoot/../../lib/SoftwareManagement.ps1";
|
|
. "$PSScriptRoot/../../../lib/Software.ps1";
|
|
$configPath = "$env:LocalAppData/LGHUB";
|
|
|
|
<#
|
|
.SYNOPSIS
|
|
Stops the running Logitech G Hub instance.
|
|
#>
|
|
function Stop-LGHub {
|
|
[OutputType([string])]
|
|
param()
|
|
|
|
$hubName = "lghub_system_tray.exe";
|
|
$candidates = Get-Process | Where-Object { $_.Path -and ((Split-Path -Leaf $_.Path) -eq $hubName) };
|
|
|
|
if ($candidates.Count -gt 0) {
|
|
$lghubPath = $candidates[0].Path;
|
|
}
|
|
else {
|
|
$lghubPath = $null;
|
|
}
|
|
|
|
$mainProcesses = Get-Process | Where-Object {
|
|
$_.Path -and
|
|
(@("lghub.exe", "lghub_agent.exe", "lghub_updater.exe", $hubName) -contains (Split-Path -Leaf $_.Path)) -and
|
|
(($_.Parent.ProcessName -eq "explorer") -or ($null -eq $_.Parent));
|
|
};
|
|
|
|
$null = $mainProcesses | ForEach-Object { $_.Kill($true) };
|
|
return $lghubPath;
|
|
}
|
|
|
|
<#
|
|
.SYNOPSIS
|
|
Edits the Logitech G Hub configuration.
|
|
#>
|
|
function Edit-LGHubConfig {
|
|
param(
|
|
[scriptblock] $Action
|
|
)
|
|
|
|
Write-Host "Stopping Logitech G Hub";
|
|
$path = Stop-LGHub;
|
|
& $Action;
|
|
|
|
if ($path) {
|
|
Write-Host "Restarting Logitech G Hub";
|
|
Start-Process $path;
|
|
}
|
|
}
|
|
|
|
Start-SoftwareInstaller @args `
|
|
-Installer {
|
|
Install-ChocoPackage lghub;
|
|
Remove-DesktopIcon "*G HUB*";
|
|
} `
|
|
-UserBackup {
|
|
param(
|
|
[string] $Name,
|
|
[hashtable] $Arguments
|
|
)
|
|
|
|
Edit-LGHubConfig {
|
|
Add-BackupArtifacts -User $Arguments.Name -Source $configPath -Path "$Name" `
|
|
-Include @("settings.db", "icon_cache");
|
|
};
|
|
} `
|
|
-UserConfigurator {
|
|
param(
|
|
[string] $Name,
|
|
[hashtable] $Arguments
|
|
)
|
|
|
|
Edit-LGHubConfig {
|
|
Expand-BackupArtifacts -User $Arguments.Name -Path "$Name" -Target $configPath;
|
|
};
|
|
};
|
|
} @args;
|