I needs to create a tablespace in Postgres with Inno Setup.
I had run this on the command line:
SET PGPASSWORD=P0stgres
"C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -h localhost -p 5432 -U postgres -d postgres -c "CREATE TABLESPACE TABLETEST OWNER postgres LOCATION E'{app}\\PATHTEST\\Db'"
I tried this in Inno Setup, but it did not work:
[Run]
Filename: {sys}\cmd.exe; Parameters: "SET PGPASSWORD=P0stgres"
Filename: {sys}\cmd.exe; Parameters: ""C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -h localhost -p 5432 -U postgres -d postgres -c "CREATE TABLESPACE TABLETEST OWNER postgres LOCATION E'{app}\\PATHTEST\\Db'""
Regards
I am able to do it. No space should be there between password and &. PGPASSWORD=password&
Filename: "cmd.exe"; Parameters: "/c set PGPASSWORD=my_db_user& ""psql"" -U my_db_user -d myappdb -a -q -f C:\my\Manager\SQL\Sequences.sql & pause"; Flags: runascurrentuser;
I was able to do it work. Was a little mistake. The correct is:
You have three problems:
cmd.exe
needs/C
switch before the command.cmd.exe
instance that runs thepsql.exe
. You have to execute both commands within the samecmd.exe
instance. One of the ways is using&
"operator" (another way is using a wrapper batch file to execute both commands).C:\...\psql.exe
andCREATE TABLESPACE ...
) have to be doubled.{cmd}
constant instead of{sys}\cmd.exe
.