簡體   English   中英

為 Inno Setup 執行的 Postgres (psql) 進程設置 PGPASSWORD 環境變量

[英]Setting PGPASSWORD environment variable for Postgres (psql) process executed by Inno Setup

我需要使用 Inno Setup 在 Postgres 中創建一個表空間。

我在命令行上運行過這個:

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'"

我在 Inno Setup 中嘗試過這個,但沒有用:

[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'""

問候

我能夠做到這一點。 是一個小錯誤。 正確的是:

[Run]
Filename: {cmd}; Parameters: "/K 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 '{app}\PATHTEST\Db'""

我有能力做到。 密碼和&之間不應有空格。 PGPASSWORD=密碼&

文件名:“cmd.exe”; 參數:"/c set PGPASSWORD=my_db_user&""psql"" -U my_db_user -d myappdb -a -q -f C:\\my\\Manager\\SQL\\Sequences.sql & pause"; 標志:runascurrentuser;

你有三個問題:

  • cmd.exe在命令之前需要/C開關
  • 環境變量不會神奇地導出到運行psql.exe的第二個cmd.exe實例。 您必須在同一個cmd.exe實例中執行這兩個命令。 一種方法是使用& “operator”(另一種方法是使用包裝批處理文件來執行這兩個命令)。
  • 雙引號(尤其是C:\\...\\psql.exeCREATE TABLESPACE ...周圍的那些)必須加倍
  • 本身不是問題,但您最好使用{cmd}常量而不是{sys}\\cmd.exe
[Run]
Filename: "{cmd}"; Parameters: "/C 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'"""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM