Enhance Update-Scripts function to handle nested repository structures and improve file copying logic

This commit is contained in:
2025-09-15 13:21:24 -04:00
parent cd77f094bf
commit 19ac162a07
3 changed files with 48 additions and 6 deletions

View File

@@ -67,13 +67,27 @@ function Update-Scripts {
Write-Host "Extracting update package..." -ForegroundColor Cyan
Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force
# Find the extracted directory
# Find the extracted directory - usually named like "windows-install-master"
$extractedDir = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1
if (($extractedDir) -and ((Test-Path $extractedDir.FullName))) {
# Copy all files except .git directory to current location
Write-Host "Installing updates..." -ForegroundColor Cyan
Get-ChildItem -Path $extractedDir.FullName | Where-Object { $_.Name -ne ".git" } | ForEach-Object {
# Check if there's another level of directory inside (repo-in-repo issue)
$subDirs = Get-ChildItem -Path $extractedDir.FullName -Directory
$foundNestedRepo = $false
if ($subDirs.Count -eq 1 -and $subDirs[0].Name -like "*windows-install*") {
Write-Host "Detected nested repository structure, using correct source directory..." -ForegroundColor Yellow
$sourceDir = $subDirs[0].FullName
$foundNestedRepo = $true
} else {
$sourceDir = $extractedDir.FullName
}
# Copy files from the correct source directory
Get-ChildItem -Path $sourceDir | Where-Object { $_.Name -ne ".git" } | ForEach-Object {
$destPath = Join-Path -Path $updateScriptDir -ChildPath $_.Name
Copy-Item -Path $_.FullName -Destination $destPath -Recurse -Force
}

View File

@@ -67,13 +67,27 @@ function Update-Scripts {
Write-Host "Extracting update package..." -ForegroundColor Cyan
Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force
# Find the extracted directory
# Find the extracted directory - usually named like "windows-install-master"
$extractedDir = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1
if (($extractedDir) -and ((Test-Path $extractedDir.FullName))) {
# Copy all files except .git directory to current location
Write-Host "Installing updates..." -ForegroundColor Cyan
Get-ChildItem -Path $extractedDir.FullName | Where-Object { $_.Name -ne ".git" } | ForEach-Object {
# Check if there's another level of directory inside (repo-in-repo issue)
$subDirs = Get-ChildItem -Path $extractedDir.FullName -Directory
$foundNestedRepo = $false
if ($subDirs.Count -eq 1 -and $subDirs[0].Name -like "*windows-install*") {
Write-Host "Detected nested repository structure, using correct source directory..." -ForegroundColor Yellow
$sourceDir = $subDirs[0].FullName
$foundNestedRepo = $true
} else {
$sourceDir = $extractedDir.FullName
}
# Copy files from the correct source directory
Get-ChildItem -Path $sourceDir | Where-Object { $_.Name -ne ".git" } | ForEach-Object {
$destPath = Join-Path -Path $updateScriptDir -ChildPath $_.Name
Copy-Item -Path $_.FullName -Destination $destPath -Recurse -Force
}

View File

@@ -67,13 +67,27 @@ function Update-Scripts {
Write-Host "Extracting update package..." -ForegroundColor Cyan
Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force
# Find the extracted directory
# Find the extracted directory - usually named like "windows-install-master"
$extractedDir = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1
if (($extractedDir) -and ((Test-Path $extractedDir.FullName))) {
# Copy all files except .git directory to current location
Write-Host "Installing updates..." -ForegroundColor Cyan
Get-ChildItem -Path $extractedDir.FullName | Where-Object { $_.Name -ne ".git" } | ForEach-Object {
# Check if there's another level of directory inside (repo-in-repo issue)
$subDirs = Get-ChildItem -Path $extractedDir.FullName -Directory
$foundNestedRepo = $false
if ($subDirs.Count -eq 1 -and $subDirs[0].Name -like "*windows-install*") {
Write-Host "Detected nested repository structure, using correct source directory..." -ForegroundColor Yellow
$sourceDir = $subDirs[0].FullName
$foundNestedRepo = $true
} else {
$sourceDir = $extractedDir.FullName
}
# Copy files from the correct source directory
Get-ChildItem -Path $sourceDir | Where-Object { $_.Name -ne ".git" } | ForEach-Object {
$destPath = Join-Path -Path $updateScriptDir -ChildPath $_.Name
Copy-Item -Path $_.FullName -Destination $destPath -Recurse -Force
}