diff -rpcd a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml *** a/doc/src/sgml/install-windows.sgml 2014-01-22 13:17:06.000000000 +0900 --- b/doc/src/sgml/install-windows.sgml 2014-01-24 15:31:05.000000000 +0900 *************** $ENV{CONFIG}="Debug"; *** 410,415 **** --- 410,423 ---- install c:\destination\directory + + + If you want to install only the client applications and + interface libraries, then you can use these commands: + + install c:\destination\directory client + + diff -rpcd a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm *** a/src/tools/msvc/Install.pm 2014-01-22 13:17:06.000000000 +0900 --- b/src/tools/msvc/Install.pm 2014-01-24 15:10:36.000000000 +0900 *************** our (@ISA, @EXPORT_OK); *** 17,22 **** --- 17,35 ---- @ISA = qw(Exporter); @EXPORT_OK = qw(Install); + my $insttype; + my @client_contribs = ( + 'oid2name', 'pgbench', 'vacuumlo' + ); + my @client_program_files = ( + 'clusterdb', 'createdb', 'createlang', 'createuser', 'dropdb', + 'droplang', 'dropuser', 'ecpg', 'libecpg', 'libecpg_compat', + 'libpgtypes', 'libpq', 'pg_basebackup', 'pg_config', 'pg_dump', + 'pg_dumpall', 'pg_isready', 'pg_receivexlog', 'pg_restore', + 'psql', 'reindexdb', 'vacuumdb', + @client_contribs + ); + sub lcopy { my $src = shift; *************** sub Install *** 37,42 **** --- 50,57 ---- $| = 1; my $target = shift; + $insttype = shift; + $insttype = "all" unless ($insttype); # if called from vcregress, the config will be passed to us # so no need to re-include these *************** sub Install *** 65,88 **** my $majorver = DetermineMajorVersion(); print "Installing version $majorver for $conf in $target\n"; ! EnsureDirectories( ! $target, 'bin', ! 'lib', 'share', ! 'share/timezonesets', 'share/extension', ! 'share/contrib', 'doc', ! 'doc/extension', 'doc/contrib', ! 'symbols', 'share/tsearch_data'); CopySolutionOutput($conf, $target); lcopy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll'); my $sample_files = []; File::Find::find( { wanted => sub { /^.*\.sample\z/s && push(@$sample_files, $File::Find::name); } }, ! "src"); CopySetOfFiles('config files', $sample_files, $target . '/share/'); CopyFiles( 'Import libraries', --- 80,112 ---- my $majorver = DetermineMajorVersion(); print "Installing version $majorver for $conf in $target\n"; ! my @client_dirs = ('bin', 'lib', 'share', 'symbols'); ! my @all_dirs = (@client_dirs, ! 'doc', 'doc/contrib', 'doc/extension', ! 'share/contrib', 'share/extension', 'share/timezonesets', ! 'share/tsearch_data' ! ); ! if ($insttype eq "client") ! { ! EnsureDirectories($target, @client_dirs); ! } ! else ! { ! EnsureDirectories($target, @all_dirs); ! } CopySolutionOutput($conf, $target); lcopy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll'); my $sample_files = []; + my @top_dir = ("src"); + @top_dir = ("src\\bin", "src\\interfaces") if ($insttype eq "client"); File::Find::find( { wanted => sub { /^.*\.sample\z/s && push(@$sample_files, $File::Find::name); } }, ! @top_dir); CopySetOfFiles('config files', $sample_files, $target . '/share/'); CopyFiles( 'Import libraries', *************** sub Install *** 95,100 **** --- 119,129 ---- "libpgport\\libpgport.lib", "libpgtypes\\libpgtypes.lib", "libecpg_compat\\libecpg_compat.lib"); + CopyContribFiles($config, $target); + CopyIncludeFiles($target); + + if ($insttype ne "client") + { CopySetOfFiles( 'timezone names', [ glob('src\timezone\tznames\*.txt') ], *************** sub Install *** 125,132 **** 'Dictionaries sample files', [ glob("src\\backend\\tsearch\\*_sample.*") ], $target . '/share/tsearch_data/'); - CopyContribFiles($config, $target); - CopyIncludeFiles($target); my $pl_extension_files = []; my @pldirs = ('src/pl/plpgsql/src'); --- 154,159 ---- *************** sub Install *** 142,147 **** --- 169,175 ---- @pldirs); CopySetOfFiles('PL Extension files', $pl_extension_files, $target . '/share/extension/'); + } GenerateNLSFiles($target, $config->{nls}, $majorver) if ($config->{nls}); *************** sub CopySolutionOutput *** 218,223 **** --- 246,253 ---- $sln =~ s/$rem//; + next if ($insttype eq "client" && !grep { $_ eq $pf } @client_program_files); + my $proj = read_file("$pf.$vcproj") || croak "Could not open $pf.$vcproj\n"; if ($vcproj eq 'vcproj' && $proj =~ qr{ConfigurationType="([^"]+)"}) *************** sub CopyContribFiles *** 378,383 **** --- 408,415 ---- { next if ($d =~ /^\./); next unless (-f "contrib/$d/Makefile"); + next if ($insttype eq "client" && !grep { $_ eq $d } @client_contribs); + next if ($d eq "uuid-ossp" && !defined($config->{uuid})); next if ($d eq "sslinfo" && !defined($config->{openssl})); next if ($d eq "xml2" && !defined($config->{xml})); diff -rpcd a/src/tools/msvc/install.bat b/src/tools/msvc/install.bat *** a/src/tools/msvc/install.bat 2014-01-22 13:17:06.000000000 +0900 --- b/src/tools/msvc/install.bat 2014-01-24 15:08:47.000000000 +0900 *************** CALL bldenv.bat *** 20,26 **** del bldenv.bat :nobuildenv ! perl install.pl "%1" REM exit fix for pre-2003 shell especially if used on buildfarm if "%XP_EXIT_FIX%" == "yes" exit %ERRORLEVEL% --- 20,26 ---- del bldenv.bat :nobuildenv ! perl install.pl "%1" %2 REM exit fix for pre-2003 shell especially if used on buildfarm if "%XP_EXIT_FIX%" == "yes" exit %ERRORLEVEL% diff -rpcd a/src/tools/msvc/install.pl b/src/tools/msvc/install.pl *** a/src/tools/msvc/install.pl 2014-01-22 13:17:06.000000000 +0900 --- b/src/tools/msvc/install.pl 2014-01-24 15:20:23.000000000 +0900 *************** use warnings; *** 9,18 **** use Install qw(Install); my $target = shift || Usage(); ! Install($target); sub Usage { ! print "Usage: install.pl \n"; exit(1); } --- 9,20 ---- use Install qw(Install); my $target = shift || Usage(); ! my $insttype = shift; ! Install($target, $insttype); sub Usage { ! print "Usage: install.pl [installtype]\n"; ! print "installtype: client\n"; exit(1); } diff -rpcd a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl *** a/src/tools/msvc/vcregress.pl 2014-01-22 13:17:06.000000000 +0900 --- b/src/tools/msvc/vcregress.pl 2014-01-24 15:08:47.000000000 +0900 *************** sub upgradecheck *** 252,258 **** (mkdir $tmp_root || die $!) unless -d $tmp_root; my $tmp_install = "$tmp_root/install"; print "Setting up temp install\n\n"; ! Install($tmp_install, $config); # Install does a chdir, so change back after that chdir $cwd; --- 252,258 ---- (mkdir $tmp_root || die $!) unless -d $tmp_root; my $tmp_install = "$tmp_root/install"; print "Setting up temp install\n\n"; ! Install($tmp_install, "all", $config); # Install does a chdir, so change back after that chdir $cwd;