PostgreSQL資料庫隨程式打包執行個體

來源:互聯網
上載者:User
Windows版本的PostgresQL安裝過程較為複雜(本文特指8.0.3以下版本),官方使用了pginstaller將PostgresQL打為一個msi包,單獨安裝問題不大,但是有以下幾個問題:
  
  1、遠端桌面安裝相容性差(目前官方的說法是除了win2003都有問題)
  2、無法隨程式打包
  3、安裝後的建庫工作會受到分區格式的影響
  針對以上問題,現給出如下解決方案:

  A、在隨便一台機器上裝好pgsql,並且建好庫、導好資料
  
  B、將整個pgsql的安裝好的目錄複寫到一個臨時檔案夾(例如d:\temp),應該包括:
  bin、data、include、lib、share等,視情況可以考慮加入pgadminIII
  
  C、在臨時檔案夾中建立dll目錄,包括以下5個檔案:
  libeay32.dll/libiconv-2.dll/libintl-2.dll/libpq.dll/ssleay32.dll
  (都可以在安裝好的機器中找到)
  
  D、網上去找個ntright.exe檔案,放在bin目錄裡(隨便放哪,但是後面安裝完成最好刪掉)
  ——修正:網上再去找個netuser.exe,放在bin目錄裡
  ——感謝canders兄的提醒,之前沒考慮到使用者帳號到期問題
  
  E、在臨時檔案夾中建立setup.bat檔案,內容如下:

  REM 建立postgres使用者,用來管理服務
  net user postgres [passwd] /add /PASSWORDCHG:NO
  REM 讓postgres使用者不屬於users組,官方說不安全
  net localgroup users postgres /delete
  REM 設定postgres使用者密碼永不到期,技巧!!
  .\bin\netuser postgres /pwnexp:y
  REM 拷貝檔案,力氣活
  copy .\dll\*.* %windir%\system32 /Y
  REM 賦予postgres使用者logon as service許可權,技巧!!
  REM 插一句廢話,ntrights.exe的參數列表裡沒有我用的這個
  .\bin\ntrights.exe -u postgres +r SeServiceLogonRight
  REM 以下摘自pginstaller源檔案,照做,主要是postgres使用者的檔案許可權
  REM 其實是給ntfs用的,xp在fat32格式時會報錯,無視!
  cacls . /E /T /D postgres
  cacls . /E /T /G postgres:R
  cacls .\data /E /T /P postgres:C
  REM 建立PostgresQL服務,不要加入-L,注意%CD%的用法
  REM 否則事件檢視器將變成windows寫情書給你的地方
  .\bin\pg_ctl register -N PgSQL -U postgres -P [passwd] -D "%CD%/data"
  REM 啟動剛才建好的服務
  net start PgSQL
  F、把整個臨時目錄打包分發,解壓後只要運行setup.bat就完事大吉
  G、有經驗的朋友可以在bat中加入條件判斷或者其他標誌,我就偷懶了
  註:在win2000、winxp、win2003 (ntfs、fat32、遠端桌面、中文父資料夾)下通過測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.