MinecraftConsoles/Minecraft.Client/postbuild.ps1
MrTheShy b941a27b90 fix: avoid full rebuild by writing BuildVer.h only when content changes
Previously, prebuild.ps1 unconditionally overwrote BuildVer.h on every
build using Set-Content, updating its timestamp even when the content
was identical. This caused MSBuild to treat all files depending on
BuildVer.h as out of date, triggering a full rebuild every time.

Fix: compare the new content with the existing file before writing.
BuildVer.h is now only written if sha, branch, or dev suffix has
actually changed.

Also removed the `git restore` call from postbuild.ps1 as it is no
longer needed.
2026-03-11 23:16:31 +01:00

41 lines
1.2 KiB
PowerShell

param(
[string]$OutDir,
[string]$ProjectDir
)
Write-Host "Post-build script started. Output Directory: $OutDir, Project Directory: $ProjectDir"
$directories = @(
"music",
"Windows64\GameHDD",
"Common\Media",
"Common\res",
"Common\Trial",
"Common\Tutorial",
"Windows64Media"
)
foreach ($dir in $directories) {
New-Item -ItemType Directory -Path (Join-Path $OutDir $dir) -Force | Out-Null
}
$copies = @(
@{ Source = "music"; Dest = "music" },
@{ Source = "Common\Media"; Dest = "Common\Media" },
@{ Source = "Common\res"; Dest = "Common\res" },
@{ Source = "Common\Trial"; Dest = "Common\Trial" },
@{ Source = "Common\Tutorial"; Dest = "Common\Tutorial" },
@{ Source = "Windows64\GameHDD"; Dest = "Windows64\GameHDD" },
@{ Source = "Windows64\Sound"; Dest = "Windows64\Sound" },
@{ Source = "Windows64Media"; Dest = "Windows64Media" }
)
foreach ($copy in $copies) {
$src = Join-Path $ProjectDir $copy.Source
$dst = Join-Path $OutDir $copy.Dest
if (Test-Path $src) {
# Copy the files using xcopy, forcing overwrite and suppressing errors, and only copying if the source is newer than the destination
xcopy /q /y /i /s /e /d "$src" "$dst" 2>$null
}
}