Deploy the VC++ runtime app-local for the bundled PostgreSQL.

The EDB binaries link vcruntime140 (and msvcp140 via ICU), which a clean
Windows install lacks, so the built-in DB and the wizard's external-DB
connection test (psql) failed on fresh/offline PCs without the VC++
2015-2022 redistributable. Copy vcruntime140(_1)/msvcp140(_1,_2) into
postgres\pgsql\bin at build time and extract vcruntime140 with psql.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
oliver 2026-10-13 22:55:08 +08:00
parent 6ff10834e5
commit a9a1c284a5
2 changed files with 12 additions and 0 deletions

View file

@ -170,6 +170,8 @@ Source: "{#StageDir}\postgres\pgsql\bin\liblz4.dll"; Flags: dontcopy
Source: "{#StageDir}\postgres\pgsql\bin\libzstd.dll"; Flags: dontcopy
Source: "{#StageDir}\postgres\pgsql\bin\libxml2.dll"; Flags: dontcopy
Source: "{#StageDir}\postgres\pgsql\bin\libxslt.dll"; Flags: dontcopy
; VC++ runtime deployed app-local by build_release.ps1 (clean PCs lack the redistributable).
Source: "{#StageDir}\postgres\pgsql\bin\vcruntime140.dll"; Flags: dontcopy
; These helpers are extracted for PrepareToInstall, before the new program tree is copied.
Source: "{#StageDir}\packaging\_common.ps1"; Flags: dontcopy
Source: "{#StageDir}\packaging\service_lifecycle.ps1"; Flags: dontcopy
@ -492,6 +494,7 @@ begin
ExtractTemporaryFile('libzstd.dll');
ExtractTemporaryFile('libxml2.dll');
ExtractTemporaryFile('libxslt.dll');
ExtractTemporaryFile('vcruntime140.dll');
Result := FileExists(ExpandConstant('{tmp}\psql.exe')) and
FileExists(ExpandConstant('{tmp}\test_pg_conn.ps1'));
GPgToolsReady := Result;