function added

This commit is contained in:
2025-10-08 00:12:48 +03:00
parent 2da63dab5f
commit 173a4643fa
+43 -49
View File
@@ -5,89 +5,83 @@ param(
[string]$To [string]$To
) )
Write-Host "Isolate script for $AppName : $Action | From: $From | To: $To" # Дебаг входа # Валидация входа (fallback для кривых путей)
if (-not $From) {
Write-Error "No From path aborting"
Exit 1
}
if (-not [System.IO.Path]::IsPathRooted($To)) {
$To = Join-Path $env:ProgramFiles $AppName
Write-Host "Fixed To: $To"
}
$FabFilterTarget = "$env:ProgramFiles\VSTPlugins\FabFilter\FabFilter Pro-Q 3.dll" # Константы (уютно в одном месте)
$FabFilterLink = Join-Path $To "VSTPlugins\FabFilter Pro-Q 3.dll"
$configDir = Join-Path $To "config" $configDir = Join-Path $To "config"
$regPath = "HKLM:\SOFTWARE\EqualizerAPO" $regPath = "HKLM:\SOFTWARE\EqualizerAPO"
$regKey = "ConfigPath" $regKey = "ConfigPath"
$vstDir = Join-Path $To "VSTPlugins"
$FabFilterLink = Join-Path $vstDir "FabFilter Pro-Q 3.dll"
$globalDLL = "$env:ProgramFiles\VSTPlugins\FabFilter\FabFilter Pro-Q 3.dll"
if (-not $From) { Write-Host "Isolate: $AppName ($Action) | From: $From | To: $To"
Write-Warning "Missing From path: $From skipping, idiot"
return
}
if (-not $To -or -not [System.IO.Path]::IsPathRooted($To)) {
Write-Warning "Invalid To path: $To fixing to default ProgramFiles"
$To = Join-Path $env:ProgramFiles $AppName # Fallback, если apps-manager всё равно сломан
}
switch ($Action.ToLower()) { # Функции для чистоты (disconnect/connect как модули)
"disconnect" { function Disconnect-App {
Write-Host " Disconnecting $AppName cleaning up" Write-Host " Disconnecting..."
# Чисти config (как в BAT) # Чисти config (как в BAT)
$configDir = Join-Path $To "config"
if (Test-Path $configDir) { if (Test-Path $configDir) {
Write-Host " Wiping config: $configDir" Remove-Item $configDir -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $configDir\* -Recurse -Force -ErrorAction SilentlyContinue Write-Host " Config wiped"
} }
# Удаляй только линк в APO, не системный DLL # Удаляй линк (не оригинал)
$FabFilterLink = Join-Path $To "VSTPlugins\FabFilter Pro-Q 3.dll"
if (Test-Path $FabFilterLink) { if (Test-Path $FabFilterLink) {
Write-Host " Removing link: $FabFilterLink"
Remove-Item $FabFilterLink -Force -ErrorAction SilentlyContinue Remove-Item $FabFilterLink -Force -ErrorAction SilentlyContinue
Write-Host " VST link removed"
} }
# Чисти реестр (BAT этого не делает, но логично для disconnect) # Чисти реестр
$regPath = "HKLM:\SOFTWARE\EqualizerAPO"
$regKey = "ConfigPath"
if (Test-Path $regPath) { if (Test-Path $regPath) {
Remove-ItemProperty -Path $regPath -Name $regKey -ErrorAction SilentlyContinue Remove-ItemProperty -Path $regPath -Name $regKey -ErrorAction SilentlyContinue
Write-Host " Registry cleaned" Write-Host " Registry cleaned"
} }
} }
"connect" { function Connect-App {
Write-Host " Connecting $AppName linking system VST to APO" Write-Host " Connecting..."
# Реестр: ConfigPath на storage (как в BAT) # Реестр на storage
$regPath = "HKLM:\SOFTWARE\EqualizerAPO"
if (-not (Test-Path $regPath)) { if (-not (Test-Path $regPath)) {
New-Item -Path $regPath -Force | Out-Null New-Item -Path $regPath -Force | Out-Null
} }
Set-ItemProperty -Path $regPath -Name "ConfigPath" -Value $From -Type String -Force Set-ItemProperty -Path $regPath -Name $regKey -Value $From -Type String -Force
Write-Host " Registry set: ConfigPath -> $From" Write-Host " ConfigPath -> $From"
# Линк: в APO на системный VST (как в BAT) # Линк VST: в APO на системный (как в BAT)
$globalDLL = $FabFilterTarget
$FabFilterLink = Join-Path $To "VSTPlugins\FabFilter Pro-Q 3.dll"
$vstDir = Split-Path $FabFilterLink -Parent
if (-not (Test-Path $vstDir)) { if (-not (Test-Path $vstDir)) {
New-Item -ItemType Directory -Path $vstDir -Force | Out-Null New-Item -ItemType Directory -Path $vstDir -Force | Out-Null
Write-Host " Created VST dir in APO: $vstDir"
} }
if (Test-Path $FabFilterLink) { if (Test-Path $FabFilterLink) {
Remove-Item $FabFilterLink -Force Remove-Item $FabFilterLink -Force
} }
if (Test-Path $globalDLL) { if (Test-Path $globalDLL) {
New-Item -ItemType SymbolicLink -Path $FabFilterLink -Value $globalDLL -Force | Out-Null New-Item -ItemType SymbolicLink -Path $FabFilterLink -Value $globalDLL -Force | Out-Null
Write-Host " Link created: $FabFilterLink -> $globalDLL (system VST)" Write-Host " VST linked: $FabFilterLink -> $globalDLL"
} else { } else {
Write-Warning " System DLL missing: $globalDLL no link (install FabFilter?)" Write-Warning " No system VST: $globalDLL (install it?)"
}
}
"reconnect" {
Write-Host " Reconnecting: disconnect then connect"
& $MyInvocation.MyCommand.Path -Action "disconnect" -AppName $AppName -From $From -To $To
& $MyInvocation.MyCommand.Path -Action "connect" -AppName $AppName -From $From -To $To
}
default {
Write-Warning "Unknown: $Action nothing happens"
} }
} }
Write-Host "Isolate script for $AppName finished" # Дебаг выхода # Основная логика
switch ($Action.ToLower()) {
"disconnect" { Disconnect-App }
"connect" { Connect-App }
"reconnect" {
Disconnect-App
Connect-App
}
default { Write-Warning "Unknown action: $Action" }
}
Write-Host "Done with $AppName"