簡體   English   中英

如何使用所有參數安裝帶有NSIS的postgres?

[英]How to install postgres with NSIS with all parameters?

我們有一個使用postgres作為其數據庫的C#程序,因此我們希望將安裝程序中的postgres捆綁為半靜默安裝,即用戶將收到有關強制安裝的通知,但安裝本身將自動執行而不會需要用戶輸入。

在研究了對WiX,Inno Setup和NSIS的意見后,我們決定使用NSIS。 我認為最簡單的方法是包含postgres的二進制.zip分配並在腳本中執行以下操作:

  1. 將pgsql文件夾復制到安裝目錄
  2. 使用適當的參數運行initdb.exe,以在InstallDir / pgsql / data中創建數據庫本身
  3. 運行pg_ctl.exe以注冊為具有應用程序特定名稱的服務
  4. 使用NSIS Simple Service Plugin啟動該服務
  5. 安裝我們的程序

我對這個場景有幾個問題:

Q1:我在正確的軌道上嗎?

Q2:我可以以某種方式將超級用戶密碼傳遞給initdb.exe,因此它不會要求用戶通過控制台輸入嗎?

問題3:在哪里以及如何更改postgres將偵聽的端口,以便我不與其他已安裝的實例沖突?

問題4:卸載時是否只需使用pg_ctl.exe取消注冊服務並刪除所有文件夾即可?

PS:我覺得這些問題是相互關聯的,所以我把它們放在一起。 但如果需要,我可以在不同的問題中將它們分開。

這是對的。

不要使用端口5432對PostgreSQL。 選擇一個遠離該范圍的非默認端口,如5599或其他東西。 通過修改postgresql.conf並設置port指令來更改port 您可能會發現在主postgresql.conf簡單地附加include_dir = conf.d或類似內容然后使用您的配置覆蓋創建一個datadir\\conf.d\\myapp.conf用。

要在沒有提示的情況下為initdb設置密碼,請傳遞--pwfile=/path/to/file選項。 第一行將被讀作密碼。 請參見initdb

您的卸載計划是合理和正確的。

想想升級 - 不要把自己畫成一個角落。 您希望能夠並行安裝9.5到9.4和pg_upgrade ,除非您只想使用轉儲和恢復。

我建議將PostgreSQL二進制文件安裝到%PROGRAMFILES%\\MyApp\\PostgreSQL\\9.4 您應該將數據庫放入%PROGRAMDATA%\\MyApp\\PostgreSQL\\9.4而不是應用程序的%PROGRAMFILES%目錄中。 (PostgreSQL安裝程序也應該這樣做;它的當前行為是一個應該修復的歷史工件)。

請記錄您的應用程序捆綁PostgreSQL,以便沒有人“清理”它,因此我們沒有另一個應用程序噴出混淆用戶到pgsql-general。 向憤怒的用戶解釋“我們”沒有在他們的系統上安裝PostgreSQL,我們無法刪除它,它可能在那里,因為它是由他們使用的東西安裝,如果他們刪除它然后那將停止工作。 同樣地,對剛剛殺死PostgreSQL進程並刪除了他們的PostgreSQL數據目錄的用戶來說很難解釋我們無法獲得他們的Poker Tracker(或其他)數據庫因為他們剛剛刪除它...

確保您的應用程序公開了為用戶執行PostgreSQL轉儲和還原的功能。

用戶手冊必須清楚地說明他們需要采取額外的備份步驟來保護應用中的數據。 您不能只使用Windows備份來獲得可靠的PostgreSQL備份,因為它是必須一起復制的多個文件; 它會復制每個文件,但除非PostgreSQL在備份之前停止,否則組合結果將無法使用。 要進行實時備份,您需要采取特殊步驟 - pg_start_backup() ,copy, pg_stop_backup()並存檔額外的WAL段,或使用pg_basebackup

暫無
暫無

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

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