Synchronize the client and select installed language packs (#3)

The launcher synchronizes the current native client, retains manifest-listed ruRU archives and launches the game with WOW_LOCALE=auto. Includes the prepared cleanup of obsolete Extentions directories in both client roots while preserving manifest-required files and unrelated user state.

Version: 1.0.7+10. Deployment now judges native OpenSSL commands by their exit codes while retaining key and signature verification.

Verified on Windows through FVM: full format/analyze, all 76 tests, production dry run, x64 runtime imports and DSA installer signature. The original dirty checkout was preserved. Publication follows the localized client release.
This commit was merged in pull request #3.
This commit is contained in:
2026-10-10 16:50:35 +03:00
parent d3d19bfaeb
commit f834c5fa86
11 changed files with 862 additions and 259 deletions
+16 -9
View File
@@ -94,9 +94,19 @@ function Invoke-RequiredCommand {
[Parameter(Mandatory = $true)][string[]]$Arguments
)
& $Command @Arguments
if ($LASTEXITCODE -ne 0) {
throw "Command failed with exit code ${LASTEXITCODE}: $Command"
# Windows PowerShell represents native stderr as error records even on exit 0.
# OpenSSL writes its normal key-reading notices there; the exit code is the verdict.
$previousPreference = $ErrorActionPreference
try {
$ErrorActionPreference = 'Continue'
& $Command @Arguments
$commandExitCode = $LASTEXITCODE
}
finally {
$ErrorActionPreference = $previousPreference
}
if ($commandExitCode -ne 0) {
throw "Command failed with exit code ${commandExitCode}: $Command"
}
}
@@ -559,12 +569,9 @@ try {
$previousPath = $env:PATH
try {
$env:PATH = "$gitOpenSslDirectory;$env:PATH"
$signOutput = & $dart run auto_updater:sign_update `
$installerPath `
$privateKey 2>&1
if ($LASTEXITCODE -ne 0) {
throw "Could not sign the installer: $signOutput"
}
$signOutput = Invoke-RequiredCommand -Command $dart -Arguments @(
'run', 'auto_updater:sign_update', $installerPath, $privateKey
) 2>&1
}
finally {
$env:PATH = $previousPath