casual migrate to powershell
This commit is contained in:
@@ -0,0 +1,67 @@
|
|||||||
|
param(
|
||||||
|
[string]$action = "reconnect" # connect | disconnect | reconnect
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host "Apps Manager запущен с действием: $action"
|
||||||
|
|
||||||
|
# CSV-файл с приложениями
|
||||||
|
$config = $appsAll
|
||||||
|
|
||||||
|
# Импорт CSV
|
||||||
|
$apps = Import-Csv -Path $config
|
||||||
|
|
||||||
|
foreach ($app in $apps) {
|
||||||
|
# Пропускаем отключённые
|
||||||
|
if ($app.Enabled -ne "1") { continue }
|
||||||
|
|
||||||
|
$AppName = $app.App
|
||||||
|
|
||||||
|
# Разворачиваем строки From и To с подстановкой $AppName
|
||||||
|
$rawFrom = $app.From -replace '\$AppName', $AppName
|
||||||
|
$rawTo = $app.To -replace '\$AppName', $AppName
|
||||||
|
|
||||||
|
# Разворачиваем переменные окружения
|
||||||
|
$from = $ExecutionContext.InvokeCommand.ExpandString($rawFrom)
|
||||||
|
$to = $ExecutionContext.InvokeCommand.ExpandString($rawTo)
|
||||||
|
|
||||||
|
# Если путь To относительный, делаем его абсолютным относительно пользователя
|
||||||
|
if (-not [System.IO.Path]::IsPathRooted($to)) {
|
||||||
|
$to = Join-Path $env:USERPROFILE $to
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "=============================="
|
||||||
|
Write-Host "Processing $AppName with action $action (Type=$($app.Type))"
|
||||||
|
Write-Host " Raw From: $rawFrom"
|
||||||
|
Write-Host " Raw To : $rawTo"
|
||||||
|
Write-Host " Expanded From: $from"
|
||||||
|
Write-Host " Expanded To : $to"
|
||||||
|
|
||||||
|
if ($app.Type -ieq "isolate") {
|
||||||
|
Write-Host " [isolate] — пропускаем действия"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($action.ToLower()) {
|
||||||
|
"disconnect" {
|
||||||
|
Write-Host " Removing $to"
|
||||||
|
if (Test-Path $to) { Remove-Item $to -Recurse -Force }
|
||||||
|
}
|
||||||
|
"connect" {
|
||||||
|
Write-Host " Creating symlink $to -> $from"
|
||||||
|
if (-not (Test-Path $to)) {
|
||||||
|
New-Item -Path $to -ItemType SymbolicLink -Value $from | Out-Null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"reconnect" {
|
||||||
|
Write-Host " Removing $to"
|
||||||
|
if (Test-Path $to) { Remove-Item $to -Recurse -Force }
|
||||||
|
Write-Host " Creating symlink $to -> $from"
|
||||||
|
if (-not (Test-Path $to)) {
|
||||||
|
New-Item -Path $to -ItemType SymbolicLink -Value $from | Out-Null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
Write-Warning "Неизвестное действие: $action"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set "app=EqualizerAPO"
|
||||||
|
|
||||||
|
set "from_1=%storage%\%app%"
|
||||||
|
set "to_1=%ProgramFiles%\%app%"
|
||||||
|
set FabFilter_Pro-Q_3=%ProgramFiles%\VSTPlugins\FabFilter\FabFilter Pro-Q 3.dll"
|
||||||
|
|
||||||
|
for /f "delims=" %%i in ('dir /aL /b %to_1%\config') do del "%%i"
|
||||||
|
del /q "%to_1%\config\*"
|
||||||
|
del /q "%to_1%\VSTPlugins\FabFilter Pro-Q 3.dll"
|
||||||
|
|
||||||
|
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\EqualizerAPO" /v "ConfigPath" /t REG_SZ /d "%storage%\%app%" /f
|
||||||
|
mklink "%to_1%\VSTPlugins\FabFilter Pro-Q 3.dll" "%FabFilter_Pro-Q_3%"
|
||||||
|
|
||||||
|
endlocal
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
App,From,To,Type,Enabled,Extra-Variables,Extra-Connect,Extra-Disconnect
|
||||||
|
AIMP,%storage%\%app%,%appdata%\%app%,default,0,,,
|
||||||
|
KeePassXC,%storage%\%app%,%appdata%\%app%,default,0,,,
|
||||||
|
gramps,%storage%\%app%,%appdata%\%app%,default,0,,,
|
||||||
|
EqualizerAPO,%storage%\%app%,%ProgramFiles%\%app%,isolate,1,,,
|
||||||
|
@@ -1,12 +0,0 @@
|
|||||||
@echo off
|
|
||||||
setlocal
|
|
||||||
|
|
||||||
set "app=EqualizerAPO"
|
|
||||||
|
|
||||||
set "from_1=%storage%\%app%" && set "to_1=%ProgramFiles%\%app%" && set "FabFilter_Pro-Q_3=%ProgramFiles%\VSTPlugins\FabFilter\FabFilter Pro-Q 3.dll"
|
|
||||||
|
|
||||||
for /f "delims=" %%i in ('dir /aL /b %to_1%\config') do del "%%i" && del /q "%to_1%\config\*" && del /q "%to_1%\VSTPlugins\FabFilter Pro-Q 3.dll"
|
|
||||||
|
|
||||||
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\EqualizerAPO" /v "ConfigPath" /t REG_SZ /d "%storage%\%app%" /f && mklink "%to_1%\VSTPlugins\FabFilter Pro-Q 3.dll" "%FabFilter_Pro-Q_3%"
|
|
||||||
|
|
||||||
endlocal
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
param(
|
||||||
|
[string]$csvPath = $appsAll
|
||||||
|
)
|
||||||
|
|
||||||
|
# Импорт CSV
|
||||||
|
$apps = Import-Csv -Path $csvPath
|
||||||
|
|
||||||
|
foreach ($app in $apps) {
|
||||||
|
if ($app.Enabled -ne "1") { continue }
|
||||||
|
|
||||||
|
$AppName = $app.App
|
||||||
|
|
||||||
|
# Разворачиваем пути
|
||||||
|
$rawFrom = $app.From -replace '\$AppName', $AppName
|
||||||
|
$rawTo = $app.To -replace '\$AppName', $AppName
|
||||||
|
|
||||||
|
$from = $ExecutionContext.InvokeCommand.ExpandString($rawFrom)
|
||||||
|
$to = $ExecutionContext.InvokeCommand.ExpandString($rawTo)
|
||||||
|
|
||||||
|
if (-not [System.IO.Path]::IsPathRooted($to)) {
|
||||||
|
$to = Join-Path $env:USERPROFILE $to
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "=============================="
|
||||||
|
Write-Host "Checking $AppName"
|
||||||
|
Write-Host " Expected From: $from"
|
||||||
|
Write-Host " Expected To : $to"
|
||||||
|
|
||||||
|
if (Test-Path $to) {
|
||||||
|
$item = Get-Item $to -ErrorAction SilentlyContinue
|
||||||
|
if ($item -and $item.Attributes -band [IO.FileAttributes]::ReparsePoint) {
|
||||||
|
$target = (Get-Item $to -Force).Target
|
||||||
|
Write-Host " Symlink exists -> points to: $target"
|
||||||
|
} else {
|
||||||
|
Write-Host " Exists but is NOT a symlink."
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host " Missing"
|
||||||
|
}
|
||||||
|
}
|
||||||
+13
-4
@@ -1,5 +1,14 @@
|
|||||||
App,From,To,Type,Enabled,Extra-Variables,Extra-Connect,Extra-Disconnect
|
App,From,To,Type,Enabled,Extra-Variables,Extra-Connect,Extra-Disconnect
|
||||||
AIMP,%storage%\%app%,%appdata%\%app%,default,0,,,
|
AIMP,$storage\$AppName,$env:APPDATA\$AppName,default,0,,,
|
||||||
KeePassXC,%storage%\%app%,%appdata%\%app%,default,0,,,
|
gramps,$storage\$AppName,$env:APPDATA\$AppName,default,0,,,
|
||||||
gramps,%storage%\%app%,%appdata%\%app%,default,0,,,
|
KeePassXC,$storage\$AppName,$env:APPDATA\$AppName,default,0,,,
|
||||||
EqualizerAPO,%storage%\%app%,%ProgramFiles%\%app%,isolate,1,,,
|
ludusavi,$storage\$AppName,$env:APPDATA\$AppName,default,0
|
||||||
|
Playnite,$storage\$AppName,$env:APPDATA\$AppName,default,0
|
||||||
|
Powertoys,$storage\$AppName\$env:COMPUTERNAME,$env:LOCALAPPDATA\Microsoft\PowerToys,default,0
|
||||||
|
Sublime Text,$storage\$AppName\Config,$env:APPDATA\$AppName,default,0,,,
|
||||||
|
SumatraPDF,$storage\$AppName,$env:LOCALAPPDATA\$AppName,default,0
|
||||||
|
Syncthing,$storage\$AppName\$env:COMPUTERNAME,$env:LOCALAPPDATA\$AppName,default,0,,,
|
||||||
|
transmission,$storage\$AppName\$env:COMPUTERNAME,$env:LOCALAPPDATA\$AppName,default,0,,,
|
||||||
|
v2rayN,$storage\$AppName,$env:LOCALAPPDATA\$AppName,default,0,,,
|
||||||
|
VSCodium,$storage\$AppName,$env:APPDATA\$AppName,default,0,,,
|
||||||
|
EqualizerAPO,$storage\$AppName,$ProgramFiles\$AppName,isolate,0,$from_1 = Join-Path $storage $AppName; $to_1 = Join-Path $ProgramFiles $AppName; $FabQ3 = Join-Path $ProgramFiles 'VSTPlugins\FabFilter\FabFilter Pro-Q 3.dll',reg add 'HKLM:\SOFTWARE\EqualizerAPO' -Name 'ConfigPath' -Value '$storage\$AppName' -Type String -Force; New-Item -ItemType SymbolicLink -Path $to_1\VSTPlugins\FabFilter Pro-Q 3.dll -Target $FabQ3,Remove-Item -Recurse -Force $to_1\config\*; Remove-Item -Force $to_1\VSTPlugins\FabFilter Pro-Q 3.dll
|
||||||
|
@@ -1,2 +1,21 @@
|
|||||||
$initFile = Join-Path $PSScriptRoot ".\settings\init.ps1"
|
$initFile = Join-Path $PSScriptRoot ".\settings\init.ps1"
|
||||||
. $initFile
|
. $initFile
|
||||||
|
|
||||||
|
# run.ps1 — проверка прав администратора
|
||||||
|
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
|
||||||
|
Write-Host "Скрипт требует права администратора. Перезапуск..."
|
||||||
|
|
||||||
|
# Перезапуск скрипта с правами админа
|
||||||
|
Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
# Если админ — продолжаем
|
||||||
|
Write-Host "Запуск от имени администратора подтвержден."
|
||||||
|
|
||||||
|
# Аргумент действия
|
||||||
|
$action = if ($args.Count -ge 1) { $args[0] } else { "reconnect" }
|
||||||
|
|
||||||
|
# Вызов apps-manager.ps1 с передачей аргумента
|
||||||
|
$appsManager = Join-Path $PSScriptRoot "apps-manager.ps1"
|
||||||
|
. $appsManager $action
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
# --- init.ps1 ---
|
|
||||||
# Переходим в папку скрипта
|
# Переходим в папку скрипта
|
||||||
Set-Location -Path $PSScriptRoot
|
Set-Location -Path $PSScriptRoot
|
||||||
|
|
||||||
|
|||||||
+6
-7
@@ -13,13 +13,12 @@ $appsUser = "$apps\$env:COMPUTERNAME"
|
|||||||
$appsLegacy = "$apps\legacy"
|
$appsLegacy = "$apps\legacy"
|
||||||
|
|
||||||
# Mounts
|
# Mounts
|
||||||
$mounts = "$data\mounts"
|
# $mounts = "$data\mounts"
|
||||||
|
|
||||||
# GLOBAL
|
# GLOBAL
|
||||||
$diskLabel = "S:"
|
|
||||||
$userName = "oqyude"
|
|
||||||
|
|
||||||
# Main Folder
|
|
||||||
$games = "$diskLabel\Games"
|
|
||||||
$storage = "$env:USERPROFILE\Storage"
|
$storage = "$env:USERPROFILE\Storage"
|
||||||
$storageGames = "N:\Games\.storage"
|
|
||||||
|
# $userName = "oqyude"
|
||||||
|
# $diskLabel = "S:"
|
||||||
|
# $games = "$diskLabel\Games"
|
||||||
|
# $storageGames = "N:\Games\.storage"
|
||||||
|
|||||||
Reference in New Issue
Block a user