$ErrorActionPreference = "Stop" $StagingRendezvousUrl = if ($env:TUCDESK_RENDEZVOUS_URL) { $env:TUCDESK_RENDEZVOUS_URL } else { "https://rendezvous-stag.tucdesk.app" } $env:TUCDESK_RENDEZVOUS_URL = $StagingRendezvousUrl [Environment]::SetEnvironmentVariable("TUCDESK_RENDEZVOUS_URL", $StagingRendezvousUrl, "User") $HostedDownloadBaseUrl = if ($env:TUCDESK_DOWNLOAD_BASE_URL) { $env:TUCDESK_DOWNLOAD_BASE_URL } else { "https://get-stag.tucdesk.app/downloads" } $env:TUCDESK_DOWNLOAD_BASE_URL = $HostedDownloadBaseUrl [Environment]::SetEnvironmentVariable("TUCDESK_DOWNLOAD_BASE_URL", $HostedDownloadBaseUrl, "User") $DownloadBaseUrl = if ($env:TUCDESK_DOWNLOAD_BASE_URL) { $env:TUCDESK_DOWNLOAD_BASE_URL } else { "" } $Repo = if ($env:TUCDESK_GITHUB_REPO) { $env:TUCDESK_GITHUB_REPO } else { "portmytech/TucDesk-original" } $Version = if ($env:TUCDESK_VERSION) { $env:TUCDESK_VERSION } else { "latest" } $InstallRoot = if ($env:TUCDESK_INSTALL_DIR) { $env:TUCDESK_INSTALL_DIR } else { Join-Path $env:LOCALAPPDATA "TucDesk\bin" } $ZipName = "tucdesk-windows-amd64.zip" New-Item -ItemType Directory -Force -Path $InstallRoot | Out-Null $useHostedDownloads = $DownloadBaseUrl -and $Version -eq "latest" -and -not $env:TUCDESK_GITHUB_REPO $downloadUrl = if ($useHostedDownloads) { "$DownloadBaseUrl/tucdesk-windows-amd64.zip" } elseif ($Version -eq "latest") { "https://github.com/$Repo/releases/latest/download/$ZipName" } else { "https://github.com/$Repo/releases/download/$Version/$ZipName" } $tmpRoot = Join-Path $env:TEMP ("tucdesk-install-" + [Guid]::NewGuid().ToString("N")) $zipPath = Join-Path $tmpRoot $ZipName $extractDir = Join-Path $tmpRoot "extract" $targetExe = Join-Path $InstallRoot "tucdesk.exe" New-Item -ItemType Directory -Force -Path $tmpRoot | Out-Null New-Item -ItemType Directory -Force -Path $extractDir | Out-Null Write-Host "Downloading TucDesk from $downloadUrl" Invoke-WebRequest -Uri $downloadUrl -OutFile $zipPath Expand-Archive -Path $zipPath -DestinationPath $extractDir -Force $sourceExe = Get-ChildItem -Path $extractDir -Filter "tucdesk.exe" -Recurse | Select-Object -First 1 if (-not $sourceExe) { throw "tucdesk.exe not found in downloaded archive." } Copy-Item $sourceExe.FullName $targetExe -Force if (($env:PATH -split ';') -notcontains $InstallRoot) { $newPath = "$InstallRoot;$env:PATH" [Environment]::SetEnvironmentVariable("Path", $newPath, "User") $env:PATH = $newPath } Write-Host "" Write-Host "TucDesk installed to $targetExe" Write-Host "Open a new shell or run:" Write-Host " `"$targetExe`""