# Function to query the registry function Get-RegistryValue { param ( [string]$path, [string]$value ) try { $result = Get-ItemProperty -Path $path -ErrorAction Stop return $result.$value } catch { return $null } } # Get Steam installation path from registry $steam_dir = Get-RegistryValue "HKLM:\SOFTWARE\Valve\Steam" "InstallPath" if (-not $steam_dir) { $steam_dir = Get-RegistryValue "HKLM:\SOFTWARE\WOW6432Node\Valve\Steam" "InstallPath" } if (-not $steam_dir) { Write-Host "Steam installation path not found" Read-Host "Press Enter to exit" exit } # Check for Garry's Mod installation $gmod_dir = Join-Path $steam_dir "steamapps\common\GarrysMod" if (-not (Test-Path (Join-Path $steam_dir "steamapps\appmanifest_4000.acf"))) { $library_folders_path = Join-Path $steam_dir "steamapps\libraryfolders.vdf" if (Test-Path $library_folders_path) { $lines = Get-Content $library_folders_path foreach ($line in $lines) { if ($line -match '^\s*"\d+"\s+"(.+)"$') { $library_path = $matches[1] if (Test-Path (Join-Path $library_path "steamapps\appmanifest_4000.acf")) { $gmod_dir = Join-Path $library_path "steamapps\common\GarrysMod" break } } } } } if (-not (Test-Path $gmod_dir)) { Write-Host "GMod installation path not found" Read-Host "Press Enter to exit" exit } Write-Host "GMod installation path: $gmod_dir" # Confirm Garry's Mod installation path $GMODPath = Join-Path $gmod_dir "garrysmod" $AddonsPath = Join-Path $GMODPath "addons" $_text = "Do you want to install in this path? It will completely wipe the previous Beatrun install if you had one!`n$GMODPath (y/n)" $GMODConfirmation = Read-Host $_text if ($GMODConfirmation -eq "y") { $TempPath = Join-Path $GMODPath "temp" $ZIPPath = Join-Path $TempPath "beatrun.zip" $FolderPath = Join-Path $TempPath "beatrun" $FolderMainPath = Join-Path $TempPath "beatrun-main" New-Item -ItemType Directory -Path $TempPath -Force | Out-Null Write-Host "Downloading the archive..." (New-Object Net.WebClient).DownloadFile("https://github.com/JonnyBro/beatrun/archive/refs/heads/main.zip", $ZIPPath) Write-Host "Downloaded! Unpacking..." Expand-Archive $ZIPPath $TempPath -Force Write-Host "Unpacked successfully!" Rename-Item $FolderMainPath $FolderPath Remove-Item $ZIPPath $confirmation = Read-Host "Do you want to install modules? (Discord + Steam Presence) (y/n)" if ($confirmation -eq "y") { $ModulesPath = Join-Path $FolderPath "lua\*" $NewModulesPath = Join-Path $GMODPath "lua" Copy-Item -Path $ModulesPath -Destination $NewModulesPath -Force -Recurse } $AddonPath = Join-Path $FolderPath "beatrun" $NewAddonPath = Join-Path $AddonsPath "beatrun" if (Test-Path $NewAddonPath) { Remove-Item $NewAddonPath -Force -Recurse } Move-Item -Path $AddonPath -Destination $NewAddonPath Remove-Item $TempPath -Force -Recurse Write-Host "Beatrun Installed!" }