# -*- coding: utf-8 -*- # Установка кодировки консоли, чтобы кириллица не превратилась в кракозябры [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 try { # --- Параметры --- $githubUser = "Flowseal" $githubRepo = "tg-ws-proxy" # Папка установки (в AppData, чтобы не требовать прав админа) $installDir = Join-Path -Path $env:APPDATA -ChildPath "TgWsProxy" Write-Host "=======================================================" -ForegroundColor Cyan Write-Host " Установка / Обновление TG WS Proxy" -ForegroundColor White Write-Host "=======================================================" -ForegroundColor Cyan # --- 1. Определение нужного файла в зависимости от версии ОС --- $os = Get-WmiObject Win32_OperatingSystem $osVersion = [version]$os.Version $exeName = "TgWsProxy_windows.exe" # По умолчанию для Windows 10/11 if ($osVersion.Major -lt 10) { Write-Host "Обнаружена старая версия Windows (Windows 7/8)." -ForegroundColor Yellow if ($env:PROCESSOR_ARCHITECTURE -eq 'AMD64') { $exeName = "TgWsProxy_windows_7_64bit.exe" } else { $exeName = "TgWsProxy_windows_7_32bit.exe" } } $exeFullPath = Join-Path -Path $installDir -ChildPath "TgWsProxy.exe" # --- 2. Остановка запущенного процесса (если это обновление) --- $processName = "TgWsProxy" $runningProcesses = Get-Process | Where-Object { $_.Name -like "TgWsProxy*" } if ($runningProcesses) { Write-Host "Найдена запущенная версия программы. Закрываем..." -ForegroundColor Yellow $runningProcesses | Stop-Process -Force -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 } # --- 3. Определение URL для скачивания (API) --- $apiUrl = "https://api.github.com/repos/$githubUser/$githubRepo/releases/latest" Write-Host "Поиск последнего релиза на GitHub..." -ForegroundColor DarkGray [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $releaseInfo = Invoke-RestMethod -Uri $apiUrl -UseBasicParsing -ErrorAction Stop -TimeoutSec 15 $releaseTag = $releaseInfo.tag_name $asset = $releaseInfo.assets | Where-Object { $_.name -eq $exeName } if (-not $asset) { Write-Error "Не найден файл $exeName в релизе $releaseTag." Read-Host "Нажмите Enter для выхода..." ; exit 1 } $downloadUrl = $asset.browser_download_url Write-Host "Найдена версия: $releaseTag" -ForegroundColor Green # --- 4. Создание папки --- if (-not (Test-Path $installDir)) { Write-Host "Создание папки установки: $installDir" -ForegroundColor DarkGray New-Item -Path $installDir -ItemType Directory -Force | Out-Null } # --- 5. Скачивание файла --- Write-Host "Скачивание файла... Пожалуйста, подождите." -ForegroundColor Cyan Invoke-WebRequest -Uri $downloadUrl -OutFile $exeFullPath -UseBasicParsing -ErrorAction Stop Write-Host "Файл успешно загружен!" -ForegroundColor Green # --- 6. Создание ярлыков и настройка автозапуска --- Write-Host "Настройка системы..." -ForegroundColor DarkGray $WshShell = New-Object -comObject WScript.Shell # Ярлык на Рабочем столе $DesktopShortcutPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath "TG WS Proxy.lnk" $Shortcut = $WshShell.CreateShortcut($DesktopShortcutPath) $Shortcut.TargetPath = $exeFullPath $Shortcut.WorkingDirectory = $installDir $Shortcut.Description = "Локальный прокси для Telegram" $Shortcut.Save() # Ярлык в меню Пуск $StartMenuPath = Join-Path -Path $env:APPDATA -ChildPath "Microsoft\Windows\Start Menu\Programs" if (-not (Test-Path $StartMenuPath)) { New-Item -Path $StartMenuPath -ItemType Directory -Force | Out-Null } $FullStartMenuLink = Join-Path -Path $StartMenuPath -ChildPath "TG WS Proxy.lnk" $ShortcutStart = $WshShell.CreateShortcut($FullStartMenuLink) $ShortcutStart.TargetPath = $exeFullPath $ShortcutStart.WorkingDirectory = $installDir $ShortcutStart.Save() # АВТОЗАПУСК: Прописываем в реестр (HKCU) Write-Host "Включаем автозапуск в реестре..." -ForegroundColor Green $RegistryPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" $RegistryName = "TgWsProxy" $RegistryValue = "`"$exeFullPath`"" Set-ItemProperty -Path $RegistryPath -Name $RegistryName -Value $RegistryValue # --- 7. Запуск приложения --- Write-Host "Запуск TG WS Proxy..." -ForegroundColor Cyan Start-Process -FilePath $exeFullPath -WorkingDirectory $installDir # --- 8. Финальное сообщение --- Write-Host "" Write-Host "=======================================================" -ForegroundColor Green Write-Host " УСТАНОВКА ЗАВЕРШЕНА УСПЕШНО! " -ForegroundColor White -BackgroundColor DarkGreen Write-Host "=======================================================" -ForegroundColor Green Write-Host "" Write-Host " ✅ Автозапуск включен автоматически." -ForegroundColor Green Write-Host " ✅ Ярлыки созданы на Рабочем столе и в меню Пуск." -ForegroundColor Green Write-Host " ✅ Прокси уже запущен и готов к работе." -ForegroundColor Green Write-Host "" Write-Host " Что делать дальше:" -ForegroundColor Cyan Write-Host " 1. В появившемся окне программы нажмите кнопку «Начать»." -ForegroundColor White Write-Host " 2. Прокси свернется в трей (у часиков)." -ForegroundColor White Write-Host " 3. Если Telegram не заработал сразу — нажмите правой" -ForegroundColor White Write-Host " кнопкой по иконке в трее -> 'Открыть в Telegram'." -ForegroundColor White Write-Host "" Write-Host "=======================================================" -ForegroundColor Green Read-Host "Нажмите Enter для завершения..." } catch { Write-Error "ПРОИЗОШЛА ОШИБКА!" Write-Error "Сообщение: $($_.Exception.Message)" Read-Host "Нажмите Enter для выхода..." exit 1 }