diff --git a/1_Install.ps1 b/1_Install.ps1 index 14bc965..3311f95 100644 --- a/1_Install.ps1 +++ b/1_Install.ps1 @@ -22,67 +22,46 @@ if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdent Write-Host "Running with administrator privileges." -ForegroundColor Green -# Check for updates from Gitea repository -Write-Host "Checking for updates..." -ForegroundColor Cyan -$baseUrl = "https://gitea.andrewspolytechnic.com" -$repoPath = "sandrews/windows-install" -$updateScriptDir = $PSScriptRoot -$lastUpdateCheck = $null -$updateCheckFile = Join-Path -Path $updateScriptDir -ChildPath "last_update_check.txt" - -try { - # Check if we've checked for updates in the last 24 hours - if (Test-Path $updateCheckFile) { - $lastUpdateCheck = Get-Content $updateCheckFile | Get-Date - $timeSinceLastCheck = (Get-Date) - $lastUpdateCheck - if ($timeSinceLastCheck.TotalHours -lt 24) { - Write-Host "Last update check was less than 24 hours ago. Skipping update check." -ForegroundColor DarkGray - # Continue with the script - } else { - # Time to check for updates again - $checkForUpdates = $true +# Self-update function for the script +function Update-Scripts { + Write-Host "Checking for updates..." -ForegroundColor Cyan + $updateScriptDir = $PSScriptRoot + $lastUpdateCheck = $null + $updateCheckFile = Join-Path -Path $updateScriptDir -ChildPath "last_update_check.txt" + $zipUrl = "https://gitea.andrewspolytechnic.com/public/windows-install/archive/master.zip" + + try { + # Check if we've checked for updates in the last 24 hours + if (Test-Path $updateCheckFile) { + $lastUpdateCheck = Get-Content $updateCheckFile | Get-Date + $timeSinceLastCheck = (Get-Date) - $lastUpdateCheck + if ($timeSinceLastCheck.TotalHours -lt 24) { + Write-Host "Last update check was less than 24 hours ago. Skipping update check." -ForegroundColor DarkGray + return $false # No update performed + } } - } else { - # First time running update check - $checkForUpdates = $true - } - - if ($checkForUpdates) { + # Create a temporary directory to download files $tempDir = Join-Path -Path $env:TEMP -ChildPath "windows-install-update" if (Test-Path $tempDir) { Remove-Item $tempDir -Recurse -Force } New-Item -ItemType Directory -Path $tempDir -Force | Out-Null - - # Try different URL patterns for Gitea zip download - $possibleUrls = @( - "$baseUrl/$repoPath/archive/master.zip", - "$baseUrl/$repoPath/archive/refs/heads/master.zip", - "$baseUrl/api/v1/repos/$repoPath/archive/master.zip" - ) - - $downloadSuccess = $false + $zipPath = Join-Path -Path $tempDir -ChildPath "update.zip" $ProgressPreference = 'SilentlyContinue' # Hide progress bar to speed up download - foreach ($zipUrl in $possibleUrls) { - Write-Host "Trying to download updates from $zipUrl..." -ForegroundColor Cyan - try { - Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath -UseBasicParsing -TimeoutSec 10 - - # Check if the download was successful (file exists and is not empty) - if (Test-Path $zipPath -and (Get-Item $zipPath).Length -gt 0) { - $downloadSuccess = $true - Write-Host "Download successful!" -ForegroundColor Green - break # Exit the loop if download was successful - } - } catch { - Write-Host "Failed with this URL: $_" -ForegroundColor DarkGray - # Continue to the next URL - } + Write-Host "Downloading updates from $zipUrl..." -ForegroundColor Cyan + + try { + Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath -UseBasicParsing -TimeoutSec 30 + } catch { + Write-Host "Failed to download from URL: $_" -ForegroundColor DarkGray + return $false # Failed to download } - - if ($downloadSuccess) { - try { + + # Check if the download was successful (file exists and is not empty) + if (Test-Path $zipPath -and (Get-Item $zipPath).Length -gt 0) { + Write-Host "Download successful!" -ForegroundColor Green + # Extract the zip file Write-Host "Extracting update package..." -ForegroundColor Cyan Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force @@ -110,6 +89,7 @@ try { Start-Process PowerShell -Verb RunAs -ArgumentList "-ExecutionPolicy Bypass -File `"$PSCommandPath`"" exit } + return $true # Update performed successfully } else { Write-Host "Could not find extracted update directory." -ForegroundColor Yellow } @@ -117,7 +97,7 @@ try { Write-Host "Error extracting or installing updates: $_" -ForegroundColor Yellow } } else { - Write-Host "Could not download updates from any of the tried URLs." -ForegroundColor Yellow + Write-Host "Could not download updates. Please check your internet connection." -ForegroundColor Yellow } # Clean up @@ -128,12 +108,17 @@ try { Write-Host "Could not clean up temp directory: $_" -ForegroundColor DarkGray } } + return $false # Update failed + } catch { + Write-Host "Error checking for updates: $_" -ForegroundColor Yellow + Write-Host "Continuing with current version..." -ForegroundColor Yellow + return $false # Update failed } -} catch { - Write-Host "Error checking for updates: $_" -ForegroundColor Yellow - Write-Host "Continuing with current version..." -ForegroundColor Yellow } +# Call the update function at the beginning +$scriptUpdated = Update-Scripts + [Environment]::UserName $uid = $Env:UserName # Get current username for use in paths diff --git a/2_ConfigUpdate.ps1 b/2_ConfigUpdate.ps1 index 9522d51..78847b9 100644 --- a/2_ConfigUpdate.ps1 +++ b/2_ConfigUpdate.ps1 @@ -22,67 +22,46 @@ if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdent Write-Host "Running with administrator privileges." -ForegroundColor Green -# Check for updates from Gitea repository -Write-Host "Checking for updates..." -ForegroundColor Cyan -$baseUrl = "https://gitea.andrewspolytechnic.com" -$repoPath = "sandrews/windows-install" -$updateScriptDir = $PSScriptRoot -$lastUpdateCheck = $null -$updateCheckFile = Join-Path -Path $updateScriptDir -ChildPath "last_update_check.txt" - -try { - # Check if we've checked for updates in the last 24 hours - if (Test-Path $updateCheckFile) { - $lastUpdateCheck = Get-Content $updateCheckFile | Get-Date - $timeSinceLastCheck = (Get-Date) - $lastUpdateCheck - if ($timeSinceLastCheck.TotalHours -lt 24) { - Write-Host "Last update check was less than 24 hours ago. Skipping update check." -ForegroundColor DarkGray - # Continue with the script - } else { - # Time to check for updates again - $checkForUpdates = $true +# Self-update function for the script +function Update-Scripts { + Write-Host "Checking for updates..." -ForegroundColor Cyan + $updateScriptDir = $PSScriptRoot + $lastUpdateCheck = $null + $updateCheckFile = Join-Path -Path $updateScriptDir -ChildPath "last_update_check.txt" + $zipUrl = "https://gitea.andrewspolytechnic.com/public/windows-install/archive/master.zip" + + try { + # Check if we've checked for updates in the last 24 hours + if (Test-Path $updateCheckFile) { + $lastUpdateCheck = Get-Content $updateCheckFile | Get-Date + $timeSinceLastCheck = (Get-Date) - $lastUpdateCheck + if ($timeSinceLastCheck.TotalHours -lt 24) { + Write-Host "Last update check was less than 24 hours ago. Skipping update check." -ForegroundColor DarkGray + return $false # No update performed + } } - } else { - # First time running update check - $checkForUpdates = $true - } - - if ($checkForUpdates) { + # Create a temporary directory to download files $tempDir = Join-Path -Path $env:TEMP -ChildPath "windows-install-update" if (Test-Path $tempDir) { Remove-Item $tempDir -Recurse -Force } New-Item -ItemType Directory -Path $tempDir -Force | Out-Null - - # Try different URL patterns for Gitea zip download - $possibleUrls = @( - "$baseUrl/$repoPath/archive/master.zip", - "$baseUrl/$repoPath/archive/refs/heads/master.zip", - "$baseUrl/api/v1/repos/$repoPath/archive/master.zip" - ) - - $downloadSuccess = $false + $zipPath = Join-Path -Path $tempDir -ChildPath "update.zip" $ProgressPreference = 'SilentlyContinue' # Hide progress bar to speed up download - foreach ($zipUrl in $possibleUrls) { - Write-Host "Trying to download updates from $zipUrl..." -ForegroundColor Cyan - try { - Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath -UseBasicParsing -TimeoutSec 10 - - # Check if the download was successful (file exists and is not empty) - if (Test-Path $zipPath -and (Get-Item $zipPath).Length -gt 0) { - $downloadSuccess = $true - Write-Host "Download successful!" -ForegroundColor Green - break # Exit the loop if download was successful - } - } catch { - Write-Host "Failed with this URL: $_" -ForegroundColor DarkGray - # Continue to the next URL - } + Write-Host "Downloading updates from $zipUrl..." -ForegroundColor Cyan + + try { + Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath -UseBasicParsing -TimeoutSec 30 + } catch { + Write-Host "Failed to download from URL: $_" -ForegroundColor DarkGray + return $false # Failed to download } - - if ($downloadSuccess) { - try { + + # Check if the download was successful (file exists and is not empty) + if (Test-Path $zipPath -and (Get-Item $zipPath).Length -gt 0) { + Write-Host "Download successful!" -ForegroundColor Green + # Extract the zip file Write-Host "Extracting update package..." -ForegroundColor Cyan Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force @@ -110,6 +89,7 @@ try { Start-Process PowerShell -Verb RunAs -ArgumentList "-ExecutionPolicy Bypass -File `"$PSCommandPath`"" exit } + return $true # Update performed successfully } else { Write-Host "Could not find extracted update directory." -ForegroundColor Yellow } @@ -117,7 +97,7 @@ try { Write-Host "Error extracting or installing updates: $_" -ForegroundColor Yellow } } else { - Write-Host "Could not download updates from any of the tried URLs." -ForegroundColor Yellow + Write-Host "Could not download updates. Please check your internet connection." -ForegroundColor Yellow } # Clean up @@ -128,12 +108,17 @@ try { Write-Host "Could not clean up temp directory: $_" -ForegroundColor DarkGray } } + return $false # Update failed + } catch { + Write-Host "Error checking for updates: $_" -ForegroundColor Yellow + Write-Host "Continuing with current version..." -ForegroundColor Yellow + return $false # Update failed } -} catch { - Write-Host "Error checking for updates: $_" -ForegroundColor Yellow - Write-Host "Continuing with current version..." -ForegroundColor Yellow } +# Call the update function at the beginning +$scriptUpdated = Update-Scripts + $uid = $Env:UserName # Get the directory where this script is located diff --git a/3_ConfigAfterNextcloud.ps1 b/3_ConfigAfterNextcloud.ps1 index 05dea91..295b22c 100644 --- a/3_ConfigAfterNextcloud.ps1 +++ b/3_ConfigAfterNextcloud.ps1 @@ -22,67 +22,46 @@ if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdent Write-Host "Running with administrator privileges." -ForegroundColor Green -# Check for updates from Gitea repository -Write-Host "Checking for updates..." -ForegroundColor Cyan -$baseUrl = "https://gitea.andrewspolytechnic.com" -$repoPath = "sandrews/windows-install" -$updateScriptDir = $PSScriptRoot -$lastUpdateCheck = $null -$updateCheckFile = Join-Path -Path $updateScriptDir -ChildPath "last_update_check.txt" - -try { - # Check if we've checked for updates in the last 24 hours - if (Test-Path $updateCheckFile) { - $lastUpdateCheck = Get-Content $updateCheckFile | Get-Date - $timeSinceLastCheck = (Get-Date) - $lastUpdateCheck - if ($timeSinceLastCheck.TotalHours -lt 24) { - Write-Host "Last update check was less than 24 hours ago. Skipping update check." -ForegroundColor DarkGray - # Continue with the script - } else { - # Time to check for updates again - $checkForUpdates = $true +# Self-update function for the script +function Update-Scripts { + Write-Host "Checking for updates..." -ForegroundColor Cyan + $updateScriptDir = $PSScriptRoot + $lastUpdateCheck = $null + $updateCheckFile = Join-Path -Path $updateScriptDir -ChildPath "last_update_check.txt" + $zipUrl = "https://gitea.andrewspolytechnic.com/public/windows-install/archive/master.zip" + + try { + # Check if we've checked for updates in the last 24 hours + if (Test-Path $updateCheckFile) { + $lastUpdateCheck = Get-Content $updateCheckFile | Get-Date + $timeSinceLastCheck = (Get-Date) - $lastUpdateCheck + if ($timeSinceLastCheck.TotalHours -lt 24) { + Write-Host "Last update check was less than 24 hours ago. Skipping update check." -ForegroundColor DarkGray + return $false # No update performed + } } - } else { - # First time running update check - $checkForUpdates = $true - } - - if ($checkForUpdates) { + # Create a temporary directory to download files $tempDir = Join-Path -Path $env:TEMP -ChildPath "windows-install-update" if (Test-Path $tempDir) { Remove-Item $tempDir -Recurse -Force } New-Item -ItemType Directory -Path $tempDir -Force | Out-Null - - # Try different URL patterns for Gitea zip download - $possibleUrls = @( - "$baseUrl/$repoPath/archive/master.zip", - "$baseUrl/$repoPath/archive/refs/heads/master.zip", - "$baseUrl/api/v1/repos/$repoPath/archive/master.zip" - ) - - $downloadSuccess = $false + $zipPath = Join-Path -Path $tempDir -ChildPath "update.zip" $ProgressPreference = 'SilentlyContinue' # Hide progress bar to speed up download - foreach ($zipUrl in $possibleUrls) { - Write-Host "Trying to download updates from $zipUrl..." -ForegroundColor Cyan - try { - Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath -UseBasicParsing -TimeoutSec 10 - - # Check if the download was successful (file exists and is not empty) - if (Test-Path $zipPath -and (Get-Item $zipPath).Length -gt 0) { - $downloadSuccess = $true - Write-Host "Download successful!" -ForegroundColor Green - break # Exit the loop if download was successful - } - } catch { - Write-Host "Failed with this URL: $_" -ForegroundColor DarkGray - # Continue to the next URL - } + Write-Host "Downloading updates from $zipUrl..." -ForegroundColor Cyan + + try { + Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath -UseBasicParsing -TimeoutSec 30 + } catch { + Write-Host "Failed to download from URL: $_" -ForegroundColor DarkGray + return $false # Failed to download } - - if ($downloadSuccess) { - try { + + # Check if the download was successful (file exists and is not empty) + if (Test-Path $zipPath -and (Get-Item $zipPath).Length -gt 0) { + Write-Host "Download successful!" -ForegroundColor Green + # Extract the zip file Write-Host "Extracting update package..." -ForegroundColor Cyan Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force @@ -110,6 +89,7 @@ try { Start-Process PowerShell -Verb RunAs -ArgumentList "-ExecutionPolicy Bypass -File `"$PSCommandPath`"" exit } + return $true # Update performed successfully } else { Write-Host "Could not find extracted update directory." -ForegroundColor Yellow } @@ -117,7 +97,7 @@ try { Write-Host "Error extracting or installing updates: $_" -ForegroundColor Yellow } } else { - Write-Host "Could not download updates from any of the tried URLs." -ForegroundColor Yellow + Write-Host "Could not download updates. Please check your internet connection." -ForegroundColor Yellow } # Clean up @@ -128,12 +108,17 @@ try { Write-Host "Could not clean up temp directory: $_" -ForegroundColor DarkGray } } + return $false # Update failed + } catch { + Write-Host "Error checking for updates: $_" -ForegroundColor Yellow + Write-Host "Continuing with current version..." -ForegroundColor Yellow + return $false # Update failed } -} catch { - Write-Host "Error checking for updates: $_" -ForegroundColor Yellow - Write-Host "Continuing with current version..." -ForegroundColor Yellow } +# Call the update function at the beginning +$scriptUpdated = Update-Scripts + $uid = $Env:UserName # Get the directory where this script is located $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path