Don't use PsIni to update DefauleGame.ini, it screws up with nested arrays. Do it manually

This commit is contained in:
Steve Streeting 2020-10-05 17:21:33 +01:00
parent d0bd9780ec
commit 38ee921ef7

View File

@ -86,9 +86,25 @@ function Increment-Project-Version {
if ($dryrun) { if ($dryrun) {
Write-Verbose "[version++] dryrun: not changing $gameIniFile" Write-Verbose "[version++] dryrun: not changing $gameIniFile"
} else { } else {
$gameIni["/Script/EngineSettings.GeneralProjectSettings"].ProjectVersion = $newver # We don't use PsIni to write, because it can screw up some nested non-trivial properties :(
Out-IniFile -Force -InputObject $gameIni -FilePath $gameIniFile #$gameIni["/Script/EngineSettings.GeneralProjectSettings"].ProjectVersion = $newver
Write-Verbose "[version++] Success! Version is now $newver" #Out-IniFile -Force -InputObject $gameIni -FilePath $gameIniFile
$verlineregex = "ProjectVersion=$regex"
$matches = Select-String -Path "$gameIniFile" -Pattern $verlineregex
if ($matches.Matches.Count -gt 0) {
$origline = $matches.Matches[0].Value
$newline = "ProjectVersion=$newver"
(Get-Content "$gameIniFile").replace($origline, $newline) | Set-Content "$gameIniFile"
Write-Verbose "[version++] Success! Version is now $newver"
} else {
throw "[version++] Error: unable to substitute current version, unable to find '$verlineregex'"
}
} }
return "$newver" return "$newver"